Configurando 2 (dois) links ADSL no mesmo servidor

Nesse artigo mostrarei como configurar, iniciar e autenticar 2 (dois) links ADSL em um mesmo servidor, além de fazermos um balanceamento nesses links aliviando muito o tráfego de nossa rede. Falaremos também um pouco sobre roteamento avançado em Linux, pois iremos usar esse incrível recurso disponível para fazer o balanceamento.

[ Hits: 360.144 ]

Por: Guilherme Rezende de Almeida em 30/11/2005


Propósito do artigo



Quando tive meu primeiro problema de alto tráfego em uma empresa que presto serviço, observei que precisaria usar algum recurso disponível no Linux para que eu pudesse contratar um segundo link de conexão com a internet, bem como utilizar os dois simultaneamente.

Tal empresa possuía um link ADSL (velox) de 1MB, porém o link estava ficando saturado em grande parte do dia (e isso porque já fazia controle de banda e cache de HTTP também!), dando para perceber a dimensão da rede. Meu objetivo era contratar mais um velox de 1MB, configurá-lo no mesmo servidor e construir um Advanced Router em Linux. O Kernel do Linux pode nos proporcionar a utilizar os recursos de roteamento dinâmico e roteamento estático.

* Característica de um Advanced Router fazendo roteamento dinâmico

1. Com o servidor tendo duas saídas de internet, o kernel iria utilizar as duas, porém para a primeira requisição que chegasse da LAN ele utilizaria a saida1 de internet, para a segunda requisição ele utilizaria a saida2, para a terceira requisição ele utilizaria a saida1 e assim por diante.

Eu teria uma desvantagem com esse recurso, pois suponhamos que se um IP fizesse uma requisição de download de um arquivo de 600MB e o mesmo fosse um IP de propriedade do dono da empresa, onde a sua velocidade de link configurada fosse de 512Kbps com prioridade máxima para esse IP. Quando o download fosse se estabelecer, ele obrigatoriamente teria que sair por um link, consumindo assim quase todo o recurso desse link. Porém, quando uma outra requisição fosse passar por esse link já saturado pela conexão do dono da empresa, a conexão ficaria lenta e quem desse a sorte de sair pela as outras iria se dar bem. Podemos observar nesse hipotético exemplo onde temos 2Links de 1MB cada, onde jamais iremos conseguir fazer um download com a taxa de 2MB e sim fazer 2 downloads com a taxa de 1MB cada.

Mesmo com essa desvantagem, eu queria utilizar esse recurso na empresa, pois não iria me preocupar com a queda de qualquer um dos links, pois o kernel já se encarrega de fazer os ajustes em suas rotas automaticamente. Mas depois de muito estudo e pesquisa, pude comprovar que esse recurso não funciona com NAT. Ou seja, ele funciona muito bem em uma rede com IP válido, onde o servidor faria realmente um papel de roteador. Não irei abordar nesse artigo por quê esse recurso não funciona com NAT, pois é um problema difícil de ser explicado e melhor entendido na prática (eu mesmo só fui entender vendo esse problema acontecer).

* Característica de um Advanced Router fazendo roteamento estático

1. Com o servidor tendo duas saídas de internet, o kernel poderia utilizar algumas classes ou IP's para sair especificamente pela saida1 ou saida2. Isso seria um roteamento feito por origem de IP's ou classes de uma rede.

Por exemplo: os IP's de origem sendo 10.12.0.10 e 10.12.0.11 teriam como rota específica a saida2 de internet ou as classes de origem sendo 10.13.0.0/24 e/ou 10.14.0.0/24 também teriam como rota específica a saida2 de internet.

2. Também poderia usar um excelente recurso de marcação de pacotes para fazermos o roteamento. Com isso, podemos marcar todos os pacotes com destino aos serviços http, pop, smtp, etc.... Sendo assim, podemos rotear esses pacotes marcados com um número qualquer pela saida2. Com isso podemos definir o seguinte esquema de roteamento:

Pacotes com destino aos serviços de http e https vão sair pela saida2 de internet e o restante irá sair pela saida1.

A pergunta que deve está na cabeça dos leitores que estão lendo artigo nesse exato momento é a seguinte:

E se um dos links cair? O kernel irá fazer a mudança de rota automaticamente?
R.: Não. Se um dos links cair, teremos que fazer a mudança de rota na mão mesmo. No final desse artigo iremos ver tudo isso na prática, onde as coisas irão ficar mais claras.

No meu caso, eu já sabia que o maior vilão de consumo de link era o protocolo http e em virtudes disso elaborei uma saída específica para esse serviço, sendo o link2. Os demais protocolos seriam roteados a saírem pelo link1.

O recurso de roteamento estático no kernel do Linux é extremamente estável, podendo ser adaptado para diferentes situações.

Nota: Estes recursos encontram-se disponíveis a partir da série de kernel 2.4.20 ou superior.

    Próxima página

Páginas do artigo
   1. Propósito do artigo
   2. O Linux e suas tabelas de roteamento
   3. Configurando e autenticando o primeiro link ADSL
   4. Configurando e autenticando o segundo link ADSL
   5. Fazendo o NAT e adicionando rotas na tabela
   6. Um pouco mais sobre Advanced Router
Outros artigos deste autor

VPN em Linux com OpenVPN

