[GTER] Failover de link ADSL
Leonardo Amaral
leleobhz at leleobhz.org
Wed Mar 18 17:51:31 -03 2009
O problema e que tenho um ADSL e um Virtua (que me da IP Direto, nao tem
como rotear o modem). Cada vez que eu uso o dhclient ele me manda um
router diferente, e nao tem como eu fixar o IP, então esta é minha duvida.
E eu nao quero load-balance. A demanda e so detectar se um link caiu e
levantar o outro, e vice-versa.
Alexandro, vou comer esse script pra ver se ele vai funfar legal e
retorno se rolar.
Obrigado a todos, e espero ter uma solucao mesmo que simples.
Flavio Junior escreveu:
> 2009/3/18 Leonardo Amaral <leleobhz at leleobhz.org>:
>
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>> Antes de continuar, gostaria de agradecer a todos que responderam
>> minha pergunta (Eu sei que todo administrador de rede tem birra disso
>> e eu também tenho :P) ...
>>
>> Alexandro Corrêa, Sm, é por ai. Se o seu script se comportar bem com
>> DHCP, por favor me mande.
>>
>
> Leonardo, não vejo diferenças com o uso de DHCP.
> A troca do IP de saida é tranquila, o problema vai acontecer no caso
> de SSL e não vejo muita solução. O caso do sticky-address que citaram
> é pra uma aplicação de 2 links em load-balance, o que não é seu caso
> (isso garante que, quando uma conexão for pra porta 443 (por exemplo),
> ela seja sempre pelo menos IP/link de saida, já que o normal é
> alternar links pra balancear a saida).
>
> Vamos a um caso extremamente simples, um script:
>
> #!/bin/bash
> #
>
> # Links por eth
> ADSL=eth1
> EBT=eth2
>
> # Descobrindo link atual
> LinkAtual="$(awk '$1~/0.0.0.0/{print $NF}' < <(route -n))"
>
> # Hosts de teste
> HOST[0]="200.160.2.3" # registro.br
> HOST[1]="$(awk '$1~/0.0.0.0/{print $2}' < <(route -n))"
>
> LinkStatus="DOWN"
> for host in ${HOST[@]}; do
> ping -c2 -w2 -q $host >/dev/null 2>&1
> if [ $? -eq 0 ]; then
> exit 0
> fi
> done
>
> if [ "$LinkStatus" == "DOWN" ]; then
> ifdown $ADSL || ifconfig $ADSL down
> ifdown $EBT || ifconfig $EBT down
> if [ "$LinkAtual" == "$ADSL ]; then
> ifup $EBT || dhclient $EBT || dhcpcd $EBT
> else
> ifup $ADSL || dhclient $ADSL || dhcpcd $ADSL
> fi
> fi
>
> ## FIM DO SCRIPT
>
>
> Isso ta grosseiro e eu escrevi diretamente aqui no e-mail...
> A ideia do funcionamento eu acho que ta correta, ou seja:
>
> 1. Executa testes no link atual
> 2. Se o link estiver fora, desativa as placas de rede de internet e
> reativa a do OUTRO link
> 2. Se o link estiver OK, ignora o restante do script
>
> Veja que eu considerei o gateway como um host de teste, nem todos
> cenarios são assim, muitas vezes a internet cai e o gateway ainda
> responde ping, ou então o gateway se torna um IP de LAN que o modem
> forneceu via DHCP e assim responde ping..
> Tu pode por 2, 3, 4, X hosts ali pra testar... Qto mais testes, mais
> tempo o script executa..
>
> O caso agora seria por isso no crontab:
>
> */5 * * * * /usr/local/bin/script_ninja_linkswitch.sh
>
> Claro que seria legal ele te avisar qdo trocar link, e tudo mais.. ai
> é só fazer um script mais completo, mas a ideia ta ai..
>
>
> --
>
> Flávio do Carmo Júnior aka waKKu
>
>
More information about the gter
mailing list