{"id":4753,"date":"2019-08-20T18:45:35","date_gmt":"2019-08-20T21:45:35","guid":{"rendered":"https:\/\/blog.clusterweb.com.br\/?p=4753"},"modified":"2019-08-20T18:45:35","modified_gmt":"2019-08-20T21:45:35","slug":"balanceando-links-de-internet-no-linux","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=4753","title":{"rendered":"Balanceando links de internet no linux"},"content":{"rendered":"<p>Em um projeto recente precisei fazer o balanceamento de links no linux, o cliente possu\u00eda sa\u00edda por dois provedores, sendo o primeiro NET\/Virtua e o segundo Embratel, seu link Embratel estava ocioso e ele queria acabar com essa ociosidade.<\/p>\n<p>A solu\u00e7\u00e3o foi usar o iproute2 para criar uma tabela com balanceamento de links para alguns pacotes, em conjunto usei o iptables para marcar os pacotes que deveriam sair por essa tabela.<\/p>\n<p>Al\u00e9m disto o cliente usava o Embratel para alguns servi\u00e7os, logo existia um redirecionamento DNAT para rede interna e isso precisava ser levado em conta.<\/p>\n<p>Vamos a solu\u00e7\u00e3o para essa necessidade.<\/p>\n<h2>Ambiente<\/h2>\n<p>Vamos descrever as configura\u00e7\u00f5es de rede do ambiente<\/p>\n<pre><code>Interface eth0 est\u00e1 com rede interna (10.1.x.x\/xx)\r\nInterface eth1 est\u00e1 conectado ao modem virtua (189.x.x.x)\r\nInterface eth2 est\u00e1 conectado ao modem embratel (200.x.x.x)\r\n<\/code><\/pre>\n<p>Se isto est\u00e1 entendido, vamos continuar.<\/p>\n<p><!--more--><\/p>\n<h2>Procedimento manual<\/h2>\n<h3>1. Criando tabelas no rt_tables<\/h3>\n<p>Primeiro edite o arquivo<\/p>\n<pre><code>vim \/etc\/iproute2\/rt_tables\r\n<\/code><\/pre>\n<p>E adicione as seguintes tabelas ao final do arquivo<\/p>\n<pre><code>20 VIRTUA\r\n30 EMBRATEL\r\n40 BALANCEAMENTO\r\n<\/code><\/pre>\n<p>\u00d3timo, isso \u00e9 suficiente, elas precisam existir para que possamos criar regras em cada uma destas tabelas.<\/p>\n<h3>2. Criando regras no iproute2<\/h3>\n<h4>2.1 configurando tabela virtua<\/h4>\n<p>Antes de come\u00e7ar, vou colocar nomes ao inv\u00e9s de endere\u00e7os IPs para facilitar o entendimento, veja o que significa cada coisa.<\/p>\n<pre><code>VIRTUA_NET \u00e9 o endere\u00e7o de rede\r\nVIRTUA_NIC \u00e9 a placa de rede (eth1)\r\nVIRTUA_GAT \u00e9 o endere\u00e7o do GW virtua\r\nVIRTUA_IPA \u00e9 o ip da VIRTUA_NIC\r\n<\/code><\/pre>\n<p>Vamos a configura\u00e7\u00e3o b\u00e1sica da tabela virtua<\/p>\n<pre><code>ip route add VIRTUA_NET dev VIRTUA_NIC src VIRTUA_IPA table VIRTUA\r\n<\/code><\/pre>\n<p>Agora vamos especificar quem \u00e9 o defautl gateway da virtua<\/p>\n<pre><code>ip route add default via VIRTUA_GAT table VIRTUA\r\n<\/code><\/pre>\n<h4>2.2 configurando tabela embratel<\/h4>\n<p>Novamente eu vou colocar nomes ao inv\u00e9s de endere\u00e7os IPs para facilitar o entendimento, veja o que significa cada coisa.<\/p>\n<pre><code>EMBRATEL_NET \u00e9 o endere\u00e7o de rede\r\nEMBRATEL_NIC \u00e9 a placa de rede (eth1)\r\nEMBRATEL_GAT \u00e9 o endere\u00e7o do GW\r\nEMBRATEL_IPA \u00e9 o ip da EMBRATEL_NIC\r\n<\/code><\/pre>\n<p>Agora vamos configurar a tabela EMBRATEL<\/p>\n<pre><code>ip route add EMBRATEL_NET dev EMBRATEL_NIC src EMBRATEL_IPA table EMBRATEL\r\n<\/code><\/pre>\n<p>Defina o gateway padr\u00e3o da tabela EMBRATEL<\/p>\n<pre><code>ip route add default via EMBRATEL_GAT table EMBRATEL\r\n<\/code><\/pre>\n<h4>2.3 configurando tabela balanceamento<\/h4>\n<p>Agora vamos criar a tabela que far\u00e1 o balanceamento entre os dois links<\/p>\n<pre><code>ip route add default scope global table BALANCEAMENTO nexthop via VIRTUA_GAT dev VIRTUA_NIC weight 2 nexthop via EMBRATEL_GAT dev EMBRATEL_NIC weight 1\r\n<\/code><\/pre>\n<p>Pronto, configuramos a tabela BALANCEAMENTO.<\/p>\n<p>Veja que o peso do VIRTUA \u00e9 maior que o EMBRATEL, fiz isso pois o link VIRTUA \u00e9 mais parrudo e por isso seu peso no balanceamento ser\u00e1 maior (analogia: 2 conex\u00f5es v\u00e3o para o virtua e 1 para a Embratel).<\/p>\n<h4>2.4 Definido regras de roteamento<\/h4>\n<p>Definindo que pacotes vindos do IP do VIRTUAL usar\u00e3o a tabela VIRTUA<\/p>\n<pre><code>ip rule add from VIRTUA_IPA table VIRTUA\r\n<\/code><\/pre>\n<p>Definindo que pacotes vindos do IP da EMBRATEL usar\u00e3o a tabela embratel<\/p>\n<pre><code>ip rule add from EMBRATEL_IPA table EMBRATEL\r\n<\/code><\/pre>\n<p>Definindo que pacotes com a marca 2 usar\u00e3o a tabela de balanceamento<\/p>\n<pre><code>ip rule add fwmark 2 table BALANCEAMENTO\r\n<\/code><\/pre>\n<p>Definindo que pacotes coma marca 1 usar\u00e3o a tabela Embratel<\/p>\n<pre><code>ip rule add fwmark 1 table EMBRATEL\r\n<\/code><\/pre>\n<p>Essa \u00faltima regra estou criando pois existe um redirect para para rede interna, e portanto preciso tratar a ida e a volta para que n\u00e3o saia pelo balanceamento, e sim pela interface de origem do redirect que \u00e9 a EMBRATEL.<\/p>\n<h4>2.5 Configurando rota padrao<\/h4>\n<p>Preciso configurar qual ser\u00e1 a rota padr\u00e3o<\/p>\n<pre><code>ip route add default via EMBRATEL_GAT\r\n<\/code><\/pre>\n<p>\u00c9 poss\u00edvel fazer o balanceamento usando a tabela default, no final darei um exemplo disto.<\/p>\n<h4>2.6 Limpando cache de tabelas<\/h4>\n<p>Necess\u00e1rio para fazer a limpeza de informa\u00e7\u00e3o que n\u00e3o \u00e9 \u00fatil, como por exemplo tabelas que foram deletadas.<\/p>\n<pre><code> ip route flush cache\r\n<\/code><\/pre>\n<h3>3. Criando regras no netfilter\/iptables<\/h3>\n<h4>3.1 Regras de redirecionamento<\/h4>\n<p>Primeiro redireciono para rede interna<\/p>\n<pre><code>iptables -t nat -A PREROUTING -i eth2 -d 200.252.xx.xxx -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.1.0.xxx:80\r\n<\/code><\/pre>\n<p>Depois marco o pacote de retorno para ele usar a tabela embratel.<\/p>\n<pre><code>iptables -t mangle -A PREROUTING -i eth0 -s 10.1.xx.xx -p tcp --sport 22 -j MARK --set-mark 1\r\n<\/code><\/pre>\n<h4>3.2 Regras para balanceamento<\/h4>\n<p>Aqui eu marco os pacotes que desejo que usem a tabela de balanceamento.<\/p>\n<pre><code> iptables -t mangle -A PREROUTING -s 10.1.x.x\/24 -d 0\/0 -j MARK --set-mark 2\r\n<\/code><\/pre>\n<h4>3.3 Mascarando pacotes<\/h4>\n<p>Aqui vamos mascarar os pacotes da rede interna, necess\u00e1rio para que as m\u00e1quinas consigam sair para internet e para o redirect.<\/p>\n<pre><code> iptables -t nat -A POSTROUTING -s 10.1.x.x\/24 -j MASQUERADE\r\n<\/code><\/pre>\n<h4>3.4 Ativando ip forward<\/h4>\n<p>Precisamos ativar o encaminhamento de pacotes para que tudo funcione.<\/p>\n<pre><code>echo 1 &gt; \/proc\/sys\/net\/ipv4\/ip_forward\r\n<\/code><\/pre>\n<p>Pronto, balanceamento feito, voc\u00ea pode usar o comando IPTRAF no servidor para avaliar se os dois links est\u00e3o sendo utilizados.<\/p>\n<p>Nas esta\u00e7\u00f5es recomendo que use o mtr-tiny para ver por onde seus pacotes est\u00e3o saindo.<\/p>\n<pre><code> mtr terra.com.br\r\n<\/code><\/pre>\n<p>Se preferir use o traceroute<\/p>\n<pre><code> traceroute uol.com.br\r\n<\/code><\/pre>\n<h2>Automatizado<\/h2>\n<p>N\u00e3o d\u00e1 para executar todas as regras toda a vez que a m\u00e1quina inciar, seria cansativo e poder\u00edamos esquecer algo, logo criei um script para me ajudar com isto.<\/p>\n<h3>4. Script de roteamento<\/h3>\n<figure class=\"code\">\n<div class=\"highlight\">\n<table>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<pre class=\"line-numbers\"><span class=\"line-number\">1<\/span>\r\n<span class=\"line-number\">2<\/span>\r\n<span class=\"line-number\">3<\/span>\r\n<span class=\"line-number\">4<\/span>\r\n<span class=\"line-number\">5<\/span>\r\n<span class=\"line-number\">6<\/span>\r\n<span class=\"line-number\">7<\/span>\r\n<span class=\"line-number\">8<\/span>\r\n<span class=\"line-number\">9<\/span>\r\n<span class=\"line-number\">10<\/span>\r\n<span class=\"line-number\">11<\/span>\r\n<span class=\"line-number\">12<\/span>\r\n<span class=\"line-number\">13<\/span>\r\n<span class=\"line-number\">14<\/span>\r\n<span class=\"line-number\">15<\/span>\r\n<span class=\"line-number\">16<\/span>\r\n<span class=\"line-number\">17<\/span>\r\n<span class=\"line-number\">18<\/span>\r\n<span class=\"line-number\">19<\/span>\r\n<span class=\"line-number\">20<\/span>\r\n<span class=\"line-number\">21<\/span>\r\n<span class=\"line-number\">22<\/span>\r\n<span class=\"line-number\">23<\/span>\r\n<span class=\"line-number\">24<\/span>\r\n<span class=\"line-number\">25<\/span>\r\n<span class=\"line-number\">26<\/span>\r\n<span class=\"line-number\">27<\/span>\r\n<span class=\"line-number\">28<\/span>\r\n<span class=\"line-number\">29<\/span>\r\n<span class=\"line-number\">30<\/span>\r\n<span class=\"line-number\">31<\/span>\r\n<span class=\"line-number\">32<\/span>\r\n<span class=\"line-number\">33<\/span>\r\n<span class=\"line-number\">34<\/span>\r\n<span class=\"line-number\">35<\/span>\r\n<span class=\"line-number\">36<\/span>\r\n<span class=\"line-number\">37<\/span>\r\n<span class=\"line-number\">38<\/span>\r\n<span class=\"line-number\">39<\/span>\r\n<span class=\"line-number\">40<\/span>\r\n<span class=\"line-number\">41<\/span>\r\n<span class=\"line-number\">42<\/span>\r\n<span class=\"line-number\">43<\/span>\r\n<span class=\"line-number\">44<\/span>\r\n<span class=\"line-number\">45<\/span>\r\n<span class=\"line-number\">46<\/span>\r\n<span class=\"line-number\">47<\/span>\r\n<span class=\"line-number\">48<\/span>\r\n<span class=\"line-number\">49<\/span>\r\n<span class=\"line-number\">50<\/span>\r\n<span class=\"line-number\">51<\/span>\r\n<span class=\"line-number\">52<\/span>\r\n<span class=\"line-number\">53<\/span>\r\n<span class=\"line-number\">54<\/span>\r\n<span class=\"line-number\">55<\/span>\r\n<span class=\"line-number\">56<\/span>\r\n<span class=\"line-number\">57<\/span>\r\n<span class=\"line-number\">58<\/span>\r\n<span class=\"line-number\">59<\/span>\r\n<span class=\"line-number\">60<\/span>\r\n<span class=\"line-number\">61<\/span>\r\n<span class=\"line-number\">62<\/span>\r\n<span class=\"line-number\">63<\/span>\r\n<span class=\"line-number\">64<\/span>\r\n<span class=\"line-number\">65<\/span>\r\n<\/pre>\n<\/td>\n<td class=\"code\">\n<pre><code class=\"bash\"><span class=\"line\"><span class=\"c\">#!\/bin\/bash<\/span>\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># variaveis\/constantes<\/span>\r\n<\/span>\r\n<span class=\"line\"><span class=\"nv\">VIRTUA_IPA<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"192.168.xxx.xxx\"<\/span>\r\n<\/span><span class=\"line\"><span class=\"nv\">VIRTUA_NET<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"192.168.xxx.xxx\/24\"<\/span>\r\n<\/span><span class=\"line\"><span class=\"nv\">VIRTUA_GAT<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"192.168.xxx.xxx\"<\/span>\r\n<\/span><span class=\"line\"><span class=\"nv\">VIRTUA_NIC<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"eth1\"<\/span>\r\n<\/span>\r\n<span class=\"line\"><span class=\"nv\">EMBRATEL_IPA<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"200.252.xx.xxx\"<\/span>\r\n<\/span><span class=\"line\"><span class=\"nv\">EMBRATEL_NET<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"200.252.xx.xxx\/26\"<\/span>\r\n<\/span><span class=\"line\"><span class=\"nv\">EMBRATEL_GAT<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"200.252.xx.xxx\"<\/span>\r\n<\/span><span class=\"line\"><span class=\"nv\">EMBRATEL_NIC<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"eth2\"<\/span>\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># limpando tabelas<\/span>\r\n<\/span>\r\n<span class=\"line\">ip route flush table VIRTUA\r\n<\/span><span class=\"line\">ip route flush table EMBRATEL\r\n<\/span><span class=\"line\">ip route flush table BALANCEAMENTO\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># limpando regras<\/span>\r\n<\/span>\r\n<span class=\"line\">ip rule del from 200.252.xxx.xxx table EMBRATEL\r\n<\/span><span class=\"line\">ip rule del from 192.168.xxx.xxx table VIRTUA\r\n<\/span><span class=\"line\">ip rule del fwmark 0x2 table BALANCEAMENTO\r\n<\/span><span class=\"line\">ip rule del fwmark 0x1 table EMBRATEL\r\n<\/span><span class=\"line\">ip route del default\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># configuracoes tabela VIRTUA<\/span>\r\n<\/span>\r\n<span class=\"line\">ip route add <span class=\"nv\">$VIRTUA_NET<\/span> dev <span class=\"nv\">$VIRTUA_NIC<\/span> src <span class=\"nv\">$VIRTUA_IPA<\/span> table VIRTUA\r\n<\/span><span class=\"line\">ip route add default via <span class=\"nv\">$VIRTUA_GAT<\/span> table VIRTUA\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># configuracoes tabela EMBRATEL<\/span>\r\n<\/span>\r\n<span class=\"line\">ip route add <span class=\"nv\">$EMBRATEL_NET<\/span> dev <span class=\"nv\">$EMBRATEL_NIC<\/span> src <span class=\"nv\">$EMBRATEL_IPA<\/span> table EMBRATEL\r\n<\/span><span class=\"line\">ip route add default via <span class=\"nv\">$EMBRATEL_GAT<\/span> table EMBRATEL\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># trafico da eth1 sai pela tabela VIRTUA<\/span>\r\n<\/span>\r\n<span class=\"line\">ip rule add from <span class=\"nv\">$VIRTUA_IPA<\/span> table VIRTUA\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># trafico da eth2 sai pela tabela EMBRATEL<\/span>\r\n<\/span>\r\n<span class=\"line\">ip rule add from <span class=\"nv\">$EMBRATEL_IPA<\/span> table EMBRATEL\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># definindo regra para marcacao de pacotes da intranet sairem pelo BALANCEAMENTO<\/span>\r\n<\/span>\r\n<span class=\"line\">ip rule add fwmark 2 table BALANCEAMENTO\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># definindo regra para pacotes marcados sairem pela EMBRATEL<\/span>\r\n<\/span>\r\n<span class=\"line\">ip rule add fwmark 1 table EMBRATEL\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># Criando balanceamento multilink para tabela BALANCEAMENTO<\/span>\r\n<\/span>\r\n<span class=\"line\">ip route add default scope global table BALANCAMENTO nexthop via <span class=\"nv\">$VIRTUA_GAT<\/span> dev <span class=\"nv\">$VIRTUA_NIC<\/span> weight 1 nexthop via <span class=\"nv\">$EMBRATEL_GAT<\/span> dev <span class=\"nv\">$EMBRATEL_NIC<\/span> weight 1\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># definindo rota padrao<\/span>\r\n<\/span>\r\n<span class=\"line\">ip route add default via <span class=\"nv\">$EMBRATEL_GAT<\/span>\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># fazendo flush no cache de rotas que foram deletadas<\/span>\r\n<\/span>\r\n<span class=\"line\">ip route flush cache\r\n<\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/figure>\n<h3>5. Script de firewall<\/h3>\n<figure class=\"code\">\n<div class=\"highlight\">\n<table>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<pre class=\"line-numbers\"><span class=\"line-number\">1<\/span>\r\n<span class=\"line-number\">2<\/span>\r\n<span class=\"line-number\">3<\/span>\r\n<span class=\"line-number\">4<\/span>\r\n<span class=\"line-number\">5<\/span>\r\n<span class=\"line-number\">6<\/span>\r\n<span class=\"line-number\">7<\/span>\r\n<span class=\"line-number\">8<\/span>\r\n<span class=\"line-number\">9<\/span>\r\n<span class=\"line-number\">10<\/span>\r\n<span class=\"line-number\">11<\/span>\r\n<span class=\"line-number\">12<\/span>\r\n<span class=\"line-number\">13<\/span>\r\n<span class=\"line-number\">14<\/span>\r\n<span class=\"line-number\">15<\/span>\r\n<span class=\"line-number\">16<\/span>\r\n<span class=\"line-number\">17<\/span>\r\n<span class=\"line-number\">18<\/span>\r\n<span class=\"line-number\">19<\/span>\r\n<span class=\"line-number\">20<\/span>\r\n<span class=\"line-number\">21<\/span>\r\n<span class=\"line-number\">22<\/span>\r\n<span class=\"line-number\">23<\/span>\r\n<span class=\"line-number\">24<\/span>\r\n<span class=\"line-number\">25<\/span>\r\n<span class=\"line-number\">26<\/span>\r\n<span class=\"line-number\">27<\/span>\r\n<span class=\"line-number\">28<\/span>\r\n<span class=\"line-number\">29<\/span>\r\n<span class=\"line-number\">30<\/span>\r\n<span class=\"line-number\">31<\/span>\r\n<span class=\"line-number\">32<\/span>\r\n<span class=\"line-number\">33<\/span>\r\n<span class=\"line-number\">34<\/span>\r\n<span class=\"line-number\">35<\/span>\r\n<span class=\"line-number\">36<\/span>\r\n<span class=\"line-number\">37<\/span>\r\n<span class=\"line-number\">38<\/span>\r\n<span class=\"line-number\">39<\/span>\r\n<span class=\"line-number\">40<\/span>\r\n<span class=\"line-number\">41<\/span>\r\n<span class=\"line-number\">42<\/span>\r\n<span class=\"line-number\">43<\/span>\r\n<span class=\"line-number\">44<\/span>\r\n<span class=\"line-number\">45<\/span>\r\n<span class=\"line-number\">46<\/span>\r\n<span class=\"line-number\">47<\/span>\r\n<span class=\"line-number\">48<\/span>\r\n<span class=\"line-number\">49<\/span>\r\n<span class=\"line-number\">50<\/span>\r\n<span class=\"line-number\">51<\/span>\r\n<span class=\"line-number\">52<\/span>\r\n<span class=\"line-number\">53<\/span>\r\n<\/pre>\n<\/td>\n<td class=\"code\">\n<pre><code class=\"bash\"><span class=\"line\"><span class=\"c\">#!\/bin\/bash<\/span>\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># variaveis\/constantes<\/span>\r\n<\/span>\r\n<span class=\"line\"><span class=\"nv\">IPTABLES<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"\/sbin\/iptables\"<\/span>\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\">### limpando tabela filter<\/span>\r\n<\/span>\r\n<span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t filter -F\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t filter -P INPUT ACCEPT\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t filter -P OUTPUT ACCEPT\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t filter -P FORWARD ACCEPT\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t filter -X\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\">### limpando tabela nat<\/span>\r\n<\/span>\r\n<span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t nat -F\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t nat -P PREROUTING ACCEPT\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t nat -P OUTPUT ACCEPT\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t nat -P POSTROUTING ACCEPT\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t nat -X\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\">### limpando tabela mangle<\/span>\r\n<\/span>\r\n<span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t mangle -F\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t mangle -P PREROUTING ACCEPT\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t mangle -P INPUT ACCEPT\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t mangle -P FORWARD ACCEPT\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t mangle -P OUTPUT ACCEPT\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t mangle -P POSTROUTING ACCEPT\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t mangle -X\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\">### ativando ip forward<\/span>\r\n<\/span>\r\n<span class=\"line\"><span class=\"nb\">echo <\/span>1 &gt; \/proc\/sys\/net\/ipv4\/ip_forward\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\">### Fazendo redirecionamento para servidores na rede interna<\/span>\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># tratando a ida<\/span>\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t nat -A PREROUTING -i eth2 -d 200.252.xxx.xxx -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.1.0.20:80\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># tratando a volta<\/span>\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t mangle -A PREROUTING -i eth0 -s 10.1.0.20 -p tcp --sport 80 -j MARK --set-mark 1\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\">### Marcando pacotes que serao direcionados para tabela BALANCEAMENTO<\/span>\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># especificando uma maquina da rede para usar balanceamento<\/span>\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -A PREROUTING -t mangle -s 10.1.0.100\/32 -d 0\/0 -j MARK --set-mark 2\r\n<\/span>\r\n<span class=\"line\"><span class=\"c\"># Mascarando conexoes<\/span>\r\n<\/span>\r\n<span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t nat -A POSTROUTING -s 10.1.0.20\/24 -j MASQUERADE\r\n<\/span><span class=\"line\"><span class=\"nv\">$IPTABLES<\/span> -t nat -A POSTROUTING -s 10.1.0.100\/24 -j MASQUERADE\r\n<\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/figure>\n<h3>6. Colocando scripts para rodar durante a inicializa\u00e7\u00e3o<\/h3>\n<p>Voc\u00ea pode simplesmente chamar os scripts no arquivo \/etc\/rc.local, vamos supor que os scripts estejam dentro de \/root\/rules e tenham o nome de rc.routes e rc.firewall.<\/p>\n<p>Edite o arquivo<\/p>\n<pre><code>vim \/etc\/rc.local\r\n<\/code><\/pre>\n<p>Adicione<\/p>\n<pre><code>\/root\/rules\/rc.routes\r\n\/root\/rules\/rc.firewall\r\n<\/code><\/pre>\n<p>Salve<\/p>\n<pre><code>:wq!\r\n<\/code><\/pre>\n<p>Pronto, desde que eles tenham permiss\u00e3o de execu\u00e7\u00e3o tudo est\u00e1 pronto para funcionar, se quiser testar para valer d\u00ea um reboot.<\/p>\n<h2>Outras dicas<\/h2>\n<h3>7. Usando Proxy Transparente na mesma m\u00e1quina<\/h3>\n<p>Se quiser configurar um proxy transparente a regra abaixo resolve.<\/p>\n<pre><code>$IPTABLES -t nat -A PREROUTING -i eth0 -p tcp -s $LAN_NET --dport 80 -j REDIRECT --to-port 3128\r\n<\/code><\/pre>\n<p>Voc\u00ea precisa ter o SQUID na mesma m\u00e1quina.<\/p>\n<h3>8. Sa\u00edda por link espec\u00edfico para destino espec\u00edfico<\/h3>\n<p>Se quiser acessar um site sempre por uma das sa\u00eddas, por exemplo embratel, basta marcar assim:<\/p>\n<pre><code> $IPTABLES -A PREROUTING -t mangle -s 10.1.xxx.xxx\/xx -d 186.202.xxx.xxx -j MARK --set-mark 1\r\n<\/code><\/pre>\n<p>Como estou marcando com 2, ele sairia para embratel toda a vez que o destino fosse 186.202.xxx.xxx<\/p>\n<h4>8.1 Servi\u00e7o espec\u00edfico saindo por link espec\u00edfico<\/h4>\n<p>Podemos especificar que toda o envio de e-mail (SMTP) ser\u00e1 feito pelo link EMBRATEL que \u00e9 mais est\u00e1vel, seguro e tem menos chances se estar em um lista de bloqueio.<\/p>\n<pre><code>$IPTABLES -A PREROUTING -t mangle -s 10.1.xxx.xxx\/xx -d 0\/0 --dport 25 -j MARK --set-mark 1\r\n<\/code><\/pre>\n<h3>9. SQUID usando Balanceamento<\/h3>\n<p>Se tiver um squid na mesma m\u00e1quina e desejar que ele use a tabela de balanceamento ao inv\u00e9s da rota padr\u00e3o, defina a configura\u00e7\u00e3o abaixo no squid.conf<\/p>\n<pre><code>tcp_outgoing_tos 0x2 redelocal\r\n<\/code><\/pre>\n<p>0x1 \u00e9 referente a marca\u00e7\u00e3o no iptables para sa\u00edda pela tabela de balanceamento e rede local seria relativa a uma ACL que tem como conte\u00fado o endere\u00e7o da rede local.<\/p>\n<h4>7.1 Exemplo de squid.conf<\/h4>\n<p>Aqui um exemplo de conf de squid3 que s\u00f3 faz cache na porta 80.<\/p>\n<figure class=\"code\">\n<div class=\"highlight\">\n<table>\n<tbody>\n<tr>\n<td class=\"gutter\">\n<pre class=\"line-numbers\"><span class=\"line-number\">1<\/span>\r\n<span class=\"line-number\">2<\/span>\r\n<span class=\"line-number\">3<\/span>\r\n<span class=\"line-number\">4<\/span>\r\n<span class=\"line-number\">5<\/span>\r\n<span class=\"line-number\">6<\/span>\r\n<span class=\"line-number\">7<\/span>\r\n<span class=\"line-number\">8<\/span>\r\n<span class=\"line-number\">9<\/span>\r\n<span class=\"line-number\">10<\/span>\r\n<span class=\"line-number\">11<\/span>\r\n<span class=\"line-number\">12<\/span>\r\n<span class=\"line-number\">13<\/span>\r\n<span class=\"line-number\">14<\/span>\r\n<span class=\"line-number\">15<\/span>\r\n<span class=\"line-number\">16<\/span>\r\n<span class=\"line-number\">17<\/span>\r\n<span class=\"line-number\">18<\/span>\r\n<span class=\"line-number\">19<\/span>\r\n<span class=\"line-number\">20<\/span>\r\n<span class=\"line-number\">21<\/span>\r\n<span class=\"line-number\">22<\/span>\r\n<span class=\"line-number\">23<\/span>\r\n<span class=\"line-number\">24<\/span>\r\n<span class=\"line-number\">25<\/span>\r\n<span class=\"line-number\">26<\/span>\r\n<span class=\"line-number\">27<\/span>\r\n<span class=\"line-number\">28<\/span>\r\n<span class=\"line-number\">29<\/span>\r\n<span class=\"line-number\">30<\/span>\r\n<span class=\"line-number\">31<\/span>\r\n<span class=\"line-number\">32<\/span>\r\n<span class=\"line-number\">33<\/span>\r\n<span class=\"line-number\">34<\/span>\r\n<span class=\"line-number\">35<\/span>\r\n<span class=\"line-number\">36<\/span>\r\n<span class=\"line-number\">37<\/span>\r\n<span class=\"line-number\">38<\/span>\r\n<span class=\"line-number\">39<\/span>\r\n<span class=\"line-number\">40<\/span>\r\n<span class=\"line-number\">41<\/span>\r\n<span class=\"line-number\">42<\/span>\r\n<span class=\"line-number\">43<\/span>\r\n<span class=\"line-number\">44<\/span>\r\n<span class=\"line-number\">45<\/span>\r\n<span class=\"line-number\">46<\/span>\r\n<span class=\"line-number\">47<\/span>\r\n<span class=\"line-number\">48<\/span>\r\n<span class=\"line-number\">49<\/span>\r\n<span class=\"line-number\">50<\/span>\r\n<span class=\"line-number\">51<\/span>\r\n<span class=\"line-number\">52<\/span>\r\n<span class=\"line-number\">53<\/span>\r\n<span class=\"line-number\">54<\/span>\r\n<span class=\"line-number\">55<\/span>\r\n<span class=\"line-number\">56<\/span>\r\n<span class=\"line-number\">57<\/span>\r\n<span class=\"line-number\">58<\/span>\r\n<span class=\"line-number\">59<\/span>\r\n<span class=\"line-number\">60<\/span>\r\n<span class=\"line-number\">61<\/span>\r\n<span class=\"line-number\">62<\/span>\r\n<span class=\"line-number\">63<\/span>\r\n<span class=\"line-number\">64<\/span>\r\n<span class=\"line-number\">65<\/span>\r\n<span class=\"line-number\">66<\/span>\r\n<span class=\"line-number\">67<\/span>\r\n<span class=\"line-number\">68<\/span>\r\n<span class=\"line-number\">69<\/span>\r\n<span class=\"line-number\">70<\/span>\r\n<span class=\"line-number\">71<\/span>\r\n<span class=\"line-number\">72<\/span>\r\n<span class=\"line-number\">73<\/span>\r\n<span class=\"line-number\">74<\/span>\r\n<span class=\"line-number\">75<\/span>\r\n<span class=\"line-number\">76<\/span>\r\n<span class=\"line-number\">77<\/span>\r\n<span class=\"line-number\">78<\/span>\r\n<span class=\"line-number\">79<\/span>\r\n<span class=\"line-number\">80<\/span>\r\n<span class=\"line-number\">81<\/span>\r\n<span class=\"line-number\">82<\/span>\r\n<span class=\"line-number\">83<\/span>\r\n<span class=\"line-number\">84<\/span>\r\n<span class=\"line-number\">85<\/span>\r\n<span class=\"line-number\">86<\/span>\r\n<span class=\"line-number\">87<\/span>\r\n<span class=\"line-number\">88<\/span>\r\n<span class=\"line-number\">89<\/span>\r\n<span class=\"line-number\">90<\/span>\r\n<span class=\"line-number\">91<\/span>\r\n<span class=\"line-number\">92<\/span>\r\n<span class=\"line-number\">93<\/span>\r\n<span class=\"line-number\">94<\/span>\r\n<span class=\"line-number\">95<\/span>\r\n<span class=\"line-number\">96<\/span>\r\n<span class=\"line-number\">97<\/span>\r\n<span class=\"line-number\">98<\/span>\r\n<span class=\"line-number\">99<\/span>\r\n<span class=\"line-number\">100<\/span>\r\n<span class=\"line-number\">101<\/span>\r\n<span class=\"line-number\">102<\/span>\r\n<span class=\"line-number\">103<\/span>\r\n<span class=\"line-number\">104<\/span>\r\n<span class=\"line-number\">105<\/span>\r\n<span class=\"line-number\">106<\/span>\r\n<span class=\"line-number\">107<\/span>\r\n<span class=\"line-number\">108<\/span>\r\n<span class=\"line-number\">109<\/span>\r\n<span class=\"line-number\">110<\/span>\r\n<span class=\"line-number\">111<\/span>\r\n<span class=\"line-number\">112<\/span>\r\n<span class=\"line-number\">113<\/span>\r\n<span class=\"line-number\">114<\/span>\r\n<span class=\"line-number\">115<\/span>\r\n<span class=\"line-number\">116<\/span>\r\n<span class=\"line-number\">117<\/span>\r\n<span class=\"line-number\">118<\/span>\r\n<span class=\"line-number\">119<\/span>\r\n<span class=\"line-number\">120<\/span>\r\n<span class=\"line-number\">121<\/span>\r\n<span class=\"line-number\">122<\/span>\r\n<span class=\"line-number\">123<\/span>\r\n<span class=\"line-number\">124<\/span>\r\n<span class=\"line-number\">125<\/span>\r\n<span class=\"line-number\">126<\/span>\r\n<span class=\"line-number\">127<\/span>\r\n<span class=\"line-number\">128<\/span>\r\n<span class=\"line-number\">129<\/span>\r\n<span class=\"line-number\">130<\/span>\r\n<span class=\"line-number\">131<\/span>\r\n<span class=\"line-number\">132<\/span>\r\n<span class=\"line-number\">133<\/span>\r\n<span class=\"line-number\">134<\/span>\r\n<span class=\"line-number\">135<\/span>\r\n<span class=\"line-number\">136<\/span>\r\n<span class=\"line-number\">137<\/span>\r\n<span class=\"line-number\">138<\/span>\r\n<span class=\"line-number\">139<\/span>\r\n<span class=\"line-number\">140<\/span>\r\n<span class=\"line-number\">141<\/span>\r\n<span class=\"line-number\">142<\/span>\r\n<span class=\"line-number\">143<\/span>\r\n<span class=\"line-number\">144<\/span>\r\n<span class=\"line-number\">145<\/span>\r\n<span class=\"line-number\">146<\/span>\r\n<span class=\"line-number\">147<\/span>\r\n<span class=\"line-number\">148<\/span>\r\n<span class=\"line-number\">149<\/span>\r\n<span class=\"line-number\">150<\/span>\r\n<span class=\"line-number\">151<\/span>\r\n<span class=\"line-number\">152<\/span>\r\n<span class=\"line-number\">153<\/span>\r\n<span class=\"line-number\">154<\/span>\r\n<span class=\"line-number\">155<\/span>\r\n<span class=\"line-number\">156<\/span>\r\n<span class=\"line-number\">157<\/span>\r\n<span class=\"line-number\">158<\/span>\r\n<span class=\"line-number\">159<\/span>\r\n<span class=\"line-number\">160<\/span>\r\n<span class=\"line-number\">161<\/span>\r\n<span class=\"line-number\">162<\/span>\r\n<span class=\"line-number\">163<\/span>\r\n<span class=\"line-number\">164<\/span>\r\n<span class=\"line-number\">165<\/span>\r\n<span class=\"line-number\">166<\/span>\r\n<span class=\"line-number\">167<\/span>\r\n<span class=\"line-number\">168<\/span>\r\n<span class=\"line-number\">169<\/span>\r\n<span class=\"line-number\">170<\/span>\r\n<span class=\"line-number\">171<\/span>\r\n<span class=\"line-number\">172<\/span>\r\n<span class=\"line-number\">173<\/span>\r\n<span class=\"line-number\">174<\/span>\r\n<span class=\"line-number\">175<\/span>\r\n<span class=\"line-number\">176<\/span>\r\n<span class=\"line-number\">177<\/span>\r\n<span class=\"line-number\">178<\/span>\r\n<span class=\"line-number\">179<\/span>\r\n<span class=\"line-number\">180<\/span>\r\n<span class=\"line-number\">181<\/span>\r\n<span class=\"line-number\">182<\/span>\r\n<\/pre>\n<\/td>\n<td class=\"code\">\n<pre><code class=\"\"><span class=\"line\">#### porta #################################\r\n<\/span> \r\n<span class=\"line\">http_port 3128\r\n<\/span> \r\n<span class=\"line\">### hostname ###################\r\n<\/span> \r\n<span class=\"line\">visible_hostname fw01\r\n<\/span> \r\n<span class=\"line\">### dns servers #################\r\n<\/span> \r\n<span class=\"line\">dns_nameservers xxx.xxx.xxx.xxx\r\n<\/span> \r\n<span class=\"line\">### configuracoes de cache ############\r\n<\/span><span class=\"line\"># referencia: http:\/\/www.visolve.com\/squid\/squid24s1\/cache_size.php\r\n<\/span><span class=\"line\"># referencia: http:\/\/www.visolve.com\/squid\/squid24s1\/cache_size.php#cache_replacement_policy\r\n<\/span> \r\n<span class=\"line\"># setando para 2 gigas, os outros 2 gigas vamos deixar 1 giga para sistema e\r\n<\/span><span class=\"line\"># 1 giga para opera\u00e7\u00e3o do cache em disco\r\n<\/span> \r\n<span class=\"line\">cache_mem 2048 MB\r\n<\/span> \r\n<span class=\"line\"># tamanho de objetos em memoria e disco\r\n<\/span> \r\n<span class=\"line\">maximum_object_size_in_memory 512 KB\r\n<\/span><span class=\"line\">maximum_object_size 64 MB\r\n<\/span><span class=\"line\">minimum_object_size 0 KB\r\n<\/span> \r\n<span class=\"line\"># quais o rate para objetos devem serem swapados\r\n<\/span><span class=\"line\">cache_swap_low 90\r\n<\/span><span class=\"line\">cache_swap_high 95\r\n<\/span> \r\n<span class=\"line\"># heap GDSF: otimiza o \"hit rate\" por manter objetos pequenos e\r\n<\/span><span class=\"line\"># e populares no cache, guardando assim um numero maior de objetos\r\n<\/span><span class=\"line\"># ao inves de buscar no disco ja esta na memoria, maior velocidade\r\n<\/span><span class=\"line\"># na resposta ao usuario\r\n<\/span> \r\n<span class=\"line\">memory_replacement_policy heap GDSF\r\n<\/span> \r\n<span class=\"line\"># heap LFUDA: otimiza o \"byte hit rate\" por manter objetos populares\r\n<\/span><span class=\"line\"># no cache sem levar em conta o tamanho. Se for utilizado este, o\r\n<\/span><span class=\"line\"># maximum_object_size devera ser aumentado para otimizar o LFUDA.\r\n<\/span> \r\n<span class=\"line\">cache_replacement_policy heap LFUDA\r\n<\/span> \r\n<span class=\"line\"># Lembrando que cada 10GB de cache o squid consome 100MB de ram para gerenciar isto\r\n<\/span><span class=\"line\"># colocando 100GB de STORAGE o squid vai usar 1 Giga da RAM para gerenciar o cache do disco\r\n<\/span><span class=\"line\"># estou reservando entao 3 gigas para o squid, 2 para cache_mem e 1 para cuidar do cache em disco, sobrando 1 GB para o sistema usar.\r\n<\/span><span class=\"line\"># Em relacao ao metodo de gerenciamento do cache, aufs \u00e9 + rapido que ufs\r\n<\/span> \r\n<span class=\"line\">cache_dir aufs \/var\/spool\/squid3 4096 16 256\r\n<\/span> \r\n<span class=\"line\"># user\/group\/manager\r\n<\/span> \r\n<span class=\"line\">cache_mgr infraestrutura@empresa.com.br\r\n<\/span><span class=\"line\">cache_effective_user proxy\r\n<\/span><span class=\"line\">cache_effective_group proxy\r\n<\/span> \r\n<span class=\"line\">### ttl de objetos no cache ###########################\r\n<\/span><span class=\"line\"># http:\/\/www.squid-cache.org\/Doc\/config\/refresh_pattern\/\r\n<\/span> \r\n<span class=\"line\">refresh_pattern ^ftp:                1440        20%        10080\r\n<\/span><span class=\"line\">refresh_pattern ^gopher:        1440        0%        1440\r\n<\/span><span class=\"line\">refresh_pattern -i (\/cgi-bin\/|\\?) 0        0%        0\r\n<\/span><span class=\"line\">refresh_pattern (Release|Package(.gz)*)$        0        20%        2880\r\n<\/span><span class=\"line\">refresh_pattern .                0        20%        4320\r\n<\/span> \r\n \r\n<span class=\"line\">###\r\n<\/span><span class=\"line\">### listas de controle #######################\r\n<\/span><span class=\"line\">###\r\n<\/span> \r\n<span class=\"line\">hierarchy_stoplist cgi-bin ?\r\n<\/span> \r\n<span class=\"line\"># acl ligada a autenticacao\r\n<\/span> \r\n<span class=\"line\"># acesso padrao daemon squid\r\n<\/span><span class=\"line\">acl all src all\r\n<\/span><span class=\"line\">acl manager proto cache_object\r\n<\/span><span class=\"line\">acl localhost src 127.0.0.1\/32\r\n<\/span><span class=\"line\">acl to_localhost dst 127.0.0.0\/8\r\n<\/span> \r\n<span class=\"line\"># redes para icp (proxy filho)\r\n<\/span><span class=\"line\">acl localnet src 10.1.xxx.xxx\/24\r\n<\/span> \r\n<span class=\"line\"># portas seguras\r\n<\/span><span class=\"line\">acl SSL_ports port 443                # https\r\n<\/span><span class=\"line\">acl SSL_ports port 465                # https\r\n<\/span><span class=\"line\">acl SSL_ports port 587                # https\r\n<\/span><span class=\"line\">acl SSL_ports port 993                # https\r\n<\/span><span class=\"line\">acl SSL_ports port 997                # https\r\n<\/span> \r\n<span class=\"line\"># portas comuns\r\n<\/span><span class=\"line\">acl Safe_ports port 80                 # http\r\n<\/span><span class=\"line\">acl Safe_ports port 8080               # http\r\n<\/span><span class=\"line\">acl Safe_ports port 21                 # ftp\r\n<\/span><span class=\"line\">acl Safe_ports port 25                 # smtp\r\n<\/span><span class=\"line\">acl Safe_ports port 110                # pop\r\n<\/span> \r\n<span class=\"line\"># acl que especifica metodos de conectividade\r\n<\/span><span class=\"line\">acl purge method PURGE\r\n<\/span><span class=\"line\">acl CONNECT method CONNECT\r\n<\/span> \r\n<span class=\"line\"># acl que especifica tipo de consulta QUERY em cgi-bin\r\n<\/span><span class=\"line\">acl QUERY urlpath_regex cgi-bin \\?\r\n<\/span> \r\n<span class=\"line\">###\r\n<\/span><span class=\"line\">### controle de acesso #############################################\r\n<\/span><span class=\"line\">###\r\n<\/span> \r\n<span class=\"line\"># liberacoes padrao daemon\/localhost\r\n<\/span><span class=\"line\">http_access allow manager localhost\r\n<\/span><span class=\"line\">http_access deny manager\r\n<\/span><span class=\"line\">http_access allow purge localhost\r\n<\/span><span class=\"line\">http_access deny purge\r\n<\/span> \r\n<span class=\"line\"># nao libera portas diferentes de Safe_ports e SSL_ports\r\n<\/span><span class=\"line\">http_access deny !Safe_ports\r\n<\/span><span class=\"line\">http_access deny CONNECT !SSL_ports\r\n<\/span> \r\n<span class=\"line\"># nao cacheia cgi-bin\r\n<\/span><span class=\"line\">cache deny QUERY\r\n<\/span> \r\n<span class=\"line\"># libera rede local\r\n<\/span><span class=\"line\">http_access allow localnet\r\n<\/span>\r\n<span class=\"line\"># bloqueia qualquer acesso que nao tenha casado com as regras acima\r\n<\/span><span class=\"line\">http_access deny all\r\n<\/span>\r\n<span class=\"line\">### especificando uso da tabela BALANCEAMENTO (roteamento) \r\n<\/span>\r\n<span class=\"line\">tcp_outgoing_tos 0x1 localnet\r\n<\/span> \r\n<span class=\"line\">###\r\n<\/span><span class=\"line\">### processando em paralelo ###########\r\n<\/span><span class=\"line\">###\r\n<\/span> \r\n<span class=\"line\"># http:\/\/www.visolve.com\/squid\/squid24s1\/delaypool.php\r\n<\/span> \r\n<span class=\"line\">pipeline_prefetch on\r\n<\/span> \r\n<span class=\"line\">### reiniciando rapidamente #######\r\n<\/span> \r\n<span class=\"line\">shutdown_lifetime 1 second\r\n<\/span> \r\n<span class=\"line\">### estatisticas de conexao #######\r\n<\/span> \r\n<span class=\"line\"># If enabled, squid will keep statistics on each client.\r\n<\/span><span class=\"line\"># This can become a memory hog after a while, so it\u2019s best to keep it disabled.\r\n<\/span> \r\n<span class=\"line\">client_db off\r\n<\/span> \r\n<span class=\"line\">### conexoes #################\r\n<\/span> \r\n<span class=\"line\"># Sends a connection-close to clients\r\n<\/span><span class=\"line\"># that leave a half open connection to the squid server.\r\n<\/span> \r\n<span class=\"line\">half_closed_clients off\r\n<\/span> \r\n<span class=\"line\">### snmp ####################\r\n<\/span> \r\n<span class=\"line\">acl snmpcommunity snmp_community empresa\r\n<\/span><span class=\"line\">snmp_port 3401\r\n<\/span><span class=\"line\">snmp_access allow snmpcommunity localhost\r\n<\/span><span class=\"line\">snmp_access deny all\r\n<\/span> \r\n<span class=\"line\">### logs #################\r\n<\/span> \r\n<span class=\"line\">access_log \/var\/log\/squid3\/access.log squid\r\n<\/span><span class=\"line\">cache_log \/var\/log\/squid3\/cache.log\r\n<\/span> \r\n<span class=\"line\"># Log de objetos guardados. Pode ser desativado para melhorar a performance\r\n<\/span>\r\n<span class=\"line\">cache_store_log none\r\n<\/span> \r\n<span class=\"line\">### idioma das mensagens do squid para usuarios ################\r\n<\/span> \r\n<span class=\"line\">error_directory \/usr\/share\/squid3\/errors\/Portuguese\r\n<\/span> \r\n<span class=\"line\">### arquivos ###################\r\n<\/span> \r\n<span class=\"line\">hosts_file \/etc\/hosts\r\n<\/span><span class=\"line\">coredump_dir \/var\/spool\/squid3\r\n<\/span><\/code><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/figure>\n<h3>7.2 Exemplo de balanceamento usando tabela default<\/h3>\n<p>Ao inv\u00e9s de criar uma tabela espec\u00edfica para balanceamento, podemos definir o balanceamento na tabela default.<\/p>\n<pre><code>ip route add default scope global nexthop via 189.xxx.xxx.xxx \\\r\ndev eth1 weight 1 nexthop via 200.xxx.xxx.xxx dev eth2 weight 1\r\n<\/code><\/pre>\n<p>\u00c9 apenas uma outra forma de faz\u00ea-lo, mais direta.<\/p>\n<h2>Amarrando as pontas<\/h2>\n<h3>8. Conclus\u00e3o<\/h3>\n<p>O Netfilter\/iptables e Iproute2 possuem juntos um universo de funcionalidades e comandos para te ajudar a resolver os mais diversos problemas.<\/p>\n<p>O exemplo deste post \u00e9 bem b\u00e1sico e simples, espero que sirva de refer\u00eancia para aqueles que necessitem balancear dois ou mais links.<\/p>\n<h3>8.2 Cuidado com testes MEUIP<\/h3>\n<p>Se estiver tentando ver se o balanceamento funciona usando sites MEUIP, voc\u00ea est\u00e1 fazendo errado. O balanceamento possui um cache, e no caso do mesmo site ele vai analisar por qual link voce acessou aquele site e vai sair sempre por ele, isso ocorre para evitar problemas ao acessar sites que precisam de persist\u00eancia de sess\u00e3o.<\/p>\n<p>O balanceamento vai funcionar, mas acesse sites diferentes para testar e use o MTR no console para avaliar por onde voc\u00ea est\u00e1 saindo, isso ser\u00e1 mais eficiente.<\/p>\n<h3>9. Refer\u00eancias de pesquisa<\/h3>\n<h3>9.1 Principais<\/h3>\n<ul>\n<li>https:\/\/www.policyrouting.org\/iproute2.doc.html<\/li>\n<li>https:\/\/netfilter.org\/documentation\/<\/li>\n<\/ul>\n<h3>9.2 Secund\u00e1rios<\/h3>\n<ul>\n<li>https:\/\/lartc.org\/howto\/lartc.rpdb.multiple-links.html<\/li>\n<li>https:\/\/www.debian-administration.org\/articles\/377<\/li>\n<li>https:\/\/www.enterprisenetworkingplanet.com\/netos\/article.php\/3512836\/Tunnels-Routes-and-Rules-Theyre-Easier-with-iproute2.htm<\/li>\n<li>https:\/\/blog.nielshorn.net\/2008\/09\/load-balancing-two-isps\/<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Em um projeto recente precisei fazer o balanceamento de links no linux, o cliente possu\u00eda sa\u00edda por dois provedores, sendo o primeiro NET\/Virtua e o segundo Embratel, seu link Embratel estava ocioso e ele queria acabar com essa ociosidade. A solu\u00e7\u00e3o foi usar o iproute2 para criar uma tabela com balanceamento de links para alguns [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1082,1,730,830,79,1062,42,51,495,1162,68,548],"tags":[1401,353,83,10,14,361],"class_list":["post-4753","post","type-post","status-publish","format-standard","hentry","category-centos-7-rhel-7","category-viazap","category-clusterweb","category-debian","category-firewall","category-freenas","category-leitura-recomendada","category-linux-linuxrs","category-profissional-de-ti","category-proxmox","category-redes-2","category-ubuntu-2","tag-balanceando","tag-de","tag-internet","tag-links","tag-linux","tag-no"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4753","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4753"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4753\/revisions"}],"predecessor-version":[{"id":4754,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4753\/revisions\/4754"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4753"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4753"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4753"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}