Leitura recomendada

DNS no Slackware

Instalando e configurando modem SpeedTouch 330 USB no Slackware 10

Configurando uma conta do Yahoo no Evolution

Zenwalk Core: Para quem só quer o essencial

Debian NetInstall: instalação personalizada

  
Comentários
[1] Comentário enviado por leandroleal em 30/11/2005 - 01:37h

Bom o seu artigo.
Já viu algo sobre dobrar a banda?
Abraços....

[2] Comentário enviado por guilhermerezende em 30/11/2005 - 02:14h

Só se for em link síncrono e tem que ser feito em conjunto com sua operadora. Ex: 2 links de 2MB cada. Mas isso não da para fazer com NAT e sim com ips roteáveis na internet.

[3] Comentário enviado por black_burn em 30/11/2005 - 09:05h

po kra, realmente seu artigo ficou mto show..

eu estava a procura de como fazer isso aqui no meu pc :)

Parabéns

[]'s

[4] Comentário enviado por kamal em 30/11/2005 - 10:26h

Parabens companheiro. Com artigos de alto nivel como o seu podemos disseminar o conhecimento a todos.

Hugo Leonardo

[5] Comentário enviado por agk em 30/11/2005 - 14:06h

Muito o artigo, parabéns. Realmente parece bem complexo esse processo de adicionar dois links em um mesmo servidor, mas o artigo está dez, com essas explicações fica mais fácil.

[6] Comentário enviado por patrickbrandao em 30/11/2005 - 17:04h

SHOW!!!!!

Muito legal mesmo Guilherme!
Andei descobrindo muita coisa e em breve vou escrever meu artigo sobre roteadores linux, que também vai ser minha tese na faculdade!

continue assim amigo hacker!

[7] Comentário enviado por luiscarlos em 01/12/2005 - 10:06h

Sempre quis saber como realizar essa proeza que acabou de demonstrar e agora vc me entrega de mão beijada, simplesmente nota 10, eu que não tinha idéia de como começar a resolver esse tipo de problema consegui entender tudo, seu artigo está mais que ótimo, parabéns!!!!!!!

[8] Comentário enviado por duduellery em 01/12/2005 - 17:54h

Guilherme, o artigo é muito bom e sanou minhas dúvidas, principalmente no que diz respeito as regras. Só que possuo um servidor com squid e as contas de correio ficam nele tb, o que não vai adiantar muito já que o localhost não "respeita" essas regras. Existe alguma maneira de obrigar ele a seguir as regras criadas?

[9] Comentário enviado por terranova em 01/12/2005 - 21:12h

Tem como fazer esse balanceamento com um link adsl (speedy) e um link que pega ip por dhcp sem precisar se autenticar (virtua)?
Seu artigo ficou muito bom, parabéns.

[10] Comentário enviado por guilhermerezende em 02/12/2005 - 09:22h

Respondendo ao menbro duduellery. Tem sim, é so vc colocar o "default gateway" na tabela default e não na tabela main, mas não aconselharia vc a fazer isso. Lembres-se que suas contas de e-mails estão no próprio servidor, o que não vai adiantar muito mexer com rotas!!
Respondendo ao menbro terranova. Nesse artigo eu abordei o uso do velox que tbm usa ip dinâmico! Por isso tem sim! Seu ip sendo dinâmico, ele vai mudar sempre, mas provavelmente o ip do router não vai mudar,(velox é assim) e é desse ip que vc precisa para aplicar as rotas e regras de roteamento.

[11] Comentário enviado por tuxlinuxbr2 em 02/12/2005 - 14:56h

muito bom seu artigo!!! parabéns!!! olha... tem como voce compartilhar seus scripts para autenticacao, tipo assim o ip sempre vai mudar entao... teriamos "teoricamente" que fazer isso na mao nao é verdade? porém se puder compartilhar o script p/ fazer isso automatico agradeço.

abraços

[12] Comentário enviado por wtm em 09/12/2005 - 20:03h

Olá Guilherme, primeiramente parabéns pelo artigo!
Verificando o comentário do duduellery observei a situação semelhante com a que tenho, o meu servidor também tem o squid e com isso eu não consigo fazer a saída do "http" ir pelo link que eu quero, vi que você mencionou colocar o "default gateway" na tabela default, fiz isso mas também não funcionou, alguma sugestão? Abraço!

Adicionado:
Olá Guilherme, vendo este site: http://wiki.luizgustavo.pro.br/doku.php?id=artigos_geral:rotasquid#discussion
Tem uma informação sobre o "tcp_outgoing_address" que segundo o site você pode definir qual o gateway que o squid deve utilizar, fiz o teste mas não funcionou, apresentou o erro de "Cannot assign requested address" e "Socket Failure".
Abraço!

[13] Comentário enviado por guilhermerezende em 12/12/2005 - 10:42h

Normalmente as pessoas usan o parâmetro citado acima no squid.conf(tcp_outgoing_address), mas eu nunca usei.
Tenta colocar algo como em seu squid.conf
Tcp_outgoing_address 200.x.x.x #que seria o segundo gateway

[14] Comentário enviado por CesarFilho em 14/12/2005 - 02:41h

