Come posso eseguire il ping tramite un gateway alternativo?


19

La nostra rete ha due modem, ognuno nascosto dietro un router. Il router primario è su 10.1.1.1, il router di backup è su 10.1.1.2 e sono entrambi configurati sulla sottorete 10.1.1.0/24. Entrambi i router hanno il gateway configurato su 192.168.0.1. Tuttavia, il 192.168.0.1 che vedi se il tuo gateway è 10.1.1.1 è un computer diverso dal 192.168.0.1 che vedi se il tuo gateway è 10.1.1.2.

Il mio server Nagios è impostato di conseguenza:

auto eth0
iface eth0 inet static
address 10.1.1.10
netmask 255.255.255.0
gateway 10.1.1.1

Per essere chiari: ci sono quattro gateway qui. Router1 (10.1.1.1) Router2 (10.1.1.2) Modem1 (192.168.0.1) Modem2 (192.168.0.1)

Ecco un'illustrazione di cosa posso fare manualmente per verificare lo stato dei due modem:

ping -c4 192.168.0.1 # Is Modem1 up? 
ip route add via 10.1.1.2
ip route change default via 10.1.1.2
ping -c4 192.168.0.1 # Is Modem2 up?
wget 192.168.0.1 # yields expected control webpage for Modem2
ip route change default via 10.1.1.1
ip route del default via 10.1.1.2
wget 192.168.0.1 # Connection refused; Modem1 has no web interface
ssh adminuser@192.168.0.1 # I can log in to Modem1 and check status

Vorrei almeno poter eseguire il ping su Modem2.

* Modificato per correggere l'abominevole abuso della notazione CIDR e fornire dettagli chiari. (Non penso che questo appartenga al superutente.)


Qual è la configurazione IP da cui stai iniziando il ping?

Risposte:


12

man ping

ping [hop ...] destinazione

Quindi puoi dare al ping un numero di IP separati da spazi bianchi come parametro. L'ultimo indirizzo verrà "pingato"; i parametri precedenti definiscono il percorso che il ping dovrebbe prendere.

Quindi nel tuo caso:

  • "ping 10.1.1.2 modem" per utilizzare esplicitamente il primo gateway,
  • "ping 10.1.1.1 modem" per usare esplicitamente il secondo gateway.

Se riscontri lo stesso problema con Windows: ping /? -kè probabilmente l'opzione che desideri.

A proposito: il ping sopra non richiede alcun privilegio di root. Le informazioni di routing (nel tuo caso: la "lista dei desideri") fanno parte del protocollo ICMP.


1
Non mi sta portando lì. ping -c4 10.1.1.2 192.168.0.1produce una perdita di pacchetti del 100%. Ho chiarito la situazione sopra.
Luke Schlather,

4
Questo in realtà non funziona affatto, anche con root. L'ho provato mentre guardavo tcpdump, e non fa quello che pensi che faccia.
Bahamat,

Cosa succede se si rimuove completamente il gateway predefinito? Continuo a non capire la tua configurazione. Perché usi lo stesso indirizzo "router" su entrambi i modem?
Nils,

Entrambi i modem sono controllati dai miei diversi ISP.
Luke Schlather,

Ok - Ora capisco lo stesso IP dei router. Si tratta di una connessione su richiesta e si desidera eseguire il failover?
Nils,

11

ping -Narpinglavorato per me, ho finalmente risolto con la soluzione da questa risposta :

È possibile utilizzare lo strumento nping dal pacchetto nmap :

# nping --icmp --dest-mac [gateway mac] [target ip]

Puoi trovare il mac del tuo router nella cache ARP locale:

$ arp -v [gateway ip]

Lo strumento supporta anche diversi tipi di ping, come --tcpo --udp.


Grazie per questo. Il tuo suggerimento di usare nping è l'unico metodo che ho trovato (oltre ad aggiungere in un percorso specifico e usando il normale binario ping) di inviare richieste echo ICMP (ping) verso un router di backup 3G dial-on-demand (a scopo di test , per assicurarsi che si connetta e abbia una reale connettività Internet una volta connessa), ottenuta indirizzando l'indirizzo MAC del router quando si inviano i pacchetti ICMP, cosa che nping consente di fare. Piccola utility molto utile!
Parkamark,

2

Spiacenti, puoi avere solo un gateway predefinito . Puoi avere più gateway, ma solo uno per ogni rete.

Il problema è che entrambi gli IP citati si trovano nella stessa rete. Inoltre hai specificato erroneamente i tuoi CIDR: intendevi che 10.1.1.0/24 aveva una sottorete di 255.255.255.0; o persino avere una sottorete più grande, ad es. 10.0.0.0/8 come 255.0.0.0.

È quindi possibile eseguire il ping di qualsiasi host all'interno della rete (10.0.0.0/8) o qualsiasi host raggiungibile tramite un (o il) gateway. Ma non è possibile avere due gateway per la stessa rete.


1
Intendevo 10.1.1.1/24 come scorciatoia per 10.1.1.1 sulla sottorete 10.1.1.0/24. Mi dispiace, non userò di nuovo quella stenografia, è chiaramente sbagliato. Ho ancora un problema di monitoraggio: ho aggiunto maggiori dettagli sopra. Non riesco a risolvere questo problema senza installare un router migliore in 10.1.1.2?
Luke Schlather,

2

Usa arping :

# arping -c 1 -S [source_ip] -T [target_remote_ip] [gateway_mac_address]

Dove:

  • source_ip è un IP assegnato localmente sul tuo host
  • target_remote_ip è l'indirizzo IP che si desidera eseguire il ping
  • gateway_mac_address è l'indirizzo etere di livello 2 del gateway alternativo che si desidera utilizzare

In alternativa, se stai usando una qualche forma di Solaris puoi usare:

ping -N [gateway_ip] [target_remote_ip]

Sembra promettente, anche se immagino che l'arping di iproute2 non lo taglierà ... forse devo solo sostituire il router con qualcosa in cui posso vedere.
Luke Schlather,

1
iproute2's arpingè diverso. Se stai usando arping da iproute2per fare arps gratuiti, suggerirei invece di usare send_arpfrom fake. Inoltre, il gateway deve essere qualcosa che inoltrerà i pacchetti IP.
Bahamat,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.