[GTER] Failover de link ADSL
Flavio Junior
billpp at gmail.com
Wed Mar 18 15:19:48 -03 2009
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