Olá, parabens pelo artigo...
Usei este artigo apenas para ter 2 ips na mesma maquina, pelo mesmo processo citado por você acima.
Rodo servidores http, ftp e etc.
Meu problema é que mesmo depois de subir e autenticar as 2 conexões o ip da segunda fica inacessível "por fora"! Meus servidores são normalmente acessados externamente pelo ip de ppp0 mas não pelo ip de ppp1...
Vale lembrar que configurando ppp1 como ip "padrão" da rede eu consigo acessar qualquer site, qualquer servidor e etc (indicando que o ip esta ativo e autenticado).
Vocês têm alguma idéia do que pode estar causando isso?
Agradeço desde já!

[15] Comentário enviado por guilhermerezende em 14/12/2005 - 18:09h

Isso acontece porque a rota padrão na tabela "main" é rota de ppp0. O pacote até chega na sua interface ppp1 quando vc tenta acessa-lo de fora, porém ele se perde quando tenta retornar a origem, pois ele tentará voltar pela ppp0. Isso até teria que funcionar em link síncronos, mas acredito que deve ser as tabelas de roteamento dos routers da telemar que não deixa isso acontecer.

Abs e espero que consiga entender. Eu nem me toquei nesse pequeno detalhe!!!!

[16] Comentário enviado por CesarFilho em 14/12/2005 - 23:09h

Entendí sim =) Eu realmente já estava imaginando que poderia ser isso pois eu tava tendo problemas quando configurava ppp1 como ip padrão para uso externo; neste caso ppp0 ficava inacessível de fora...
De qq forma vlws! Vou tentar resolver... Se tu tiver alguma idéia de como fazer isso, se possível, escreva outro artigo pois acho q ajudará muita gente!
[]'s

[17] Comentário enviado por shin_ragnarok em 04/01/2006 - 15:54h

Meus parabéns!!!

acho que é um dos artigos mais impressionantes aqui do vol...

implementei na empresa onde trabalho, com as modificações necessárias e, nossa...
FUNCIONOU que é uma beleza..

tudo separadinho, fácil de se entender...

que maravilha...

muito obrigado e parabéns!!!

[18] Comentário enviado por guilhermerezende em 05/01/2006 - 11:52h

Estarei sempre publicando o de que puder ser de melhor para a toda a comunidade! Qualquer coisa estamos ai! Abraços e suscesso com o Linux em seu trabalho

[19] Comentário enviado por mbmaciel em 29/03/2006 - 16:39h

Muito bom artigo. Já foi para os meus favoritos !

[]'s

[20] Comentário enviado por Foxtor em 30/04/2006 - 08:10h

E ai Guilherme blz?
Primeiramente PARABENS pelo artigo.
Olha só, estou com um probleminha aqui pra fazer um roteamento. Tenho dois modens discados um USR Externo e outro Smartlink PCI. Os dois conectam normalmente e ao mesmo tempo. O Smartlink esta configurado na porta /dev/modem (ppp0) , e o USR esta na porta /dev/ttyS0 (ppp1), como disse conecto os dois ao mesmo tempo sem problemas de conflito nem nada, mas so consigo usar uma conexao por vez.
Agora te pergunto, como faço pra redirecionar as duas conexoes em uma? Pois ja andei pela internet afora e nao encontrei nada q me sirva e como tambem estou iniciando no linux necessito de uma ajudinha.So acrescentando q eu gostaria de fazer isso num unico PC q nao faz parte de uma rede.
Caso possa me esclarecer essa duvida e me ajudar a configurar fico muito grato, pois estou realmente precisando fazer esse roteamento.
Obrigado. Abraço.

[21] Comentário enviado por JoaoJunior em 26/07/2006 - 18:29h

####################
"Adicionado:
Olá Guilherme, vendo este site: http://wiki.luizgustavo.pro.br/doku.php?id=artigos...
Tem uma informação sobre o "tcp_outgoing_address" que segundo o site você pode definir qual o gateway que o squid deve utilizar, fiz o teste mas não funcionou, apresentou o erro de "Cannot assign requested address" e "Socket Failure".
Abraço!




Comentário enviado por guilhermerezende em 12/12/2005:

Normalmente as pessoas usan o parâmetro citado acima no squid.conf(tcp_outgoing_address), mas eu nunca usei.
Tenta colocar algo como em seu squid.conf
Tcp_outgoing_address 200.x.x.x #que seria o segundo gateway

"

####################
ola ...

tenho um link dedicado telemar e um velox ...
consegui fazer mesmo antes de ver seu artigo que por sinal, ficou mto show.. bom.. quanto ao squid, dá certo... pois tbm o fiz..

#crie uma acl
acl Rota_Link url_regex msn.com gateway orkut.com

#crie a saida atraves da Link
tcp_outgoing_address 200.200.200.200 Rota_Link

#crie a saida atraves do velox, repare que todo resto sai pelo velox...
tcp_outgoing_address 192.168.1.2 all

salve o squid e reconfigure..

feito isso.. altere seu firewall

iptables -A PREROUTING -t nat -o eth0 -j SNAT --to-source 200.200.200.200
iptables -A PREROUTING -t nat -o eth1 -j SNAT --to-source 192.168.1.2

feito isso.. certifeque se a rota ...
rota padrao é do Link.. entao nao precisa mexer...
rota do velox:

echo "200 velox" >> /etc/iproute2/rt_tables
ip rule add from 192.168.1.2 lookup velox
ip route add default via 192.168.1.1 table velox



