[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