Ping com seleção explícita do próximo salto (também conhecido como Monitoramento de múltiplos gateways padrão)

1

Eu tenho um roteador linux (debian) com duas conexões de internet (A) e (B) .

(A) é preferido, (B) é substituto.

Eu quero monitorar a conexão com a internet (e não apenas a disponibilidade dos gateways!) e alterar a rota padrão apropriadamente.

  1. Se (A) não estiver fornecendo internet, mude para (B)
  2. Se (A) estiver fornecendo a internet novamente, volte para (A) .

O único problema que tenho é no caso (2) . Minha tabela de roteamento aponta para uma internet funcional, por isso não posso detectar facilmente se a internet está trabalhando novamente no link (A) .

Eu estou procurando por um ping ou traceroute (ou outra ferramenta de diagnóstico) que pode selecionar o próximo salto explicitamente.

  • ping -r parece promissor, mas só pode fazer ping em um host na lan. (Só tem que escrever outro endereço de destino no pacote, droga!)
  • traceroute -g gateway parece ainda mais promissor e quase faz o que eu quero - mas define as opções de roteamento de origem que meus próximos saltos negam. (Não dentro do meu limite administrativo ...)

Eu só quero um $ ping, que pode:

  • selecione uma interface de origem (e endereço)
  • selecione um próximo salto nessa interface
  • pingar qualquer endereço IP arbitrário

Eu poderia fazer truques malignos com roteamento baseado em políticas, mas isso teria impacto na produção de todos os usuários. Eu gostaria de ver uma solução sem efeitos colaterais ...

    
por Michuelnik 13.09.2012 / 20:12

3 respostas

1

Os gateways upstream estão no (s) mesmo (s) segmento (s) Ethernet que o seu roteador? Se assim for, nping --dest-mac … pode funcionar. (Nping é uma das muitas ferramentas que vêm com o nmap, por isso pode já estar no seu sistema.)

    
por 14.09.2012 / 17:49
3

Que tal isso?

#!/bin/sh

IP=$1
GW=$2

route add -host $IP gw $GW
ping $IP
route del -host $IP gw $GW

Você também pode usar a opção de métrica para evitar que qualquer conexão com a Internet existente tente usar essa rota nesse meio tempo.

    
por 13.09.2012 / 21:16
2

Você pode tentar usar o iptables com o Patch de rota para especificar o gateway a ser usado nos seus pacotes ICMP provenientes da interface (A) .

Supondo que sua interface (A) é 10.0.0.1 com um valor padrão de gw de 10.0.0.2

iptables -A PREROUTING -t mangle -p icmp -s 10.0.0.1 -j ROUTE --gw 10.0.0.2

Então ping -I 10.0.0.1 x.x.x.x

    
por 14.09.2012 / 16:23