é isso..

pra checar se funcionou.. coloca na acl o site meuip.com.br ... teste.. depois remova... e compare os ips ;)


sei que to atrasado.. mas espero ter ajudado.. ;)

abraços....

[22] Comentário enviado por cams em 25/10/2006 - 09:05h

show de bola ...muito detalhado seu artigo..parabens vou v se consigo implementar aqui na empresa...tava mesmo precisando de um artigo desse tipo.....e mais uma vez

Parabens!!!!!!!!!!!!!!!

[23] Comentário enviado por t4t0 em 07/11/2006 - 15:05h

dae cara.,... uma pergunta.... ve se dá para fazer isto:
http://www.vivaolinux.com.br/perguntas/verPergunta.php?codigo=52308

[24] Comentário enviado por White_Tiger em 08/11/2006 - 15:12h

Mas isso não é balanceamento de link. Eu toh querendo um sistema que realmente balanceie os links, independente de protocolo.

[25] Comentário enviado por ivan.cr.neto em 12/11/2006 - 12:27h

Valeu cara!!! me ajudou bastante!!! era tudo que eu precisava
pra acabar com essa dor de cabeça aqui!

[26] Comentário enviado por capitainkurn em 20/11/2006 - 16:11h

Excelente artigo! Parabéns e obrigado por compartilhar com a comunidade seu trabalho!
Meus parabéns ao Patrick também, com quem tive a satisfação de trabalahar ele é uma pessoa formidável.

[27] Comentário enviado por arcanjo2891 em 29/11/2006 - 17:02h

Guilherme, show de bola seu artigo, sou novato aqui na comunidade.
Não seria interessante você inserir a autenticação direto no modem da telemar ? Eu autentico minha conexão direto no speed stream 5200 que eu tenho... Tenho um provedor wireless de banda larga rodando infelizmente ainda com windows xp com 3 velox de 2 MB. ainda estou em duvida em qual controle de banda fazer, se vai ser com cbq ou com squid... estou lendo varios artigos aqui neste site falando sobre os dois... sei que acabei fugindo do seu artigo mas sabe dizer se consigo trabalhar com squid e cbq ao mesmo tempo ?

por que da pergunta?

Gostaria de controlar a banda para 600k pra todo mundo, porém se a pessoa estiver baixando algum arquivo que esteja no cache do squid, queria que baixasse na velocidade da rede local, atualmente 54Mb(por ser wireless).

No XP consegui atingir rodando o FreeProxy 5MB(acreditem é MegaByte não Megabit)

Acredito que com Linux consiga mais, Não aguento mais travamentos do XP.

Abs,


Antonio

[28] Comentário enviado por linuxdebian em 06/12/2006 - 19:11h

Seu artigo está muito fácil de entender, mas estou tenso um pequena dúvida na hora de fazer a parte dos ADLS, popr que estou uisando o Debian.

[29] Comentário enviado por deivis em 04/02/2007 - 15:36h

Muito bom artigo... adoro rotas... rsrsrs
Seu artigo é muito exclarecedor!

Abraços.

[30] Comentário enviado por demattos em 03/03/2007 - 09:46h

Gostei muito do artigo estava pesquizando sobre isto para implantar em meu servidor, com que li ficou mais claro

t+

[31] Comentário enviado por gzanatta00 em 09/04/2007 - 12:38h

amigo tenho dois adsl, meu servidor tem 3 links, quando coloco o squid os clientes comecao a navegar tudo pelo mesmo link....
tem alguma configuracao dentro do squid que possa deixa isso normal?

[32] Comentário enviado por jpd_viana em 18/05/2007 - 11:33h

Cara esse artigo me ajudou muito só agora eu entendi que linux é mesmo muito bom. Valeu.....

[33] Comentário enviado por cytron em 19/05/2007 - 04:00h

Muito bom! Com esse artigo aprendi bastante sobre as tabelas, acabei de fazer um balanceamento com 3 links dedicados.

[34] Comentário enviado por joabes em 19/05/2007 - 11:42h

Caros, algun dos amigos teve esse problema e como resolveram.

O load funciona blz, só que consume uma alta taxa de disco, é impressionante como ele consome disco do servidor, como fazer para corrigir isso ou limpar?

Cordialmente
Joabes

[35] Comentário enviado por removido em 27/05/2007 - 13:52h

Também estou com a mesma dúvida do joabes.

[36] Comentário enviado por adrianoturbo em 26/06/2007 - 17:39h

Sensacional para balancear a conexâo.
Parabéns pelo o artigo.

Boa sorte !

[37] Comentário enviado por brunokino em 28/07/2007 - 10:05h

Grande artigo..........
parabéns....

[38] Comentário enviado por albertoaalmeida em 28/07/2007 - 10:41h

Caro colega muito bom o artigo... Parabéns,..

[39] Comentário enviado por santocyber em 30/07/2007 - 15:05h

Estou tentando fazer isso mas nao funciona, alguem poderia me ajudar, nao consigo nem pingar o modem do segundo link, como posso resolver esse problema!

agradeco desde ja!

[40] Comentário enviado por iandecy em 30/07/2007 - 22:49h

tem como configurar 2 links ? um a cabo e outro a Rádio ?

