[GTER] Failover de link ADSL
Flavio Junior
billpp at gmail.com
Thu Mar 19 14:30:39 -03 2009
As rotas serão removidas quando as interfaces forem baixadas pelo
script, antes de rodar o dhclient na placa que deve assumir o link...
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 (dhclient)
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
--
Flávio do Carmo Júnior aka waKKu
2009/3/19 Alexandro Corrêa - SulSoft <alexandro at sulsoft.com.br>:
> 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
> Tecnologia da Informação
> alexandro at sulsoft.com.br
> Fone/Fax: +55 (51) 3333-1581
>
>
> "Esta mensagem pode conter informação confidencial e/ou privilegiada. Se
> você não for o destinatário ou a pessoa autorizada a receber esta mensagem
> não pode usar copiar ou divulgar as informações nela contidas ou tomar
> qualquer tipo de ação baseada nessas informações. Se você recebeu esta
> mensagem por engano por favor avise imediatamente o remetente respondendo o
> e-mail e em seguida apague-o."
>
>
> bruno at openline.com.br escreveu:
>>
>> --- Leonardo Amaral <leleobhz at leleobhz.org> escreveu:
>>
>>>
>>> Mas quando der o DHClient na primeira interface ele não "come"
>>> a rota da primeira?
>>>
>>
>> na verdade fica com 2 rotas...
>>
>> o que você pode fazer é alterar o script que "sobe" a rota
>> (o dhclient chama um script pra setar interface e rota)
>> e guardar o gateway num arquivo
>>
>> dai quando precisar mudar, verifica o arquivo e muda de
>> acordo
>>
>> pode no down do dhclient também remover o arquivo para
>> saber que este está down
>>
>> []s, !3runo
>>
>> --
>> gter list https://eng.registro.br/mailman/listinfo/gter
>>
>
> --
> gter list https://eng.registro.br/mailman/listinfo/gter
>
More information about the gter
mailing list