Eu tenho dois roteadores WRT, cada um conectado ao seu próprio gateway sem fio (telefone celular e hotspot do outro lado da rua). As rotas dos roteadores são conectadas com WDS e na mesma sub-rede, para que os clientes possam se conectar a qualquer gateway (dependendo das configurações de rede). Estou tentando implementar um script para que o gateway do roteador 2 seja alterado para apontar para o roteador 1 quando o gateway do roteador 2 não puder acessar a Internet (quando desligamos o ponto de acesso no telefone ou quando o telefone não está em casa). Ele precisa mudar de volta quando o gateway do Roteador 2 estiver de volta.
Como documentado aqui Gateway duplo com failover , encontrei o script abaixo, mas depois de implementá-lo nos scripts de inicialização, ele não está alterando meu gateway quando eu desconecto o gateway principal.
Eu li e li sobre vários gateways e diferentes rotas estáticas com métricas diferentes, e quando um é inacessível, o padrão é a outra rota. Se é assim e pode ser implementado em um roteador WRT no modo Repeater Bridge, então o tipo de script abaixo é necessário, e alguém me apontaria na direção certa? Obrigado.
INTERVAL=6
PACKETS=2
USINGWAN=0
GW=br0
WAN1GW=192.168.3.4
WAN2GW=192.168.3.1
DNS1=202.88.149.25
CH=1
while sleep $INTERVAL
do
TARGET='ip route | awk '/default via/ {print $3}''
if [ "$WAN1GW" = "$TARGET" ]; then
USINGWAN=1;
else if [ "$WAN2GW" = "$TARGET" ]; then
USINGWAN=2;
fi;
fi
RET='ping -c $PACKETS $DNS1 2>/dev/null | awk '/packets received/ {print $4}''
if [ "$RET" -lt "$CH" ]; then
if [ "$USINGWAN" = "1" ]; then
ip route delete default via $WAN1GW dev $GW
ip route add default via $WAN2GW dev $GW
sleep 2
USINGWAN=2
echo "Changed active WAN port to 2!"
fi
fi
if [ "$USINGWAN" = "2" ]; then
WAN1STAT='ping -c $PACKETS $DNS1 2>/dev/null | awk '/packets received/ {print $4}''
if [ "$WAN1STAT" = "$PACKETS" ]; then
ip route delete default via $WAN2GW dev $GW
ip route add default via $WAN1GW dev $GW
sleep 2
USINGWAN=1
echo "Changed active WAN port to 1!"
fi
fi
done;
Below are the creator/users comments:
Used the code above with ping to only one ip, added a static route in gateway 192.168.3.1 for ping ip to be always routed through 192.168.3.4 as a result of which in case of ping failure gateway changed to secondary gateway and once ping was back live it switched to primary... Also used -lt variable to make sure that gateway changed on at least 2 ping failures and not 1.