[41] Comentário enviado por luancfalquetto em 22/08/2007 - 16:01h

olá, estou com a mesma dúvida do iandecy, funciona com outro tipo de serviço, rádio, cabo ou qualquer outro tipo?
obrigado

[42] Comentário enviado por xbrennox em 24/08/2007 - 11:52h

Primeiramente, Parabéns pelo artigo, muito bom mesmo.

Bom, aqui na empresa tenho 2 links, eth1=Embratel ip fixo
ppp0=velox.

Com base no seu artigo, fiquei até 2 horas entendo e colocando em pratica o que foi dito.

Bom fiz piquenas mudanças mas a priore não deu certo.

Passos:

Crirei tabala velox

o GW na tabela main ta com a embratel. na tabela velox adicionei o GW do mesmo.

#ip route add default dev ppp0 via 200.217.76.56 table velox

obs:ip acima foi só como exemplo

Lipei todo meu firewall só deixando as regras citadas nessa documentação

# iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 80 -j MARK --set-mark 1

# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

lembrando que fiz a parte da autenticação da velox como você descreve no artigo.

em seguida joguei os pacotes marcados para tabela velox
#ip rule add fwmark 1 lookup velox

e ativei a mesma
ip route flush cached

com iptraf e iptables -L -v -t nat -n

Conseguir monitorar a saida do pacote na porta 80, realmente ele sai pela ppp0, mas não consigo navegar.
Como se pacote saisse e não voltasse.

to faltando algo?
fiz algo de errado?

Se alguém puder ajudar, agradeço dez de já.

Att,.


[43] Comentário enviado por xbrennox em 27/08/2007 - 16:53h

Boa tarde a todos,


Passei a madrugada toda mexendo e cheguei a conclusão que o problema está relacionado ao S.O (kernel) ou algo do tipo.

Estarei atualizando Debian sarge para eath, assim que fizer, postarei avisando.

Mais uma vez, excelente artigo. Parabéns .

[44] Comentário enviado por awesley em 12/09/2007 - 23:22h

Primeiro Parabens pelo artigo !

mas preciso de um help.

Estou usando o ubuntu 7.04 como roteador firewall

A estrutura é o seguinte:

02 links de entrada:

eth1: 200.204.xx.xx ( fixo )
eth2: 201.200.xx.xx ( fixo )

01 link para rede local
eth0: 192.168.x.x

o que eu preciso é apenas fazer uma redundancia... se o link 1 cair o outro assume automaticamente, porém qdo. esse link "1" voltar , ele assume a responsa.. pois ele é melhor que o numero 2.

Fiz um procedimento que está acima:
http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=4106&pagina=1

Mas não deu muito certo.
Vamos ao problema:

Se o link 1 cai, o link 02 não assume, a não ser que eu fisicamente execulte um ifdown eth1, ai o link 2 assume na hora.

Qdo. o link 1 volta ( eu tenho que dar um ifup eth1 ) e ele não se torna principal.. todos continuam saindo pelo link 2

Para que o link 1 assuma novamente eu tenho que executar um ifdown eth2

Podem me ajudar.

No Debian, qdo. um cabo de rede é retirado ele manda uma mensagem de " cabo desconectado " mas não execulta ifdown.. pode ser um começo de ideia.
mas o problema é que eu não sei qual o serviço que é responsável por isso !

[45] Comentário enviado por beto_rvs em 25/09/2007 - 20:21h

Estou tendo problemas com roteamento aqui.
o PPPoE tá estranho e deem uma olhada na minha saída do ip route:

200.217.72.144 dev ppp0 proto kernel scope link src 201.58.197.2
192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.100
default dev ppp0 scope link

to achando estranho após o default nao devia ser assim:
default "via ip" dev ppp0 scope link

num é?? ou num tem problema??

[46] Comentário enviado por saymon em 07/10/2007 - 00:15h

muito bom...

[47] Comentário enviado por renatopradop em 12/10/2007 - 09:30h

So pra facilitar um pouco sua vida, vc poderia deixar os modens roteados, que assim eles mesmos se conectam sem precisar usar o autenticador do linux, onde eles mesmos ficam responsaveis pela reconexao no caso de uma queda do link, e pode implementar mais ainda, fazendo um script caso o link caia, ele te avise por e-mail - no caso de vc ter email interno logicamente-, no mais ta muito boa essa solucao, parabens... um abraco.

[48] Comentário enviado por diogobruno em 16/10/2007 - 07:40h

Excelente artigo!!!

[49] Comentário enviado por arlindom.correa em 25/10/2007 - 17:54h

Legal o artigo, bem detalhado, pena que não tenho como testar mas, quando eu tiver está necessidade vou recorrer a este artigo.

[50] Comentário enviado por afrox em 14/12/2007 - 16:58h

Outro dia um amigo estava reclamando, precisava configurar 2 links ADSL e não sabia como, lembrei desse artigo e passei para ele o link...
vlw

[51] Comentário enviado por bl4z3 em 17/01/2008 - 09:25h

massa o artigo, eu estava procurando algum jeito de direcionar o trafego para 1 link. Http pra link1 e o resto pra link2, vc chegou a fazer algo assim pelo iptables?

[52] Comentário enviado por demattos em 24/01/2008 - 21:13h

Muito bom o artigo, mas gostaria de fazer o roteamento por clase de ip de origem, sera q vc pode me dar uma luz.

Obrigado

[53] Comentário enviado por ricardorf7 em 25/01/2008 - 16:30h

Muito bom, vou utilizar aqui na minha rede, no meu caso vou usar para manter um link inteiro dedicado ao meu servidor WTS, então vou marcar os pacotes que chegarem pela porta 3389 do link 01, saiam por ele mesmo sendo que o gateway defalt sera o do link 02.

Espero que funcione.

Obrigado

[54] Comentário enviado por edupopov em 17/08/2008 - 17:03h

Ótimo o artigo. Agora vou testar e vejo se resolve meu problema aqui dentro da empresa.

Tks

[55] Comentário enviado por OSiriX em 21/08/2008 - 01:19h

é maneiro seu artigo .. ^^
legal .. muito resumidozinho facil o entendimento .. ^^

parabens ..

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

cara, muito bom esse artigo, de alto nível

[57] Comentário enviado por zend em 27/11/2008 - 22:11h

otimo artigoooooo

tirei muitas duvidas para o meu servvvv....
abraços

[58] Comentário enviado por lanaf em 09/01/2009 - 17:12h

Amigo eu acho que estou precisando exatamente disso, me diz uma coisa essa solução server pra situação abaixo:

Estou montando um proxy que possui 4 placas de rede 2 para links de internet sendo que um e uma rede de fibra e a outra e um link contratado com uma operadora de telecomunicação e as outras duas para Rede interna e DMZ, o que eu preciso e que quando um dos link s de internet ficar inoperante o outro automaticamente fique ativo sem que o pessoa fique sem o acesso a internet.

Essas solução server?
Valeu

[59] Comentário enviado por cytron em 10/01/2009 - 00:39h

lanaf, o que você precisa é de Bonding. Utilizando essa técnica seu servidor coloca os dois links para responder como se fosse apenas um, mas somando as velocidades. Se você tem dois links de 2 Mb então você terá apenas um link de 4 Mb. Se um dos links fique down então o outro continua normalmente, quando ele voltar tudo continua como antes. Dá uma olha esses dois artigos:

http://www.vivaolinux.com.br/artigo/Balanceamento-e-alta-disponibilidade-com-Bonding

http://www.vivaolinux.com.br/artigo/Load-balance-e-alta-disponibilidade-com-Bonding

Depois que passei a utilizar bonding parei de ter ataques do coração hehehehe! Nem me lembro que tenho links.

Essa técnica pode ser aplicada também em algumas áreas da sua rede, "dobrando" a velocidade de comunicação entre servidores e garantindo a alta disponibilidade no caso de defeitos em cabos ou placas. (Quem não tem fibra ótica... usa Gigabit + Bonding)

[60] Comentário enviado por deivis em 10/01/2009 - 11:45h

Cytron,

E no caso de Bonding em Balance-rr como fica a questão de rota padrão?

[61] Comentário enviado por cytron em 13/01/2009 - 20:59h

Tabela de roteamento.

Assim vc coloca um gw para cada interface.

[62] Comentário enviado por deivis em 13/01/2009 - 21:05h

E será que rola um exemplo? =)

Valeu.

[63] Comentário enviado por cytron em 13/01/2009 - 21:33h

Uai! Nesse artigo guilhermerezende tá mostrando:

http://www.vivaolinux.com.br/artigo/Configurando-2-(dois)-links-ADSL-no-mesmo-servidor/?pagina=2

[64] Comentário enviado por deivis em 13/01/2009 - 22:00h

O comentário que iniciou a discução enviado por lanaf, questiona a possibilidade de redundância e balanceamento de carga.
Você disse que fez isso com Bonding, eu questionei sobre a rota padrão, e você disse que o artigo do guilhermerezende exemplificava a solução, porém ao meu ver a solução garante um certo balanceamento de carga explorando a divisão de saída dos fluxos por tipo de tráfego utilizando tabelas de roteamento.
Porém se o link responsável pelo tráfego HTTP por exemplo for abaixo, não existirá redundância.
Novamente voltamos ao questionamento do lanaf.
"Como fazer balanceamento de carga e redundância DO ACESSO À INTERNET?"

Confere?

Abraços.

[65] Comentário enviado por cytron em 13/01/2009 - 22:40h

Tá certinho deivis, eu errei ao colocar o segundo link, mas já corrigi.
Só lí o início, nem percebi que tinha uma marcação de pacotes.

O segredo é ter as placas de rede com os links, criar as tabelas com a rota para cada link, fazer o bonding e unir as ethX em uma única interface bondind, que se encarrega automaticamente de fazer o balanceamento entre as interfaces, nesse momento os pacotes são endereçados aos respectivos gateways. Se uma interface morrer o bonding passa a enviar os pacotes somente pelas interfaces que estao ok, e fica verificando quando é que a interface volta.

Mas pra falar a verdade não gostei muito desse bonding depois que minha rede ficou mais complexa, estou desenvolvendo um balanceador, esse script faz um balanceamento mais a fundo, mas é utilizando técncas de controle de pacotes com iproute2. Pois minha rede conta com vários links, onde separo os grupos de clientes em planos distintos e alguns protocolos, assim posso aproveitar melhor os links que possui desemenhos diferenciados, como um link de 4 mb da Embratel e 4 mb da Oi, são bem diferentes.

Quando meu script estiver pronto vou colocar no VOL.

[66] Comentário enviado por lanaf em 14/01/2009 - 11:40h

Valeu cytron, irei testar essa solução.

[67] Comentário enviado por lanaf em 26/01/2009 - 18:11h

Amigos, uma outra duvida, a velocidade de cada link e e os endereços validos são diferentes, usando o bonding funciona ou não ?
Andei testando achei muito maneiro pois veio a duvida acima.
VAleu

[68] Comentário enviado por clicsis em 11/02/2009 - 10:17h

Bom dia pessoal.
Implementei uma solução semelhante, usando o tutorial:
http://www.gulbf.com.br/?q=node/26

...estou conseguindo o Proxy Transparente e a questão do balanceamento, o problema é que meu sistema de controle de banda usando o CBQ.sh parou de funcionar, não se se pelo fato de que com o balanceamento passamos a ter 2 saídas para a NET e com isso o CBQ não consegue monitorar.

Alguem já passou por esse problema?

Postei a dúvida em:
http://www.vivaolinux.com.br/topico/provedores/CBQ-parando-de-funcionar/

Desde já, agradeço.

[69] Comentário enviado por clicsis em 13/02/2009 - 08:56h

Bom dia.
Fiz o balanceamento, já consegui resolver a questão do CBQ só que:
Todo o tráfego está se concentrando no 1º link e só passa para o 2º link caso o 1º pare. O desejado seria que, caso houvesse uma demanda acima de 1MB que é capacidade de cada um dos link, o 2º pasasse a ser usado ou então que o tráfego fosse a todo momento dividido entre os dois links, alguem sabe o que pode está acontecendo?

desde já, novamente agradeço.

[70] Comentário enviado por terranova em 15/04/2009 - 14:50h

Estou efetuando o balanceamento conforme o artigo só que estou utilizando 2 links da CTBC e esta ocorrendo o seguinte:
Redirecionei todo o trafego de minha maquina para sair pelo segundo link e quando faço um ssh para um servidor que esta fora da minha rede em um cliente que tem virtua consigo efetuar o login normalmente, agora quando faço o ssh para outro servidor que esta na matriz da empresa que esta utilizando um speedy não consigo efetuar login, verifico nos logs que o servidor da matriz gera e a requisição de ssh chegou lá, mas não aparece pedindo a senha pra mim.
Isso pode ser problemas no speedy ?

[71] Comentário enviado por demattos em 20/05/2009 - 21:03h

Boa Noite, estou fazendo conforme o artigo propoe mas surgiu uma duvida eu tenho um link dedicado da Brt de 2Megas eu queria aplicar o artigo somente para ter rotas de saidas com ip diferente ou seja para q minha rede nao sai somente por um ip e saia por outro, entao fiz o seguinte criei uma vlan e adcionei mais um ip a minha rede. so quando adiciono a regra a tabela q criei, regra esta para um ip somente saia por esta vlan, quando dou um ping ele mosntra o ip da vlan que pretendo sai para internet nao alcansou o Host. Poderia me dar uma luz.



[72] Comentário enviado por salatieldias em 29/05/2009 - 02:04h

Parabens Otimo artigo. consegui aplicar essas dicas em um servidor usando dois links da vivo 3g
direcionei parte da rede pra um link e o restante pra outro. ficou muito bom. graças a você
Meus parabens. Obrigado.

[73] Comentário enviado por srf em 11/06/2009 - 12:10h

Olá Guilherme, muito bom seu artigo...
Tenho um cenário parecido... talves possa me ajudar...
Até então eu só tinha um link 1 MB ADSL, a autenticação era feita pelo modem que tinha ip 10.0.0.1 que era o gateway da minha rede
e 10.0.0.2 ip da eth1 ligada no modem e 192.168.0.254 ip eth0 que era o gateway da rede interna....

Tudo funcionava... agora foi instalado um link dedicado para e-mails onde este passou a ser o link principal e o adsl o passou a ser o
secundario... preciso fazer sair somente a navegação pelo ADSL...

Pergunta: Se eu mater a autenticação no modem e trabalhar com os IPs 10.0.0.1 e 10.0.0.2 isso irá funcionar...
Pois tentei fazer e não funcionou...

Qualquer dica é bem vinda...

[74] Comentário enviado por manoserpa em 20/07/2009 - 20:43h

Parabéns!

[75] Comentário enviado por and_web em 13/12/2009 - 05:31h

pessoal quem poder me ajudar fico muito grato!

para o load balance uso esta regra para encamihar a porta 80 (navegação - tutorial do amigo Guilherme) para outro link:

iptables -t mangle -A PREROUTING -i eth0 -p tcp --dport 80 -j MARK --set-mark 1

e para redirecionar a porta 80 para o squid uso esta:

iptables -t nat -A PREROUTING -p tcp -m multiport -s 110.189.0.0/16 --dport 80 -j REDIRECT --to- ports 3128

o problema é o seguinte:
quando ativo o cache (squid com a regra acima) o load balance para de funcionar?

alguem sabe por que?
existe uma regra do iptables que eu possa usar o load balance + squid em conjunto no mesmo servidor?

via algo pelo squid com "tcp_outgoing_address" mas queria uma solução pelo iptables?

[76] Comentário enviado por pairus em 13/01/2010 - 08:59h

terranova vc esta com o mesmo problema que eu!

eu ainda não consegui resolver de uma maneira bonita!, mais pelo que tudo indica o problema esta no gateway padrão. O pacote chega por uma rede (a alternativa) e é respondido pela principal conforme configurado no route, com isso o pacote se "perde".

[77] Comentário enviado por linkdedicadooi em 02/02/2010 - 18:54h

descontos em link dedicado em ate 98% cancelamento de dividas antigas de link e fixo contestaçao de link contestaçao de fixo descontos em ipconnect
msn linkdedicadooi@hotmail.com on line de 11 as 13 e 23 as 1
ow mande email para linkdedicadooi@yahoo.com.br que responderei suas duvidas

[78] Comentário enviado por gustavo_cn em 20/08/2010 - 14:13h

Muito bom o artigo... a Minha dificuldade é que tenho 2links sendo que um é uma VPN e outro Sppedy com Ip fixo... só que já tenho um gateway da VPN que vou nomear aqui de "192.168.0.1" e o Speedy como "187.11.0.1". Pergunta: Como é possivel um micro "X" fazer o gateway das duas NTs, e o controle de saida ser feito no Firewall?

Att.

[79] Comentário enviado por caradepastel em 17/11/2010 - 12:51h

não está dando para baixar o script velox.pl
por favor disponibilize o script, obrigado.

[80] Comentário enviado por willian.barker em 15/02/2011 - 09:49h

Bom dia, quando eu retiro a regra de marcação e coloco a regra "ip rule add from 192.168.1.1" lookup "tabela" a estação que estou testando, fica lento a navegação e quando disparo um ping para uma página da web, também fica lento. O que pode ser? obrigado.

[81] Comentário enviado por willian.barker em 15/02/2011 - 10:51h

Dê uma olhada nos dois testes que fiz com ping o primeiro teste é com marcação da porta 80 e o segundo teste é por ip rule add from ipestacao table tabela.

O problema é que quando eu coloco regra por marcação eu cosigo navegar beleza pela estação, mas quando eu coloco a regra acima a conexão fica lenta.

1º teste:
****************************************************************************
PING google.com (64.233.163.104) 56(84) bytes of data.
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=1 ttl=250 time=165 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=2 ttl=250 time=166 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=3 ttl=250 time=173 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=4 ttl=250 time=175 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=5 ttl=250 time=196 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=6 ttl=250 time=182 ms

--- google.com ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 26121ms
rtt min/avg/max/mdev = 165.395/176.541/196.477/10.622 ms
****************************************************************************

2º teste:
****************************************************************************
PING google.com (64.233.163.104) 56(84) bytes of data.
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=1 ttl=53 time=211 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=2 ttl=53 time=63.3 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=3 ttl=53 time=55.4 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=4 ttl=53 time=57.4 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=5 ttl=53 time=56.1 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=6 ttl=53 time=57.5 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=7 ttl=53 time=328 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=8 ttl=53 time=57.4 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=9 ttl=53 time=56.6 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=10 ttl=53 time=71.8 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=11 ttl=53 time=61.0 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=12 ttl=53 time=56.4 ms
64 bytes from bs-in-f104.1e100.net (64.233.163.104): icmp_req=13 ttl=53 time=336 ms

--- google.com ping statistics ---
13 packets transmitted, 13 received, 0% packet loss, time 12036ms
rtt min/avg/max/mdev = 55.451/113.073/336.988/101.982 ms
****************************************************************************

Então observamos que o segundo teste a resposta do ping é mais rápida e consequentemente a navegação.

Se puder me dar uma dica do que preciso fazer, obrigado.

[82] Comentário enviado por lf_sm em 05/07/2011 - 12:31h

pessoal estou com um outro problema, que estou na seguinte situação

efetuei a configuração de acordo com o tutorail e ficou show, porém tenho uma necessidade especifica

ao redirecionar a porta 9000 do link 2, a mesma passa a informação para rede LAN, porém na resposta da rede tenho a saida pelo link 1.

estou quebrando cabeça a um tempo e não consegui achar uma solução.

marquei os pacotes, ja configurei na tabela mangle, porém so consigo responder pelo link 1 assim o contexto de comunicaçao não consegue ficar estabelecido pelo protocolo tcp/ip.

alguém poderia me dar um auxilio ?


[83] Comentário enviado por andfeh em 11/08/2011 - 00:24h

Bom dia lf_sm, cara eu uso o que vou te passar para controlar banda pelo mac, mas ja usei para fazer o que precisando, o segredo ta em utilizar a marca de conexão (connmark), só que a connmark nunca sai do iptables, entao tem que fazer o connmark associado a um mark, ai vc faz a marca nos pacotes para utilizar no ip route!

assim:

iptables -t mangle -A INPUT -m mac --mac-source ${MACOFF} -j CONNMARK --set-mark 213
iptables -t mangle -A POSTROUTING -m connmark --mark 213 -j MARK --set-mark 213

Sacou?

Abraços!

....na palavra fortaleço meus conhecimentos....

[84] Comentário enviado por lnredivo em 24/03/2013 - 16:59h

Excelente contribuição, parabéns...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor HostGator.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts