Failover de WAN usando eth0 e wlan0

0

Eu preciso criar um failover usando o wifi - conectado ao modem 3G sem fio e lan conectado ao roteador adsl

Quando o Adsl é desativado, é necessário failover para o 3G no wlan0

Eu tentei muitos scripts online e nada funciona, por favor envie-me o script correto que eu preciso.

PS: preciso verificar se há hosts como o www.google.com, o failover não será de nenhuma utilidade se houver falha apenas após a desconexão física do cabo eth. Ele deve falhar se eu desconectar a linha telefônica do roteador

    
por user281489 14.05.2014 / 11:23

1 resposta

2

Execute nmcli con list para descobrir o UUID da sua conexão 3G e, em seguida, execute sudoedit /usr/local/bin/inettest e copie o seguinte:

#!/bin/bash

ping -I eth0 -q -c 2 8.8.4.4 > /dev/null 2>&1

if [ $? -ne 0 ]; then
    nmcli con down uuid 03e5a69a-2682-47df-a443-59cec06802aa
else
    nmcli con up uuid 03e5a69a-2682-47df-a443-59cec06802aa
fi

Substitua o UUID acima pelo seu (obviamente) e salve-o. Execute chmod +x /usr/local/bin/inettest para torná-lo executável.

Teste isso agora.

  • Executar inettest com uma conexão eth0 em funcionamento.
  • Em seguida, quebre o eth0 e execute-o novamente.
  • E corrija e execute novamente.

A conexão 3G deve aparecer e voltar para baixo. Se isso não acontecer, há algo simples com o roteiro. Mas, supondo que tudo corra bem, podemos programá-lo para ser executado a cada 5 minutos executando crontab -e e adicionando o seguinte em uma nova linha:

*/5 * * * *    /usr/local/bin/inettest

Você pode querer uma resolução mais rigorosa. Cron só pode agendar para baixo para o minuto, mas você pode empilhar várias chamadas com o sono. Este exemplo será executado duas vezes por minuto:

* * * * *    /usr/local/bin/inettest & sleep 30; /usr/local/bin/inettest

Eu não acho que você gostaria de ir muito mais apertado do que isso.

    
por Oli 14.05.2014 / 11:56