[GTER] Failover de link ADSL

Christian Lyra lyra at pop-pr.rnp.br
Fri Mar 20 08:48:17 -03 2009


Sugestão... não sei se funciona como deveria mas talvez valha a pena
(eu implementei boa parte dela, mas por motivos de tempo e outros
interesses acabei não indo até o fim):

 - crie duas tabelas de roteamento. Por exemplo link1 e link2.
 - modifique os scripts do dhclient/ppp para inserirem a rota default
apenas na tabela de roteamento correta (link1 ou link2). Se vc mudar o
nome da interface pelas regras do udev, fica até mais facil porque
normalmente o nome da interface é passada aos scripts.
 - agora vem a parte complicada:
    - crie regras que façam com que os pacotes de teste utilizem uma
das duas tabelas. Por exemplo, se o firewall pingar o google, use a
tabela link1, se for pingar o yahoo, use a tabela link2. Vc pode
trocar o google pelo site da operadora, whatever...
    - após o teste copie a rota default da tabela que está ok, para a
tabela principal do kernel. Dá até para priorizar uma tabela, ou seja,
se link1==ok e link2==ok use link1.
    - não esqueça de dar um ip route flush cache :-).

Essa solução tem uma vantagem, que é a possibilidade de dividir o
trafego entre as tabelas, ou seja, vc pode marcar os pacotes que vem
dos hosts X para que usem a tabela link1 e os hosts Z para que usem a
tabela link2 e em caso de falha, marcar todo mundo para usar apenas um
link.

uma solução muito mais simples mas que não permite o "balanceamento" é
a seguinte:

 - modifique os scripts do dhcp/ppp para só insiram uma rota default
se não tiver nenhuma rota default na tabela de roteamento.
 - teste a conectividade com a internet. em caso de perda, faça um
ifdown/up nas duas interfaces (possivelmente com um delay, para
permitir que a interface "principal" tenha chance de ganhar).

variação: atribua "peso" as interfaces, ou seja, se existir uma rota
default, mas a interface tiver menos peso do que a que está sendo
levantada, então substitua a rota default, caso contrario não.

2009/3/20 Leonardo Amaral <leleobhz at leleobhz.org>:
> Certo. Outro problema: O IP dos 2 são dinamicos (nem dinamicamente fixados
> eles são). Ou seja, provavelmente no timeout do lease do DHCP eu vou levar
> outro IP diferente. Como eu posso tratar isso?
>
> Bruno at openline.com.br escreveu:
>>
>> --- Leonardo Amaral <leleobhz at leleobhz.org> escreveu:
>>
>>>
>>> O problema é adivinhar a rota que a empresa deu. Cada vez vem uma
>>> diferente....
>>>
>>
>> #!/bin/bash
>> set ` netstat -rn|egrep ^0.0.0.0|grep ethX `
>> echo Rota default = $2
>>
>> []s, !3runo
>>
>>
>>>
>>> Alexandro Corrêa - SulSoft escreveu:
>>>
>>>>
>>>> Sobre essa questão de rotas criadas pelo DHCLIENT, depois de adquirir
>>>> o IP eu costumo rodar um script que remove todas as rotas e cria
>>>> novamente conforme minhas necessidades.
>>>> Tem funcionado bem até o momento...
>>>>
>>>> Atenciosamente,
>>>>
>>>>    Alexandro Corrêa
>
>
> --
> gter list    https://eng.registro.br/mailman/listinfo/gter
>



-- 
Christian Lyra
PoP-PR/RNP



More information about the gter mailing list