O presente documento destina-se a criar um balanceamento de duas conexões ADSL existentes em uma mesma máquina Linux. Ao seu final, o leitor estará capacitado a configurar uma máquina Linux contendo duas (ou mais) conexões ADSL, Cable ou similares (com IP fixo) de forma que essas conexões sejam utilizadas tanto para recepção quanto envio de informações para a Internet, bem como serem utilizadas em balanceadores de carga no modelo Round Robin.
Por padrão, pacotes TCP/IP são roteados a partir do exame do
endereço IP de destino e verificação de uma rota para a rede
de destino na tabela de roteamento. Essa tabela pode ser vista
com o comando "netstat -r". Se uma rota é encontrada, o pacote
é enviado para a interface de rede, senão o pacote é enviado
para o seu gateway default.
Para a maioria dos sistemas conectados diretamente à internet,
o default gateway é um ISP. Em nosso caso, isso significa que
toda conexão de saída para a Internet vai para fora da interface
DSL. Este não é o comportamento desejado em um ambiente com
conexões redundantes. Quando você adiciona um cable modem ao seu
sistema, você não quer as conexões ao seu cable modem
respondidas usando sua conexão DSL.
Para solucionar esse comportamento, o sistema não pode possuir
uma rota default única. Deve possuir rotas estáticas baseadas em
regras pré-definidas pelo administrador ou deve poder rotear
pacotes dinamicamente, baseado num algoritmo de roteamento de
caminhos múltiplos (multipath routing algorithm) com pesos.
Decidimo-nos pela segunda metodologia, por ser mais simples e
possuir maior flexibilidade.
[2] Comentário enviado por fabio em 24/03/2005 - 09:18h
Olá bhl,
Bom, vou me meter no assunto, espero não estar falando bobagem :)
Se um dos links cair, o kernel "descobre" que o link caiu e passa a rotear somente pelo outro link. Repare que as duas rotas tem a mesma prioridade na tabela de roteamento do kernel, por isso o balanceamento. A redundância e balanceamento nesse caso se devem ao recurso de multi path routing habilitado no kernel.
Só faço uma ressalva, se um dos links cair, o kernel descobre, mas se ele voltar, o kernel fica sem saber, pois a rota para esse dispositivo foi desabilitada. Uma sugestão é pôr um script no cron para pingar as interfaces de rede da máquina a cada minuto. Um simples ping na interface de rede que voltou já é o suficiente para o kernel saber que ela está no ar novamente e restaurar a rota de pacotes pra ela.
[3] Comentário enviado por mrbits em 29/03/2005 - 16:12h
Nao esta falando bobagem nao. Mandou muito bem e esta coberto de razao. Se uma das conexoes cair e voltar, o kernel vai ficar sem saber, sendo necessario um restart no roteamento.
[4] Comentário enviado por efloriani em 06/04/2005 - 01:34h
Ola galera,,
Estou com um problema, que seria o seguinte:
Tenho 1 link e 1 ADSL, duas conexoes internet.
Meus usuarios passam pelo proxy squid, e vao para a internet, atraves de qualquer 1 das conexoes com a internet, porem, preciso fazer com q o servidor de email local soh saia pelo link e nunca pela ADSL.
[5] Comentário enviado por genixsky em 09/05/2005 - 09:02h
Olá pessoal.
Gostaria de saber, como fazer para testar esse processo com dois link speedy de 400, sendo que um deles já está em operação na rede. Pois não posso parar a rede para realizar este teste.
Pensei em colocar em uma máquina da rede ligada diretamente a interface com o ip do link válido 200.0.0.0. A minha idéia e tentar simular um link speedy em um computador para verificar c o kernel realmente manteria total acesso. Isso é possível?
[6] Comentário enviado por jaca_diego em 15/05/2005 - 18:26h
Olá achei muito bom o script so q tenhu uma duvida quanto ao multi path routing, uso conectiva 10 como posso abilitar isso no kernel ou como faço pra ver c ja esta abilitado??
obrigado
nota 10
[7] Comentário enviado por segalla em 15/11/2005 - 12:19h
Pessoal,
Estou usando FC3 com kernel 2.6, montei um ambiente de teste e rodei o script acima.
A parte de balanceamento ta rodando perfeito mas o kernel não está "descubrindo" a queda de uma rota e continua fazendo balaceamento entre as duas placas.
[8] Comentário enviado por crulim em 20/04/2006 - 15:21h
Boa tarde a todos!!!
Estou vendo a necessidade de criar um balanceamento de carga aqui na empresa. Tenho firewall Linux Conectiva 8 com kernel 2.4. Estou com as seguintes duvidas sobre o script de balanceamento.
1º Aqui na empresa é proxy transparente redirecionado da 80 para 2100, será que o pacotes da rede interna passarão pelo redirecionameto e serão balanceados através dos dois links?
2º Como já foi informado nos comentarios acima, como resolver quando um dos links cair, o script de ping que é executado no cron, faz o kernel reconhecer o link que tinha caido. Mas aqui na empresa tenho um link da telefonica com ip fixo, e a cada 35 dias o link caia, e sou obrigado a autenticar com a senha. Se eu tiver dois links da telefonica, como farei para autentica os links seperados, por que o kernel vai esta utilizando o link que esta no ar, e no navegador terei que acessar o link que caio para autentica. Como farei esta operação?
[9] Comentário enviado por marquinhos1875 em 20/07/2006 - 21:48h
ola brothes livres
estou com problemão
tenho dois links dadicados com o load balance do link a seguir http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=2252&pagina=3
bom funciona as mil maravilhas a não ser pelo fato de alguns sites (por motivos de seguranças) verificarem o ip de requisição ai (bummm) o servidor derruba a conexão, pois ele detectam dois ips diferentes (um de cada link)
tenho certeza ki o iptables pode resolver isso, mais preciso de ajuda
algem se habilita?
favor .... o link e muito caro e estou perdendo $$$$$$$$$!!!!!!!!!!
[12] Comentário enviado por gilson_ctm em 07/10/2006 - 17:26h
Olá amigos, apliquei esse excelente script mais tenho um probleminha que está esquetando minha cabeça. Acontece que o msn, putty e donwloads caem constantimente. me ajuuuuuude!
[16] Comentário enviado por baratinha em 13/04/2007 - 14:04h
Caro bhl eu trabalho em uma empresa de rastreamento e desejo ter um link de backup, mas os modulos que ficam nos caminhões apontam somente para um ip fixo. Fazendo esse roteamento seria possivel quando um link cair o outro entrar automatico?
[18] Comentário enviado por pankdo em 10/09/2007 - 12:27h
posso usar essa solucao em comjunto com o squid?
todos os pacotes vindos da rede interna sao entregues ao squid
e depois sao divididos entre os links de saida??
[19] Comentário enviado por papel em 22/01/2008 - 18:30h
Caro amigo, tô com um problemão p/ configurar meu proxy com conexão ADSL. Já q vc tem experiência nesse tipo de configuração poderia me passar como eu faria.
Segue abaixo o link contendo a minha dúvida.
Muito obrigado e Viva O Linux!!!!
[21] Comentário enviado por Wolf_RN em 16/07/2008 - 20:31h
Caros amigos, estou com 2 links, um da 1mb da VELOX e outro 1mb da JETCOM, preciso de informações para fazer a redundancia, que quando um caia o outro assuma e ao voltar seja reconhecido automaticamente, alguém me da um passo a passo de como fazer..?? Agradeço.
[22] Comentário enviado por rickardofm em 21/07/2008 - 10:18h
Olá... CAROS... esse script acima é muito show para iniciantes em sistemas de balanceamento em linux e funciona muito bem, porém algumas
coisas deve ser incrementados. O msn na sua rede por exemplo vai se desconectar toda hora... mas isso é simples resolver marque
os pacotes dele para sair por um único link, isso vale p/ outros serviços tbm.
Utilizei um parecido fazendo o mesmo marcando todos os pacotes de cada interface nos forwards, utilizando kernel 2.4.x e utilizei o
mesmo com kernel 2.6.x q se comportou com um certo melhor desempenho devido a um fato importante, sem marcação de pacotes
q isso não precisou ser feito e funcionou perfeitamente, claro não esquecendo de marcar somente o msn e outros serviços.
Outra dúvida de todos é quanto a um link cair... bom vc pode resolver isso com um script simples no seu crontab vendo os gateways
se estão online.
Agora o fato q mata é um q parece q ninguem observou ainda... trabalho num provedor de internet eu tenho um server como
descrevi acima com o kernel 2.6.x e o q acontece é q quando um download é iniciado ele pode se congelar a qualquer momento
devido ao balanceamento trocar as conexões de lugar isso sim é um PROBLEMÃO q ainda não descobri a solução.
Té mais.
funcionando bem... com 4 LINKS de operadoras distintas e um fato acontece com os downloads
[23] Comentário enviado por ronaldho em 15/09/2008 - 12:07h
Achei muito interessante o script do amigo, quero lhe parabenizar pela atitude e inciativa e vale lembrar que este problema é muito comum e que esta iniciativa ajuda muita gente. Foi de grande ajuda com certeza, porém temos que notar que a solução fica um pouco incompleta com relação ao teste do link para perceber a queda de uma das conexões, eu particularmente procuro uma solução pra este problema a muito tempo e consegui uma solução baseada também em script que ajuda pra solucionar este problema da redundância de conexão. Vale lembrar que não é a reinvenção da roda e sim um complemento importante pra quem deseja implementar a solução citada acima. Existe uma documentação falando a respeito do problema que pode ser de grande ajuda.
[25] Comentário enviado por hugodeco em 20/08/2009 - 16:50h
Quem tiver alguma dúvida sobre este artigo me passa um e-mail e resolveremos então.
Eu lido com firewalls unix em grandes servidores e a pouco descobri esse mundo de comunidades e blogs
Antigamente não me sobrava muito tempo
[28] Comentário enviado por rudiberto em 30/01/2013 - 19:31h
Olá pessoal,
Tenho no meu servidor gateway (Debian Squeeze), 3 placas de rede, eth0 (rede interna), eth1 (Link Velox) e eth2 (Link GVT). Eu gostaria de fazer o seguinte: todo o acesso aos domínios .gov.br, .edu.br e .blogspot.com, sair pela eth1 (Link velox) e o restante sair pela eth2 (Link GVT. Esse é só um exemplo do cenário, é claro que a quantidade de domínios será maior.
Já pesquisei bastante na internet e até agora não encontrei nada que resolva o meu problema, solicito aos amigos do Software Livre, que me ajudem a encontrar uma solução para esse problema.
[29] Comentário enviado por marquinhos1875 em 01/02/2013 - 10:04h
Ei rudiberto, pesquise roteamento por destino, daí você cria duas listas e chame-as com um "for" no seu firewall.
Existe muito material sobre roteamento por origem na net, pra adaptar para destino e fácil.
Só tem um problema, eu desconheço o uso de coringas com iptables, então teria que trabalhar com o domínio completo, algo como *.gov.br não funciona