Conexões redundantes à Internet utilizando Linux

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.

[ Hits: 231.241 ]

Por: MrBiTs em 23/03/2005 | Blog: http://www.mrbits.com.br


Definições e metodologia



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.

Página anterior     Próxima página

Páginas do artigo
   1. Objetivos
   2. Configurações do kernel e pacotes adicionais
   3. Definições e metodologia
   4. Configurações de roteamento
   5. Conclusão
   6. Script completo
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Instalando o Blackbox

Reduzindo problemas de atualizações no Debian, Ubuntu e derivados - Parte 2

Linux no Pendrive

Incrementando o visual do KDE 4

Dhcp3-server e Bind9 no Debian 4 Etch Linux

  
Comentários
[1] Comentário enviado por bhl em 24/03/2005 - 08:41h

Mas se a sua conexão do Virtua cair, os pacotes poderão tentar sair pela rota do gateway do Virtua e terão problemas (isso aconteceu comigo).

Esse script é para balanceamento de carga (load balance) e não redundância de link. Ou estou enganado?

[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.

[]'s

[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.

Como fazer?
Agradeco a atencao desde jah.

Edwin Floriani

[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.

Alguém tem alguma sugestão?

Abs,

Segalla

[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?

Fico no aguardo da ajuda.

Obrigado.

Ass Claudio Rulim
E-mail: crulim@uol.com.br

[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 $$$$$$$$$!!!!!!!!!!

[10] Comentário enviado por standart em 22/07/2006 - 14:50h

Olá amigo!!!

Preciso muitissimo de uma orientação....Inves de 2 links eu preciso fazer com 3 links...em que pontos do script terei de auterar?

Peço que me ajude..

isaac@barreirasnet.com.br

[11] Comentário enviado por fabiolima em 13/09/2006 - 15:24h

Boa tarde mrbits,

Faço da pergunta do CRULIN a minha!!!!!

Aguardo resposta

[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!

[13] Comentário enviado por removido em 11/11/2006 - 20:01h

pq o autor nao responde nenhuma pergunta ?

[14] Comentário enviado por joabes em 23/11/2006 - 17:25h

Afinal esse script faz a divisão do trafego entre os links? ou é para um link assumir quando outro cair?

Cordialmente
Joabes

[15] Comentário enviado por balani em 12/12/2006 - 01:44h

marquinhos1875, não entendi direito o seu problema.

[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?

[17] Comentário enviado por iadias em 11/06/2007 - 20:23h

o link esta off line alguem poderia me enviar ????

[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??

desde ja grato

e artigo MUITO SHOW ja ta nos meus favoritos

[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!!!!

http://www.vivaolinux.com.br/comunidades/verTopico.php?codigo=191&codtopico=13485

[20] Comentário enviado por tecnoenger em 02/02/2008 - 20:17h

O link do script * http://www.mrbits.com.br/tutoriais/redundantconn.sh esta com permissão negada para acesso.

[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.

http://blog.taragana.com/index.php/archive/how-to-load-balancing-failover-with-dual-multi-wan-adsl-c...

[24] Comentário enviado por comfaa em 17/09/2008 - 15:34h

uma duvida,
o gateway do usuario é um só né ?

[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

hugodeco@hotmail.com
esse é meu e-mail e msn !

[26] Comentário enviado por nox6000 em 31/08/2009 - 08:37h

O que tenho que fazer de diferente para configurar 2 velox em um servidor e que esses velox NÃO TENHAM IP FIXO.

Tem alguma ideia?

[27] Comentário enviado por carlos.renato em 20/05/2011 - 11:15h

Parabéns pelo artigo.....no meu caso tenho speedy com ip fixo e virtua com ip dinamico, como faço para usar seu script?

Abraço, Carlos

[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


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts