Wie kann ich über ein alternatives Gateway pingen?

19

Unser Netzwerk verfügt über zwei Modems, die sich jeweils hinter einem Router verstecken. Der primäre Router befindet sich in 10.1.1.1, der Backup-Router in 10.1.1.2 und beide sind für das Subnetz 10.1.1.0/24 konfiguriert. Bei beiden Routern ist das Gateway auf 192.168.0.1 konfiguriert. Die 192.168.0.1, die Sie sehen, wenn Ihr Gateway 10.1.1.1 ist, ist jedoch eine andere Maschine als die 192.168.0.1, die Sie sehen, wenn Ihr Gateway 10.1.1.2 ist.

Mein Nagios-Server ist entsprechend eingerichtet:

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

Um es klar zu sagen: Hier gibt es vier Gateways. Router1 (10.1.1.1) Router2 (10.1.1.2) Modem1 (192.168.0.1) Modem2 (192.168.0.1)

Hier sehen Sie, wie Sie den Status der beiden Modems manuell überprüfen können:

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 [email protected] # I can log in to Modem1 and check status

Ich möchte mindestens in der Lage sein, Modem2 anzupingen.

* Bearbeitet, um meinen abscheulichen Missbrauch der CIDR-Notation zu korrigieren und klare Details bereitzustellen. (Ich glaube nicht, dass dies auf Superuser gehört.)

Luke Schlather
quelle
Von welcher IP-Konfiguration aus initiieren Sie den Ping?

Antworten:

12

man ping

ping [hop ...] destination

Sie können Ping also eine Reihe von IP-Adressen zuweisen, die durch Leerzeichen voneinander getrennt sind. Die letzte Adresse wird "gepingt"; Die vorherigen Parameter definieren die Route, die Ping nehmen soll.

Also in deinem Fall:

  • "ping 10.1.1.2 modem", um das erste Gateway explizit zu verwenden,
  • "ping 10.1.1.1 modem", um das zweite Gateway explizit zu verwenden.

Wenn Sie das gleiche Problem mit Windows haben: ping /? -kist die Option, die Sie wahrscheinlich wollen.

Übrigens: Für den obigen Ping sind keine Root-Rechte erforderlich. Die Routing-Informationen (in Ihrem Fall: die "Wunschliste") sind Teil des ICMP-Protokolls.

Nils
quelle
1
Das bringt mich nicht dahin. ping -c4 10.1.1.2 192.168.0.1ergibt 100% Paketverlust. Ich habe die Situation oben geklärt.
Luke Schlather
4
Das funktioniert eigentlich gar nicht, auch mit root. Ich habe dies beim Anschauen getestet tcpdumpund es funktioniert nicht so, wie Sie denken.
Bahamat
Was passiert, wenn Sie das Default-Gateway komplett entfernen? Ich verstehe dein Setup immer noch nicht. Warum verwenden Sie bei beiden Modems die gleiche "Router" -Adresse?
Nils
Beide Modems werden von meinen verschiedenen ISPs gesteuert.
Luke Schlather
Ok - ich verstehe jetzt die gleiche IP des Routers. Ist dies eine On-Demand-Verbindung und möchten Sie ein Failover durchführen?
Nils
11

Weder für mich ping -Nnoch arpingfür mich gearbeitet, habe ich mich endlich mit der Lösung aus dieser Antwort abgefunden :

Sie können das Tool nping aus dem nmap- Paket verwenden:

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

Sie finden den Mac Ihres Routers in Ihrem lokalen ARP-Cache:

$ arp -v [gateway ip]

Das Tool unterstützt auch verschiedene Ping-Typen wie --tcpoder --udp.

Tho85
quelle
Danke dafür. Ihr Vorschlag, nping zu verwenden, ist die einzige Methode, die ich gefunden habe (abgesehen vom Hinzufügen einer bestimmten Route und der Verwendung der normalen Ping-Binärdatei), um ICMP-Echoanforderungen (Pings) an einen Dial-on-Demand-3G-Backup-Router zu senden (zu Testzwecken) Um sicherzustellen, dass eine Verbindung besteht und eine echte Internetverbindung besteht, wird beim Senden der ICMP-Pakete auf die MAC-Adresse des Routers abgezielt, was mit nping möglich ist. Sehr nützliches kleines Dienstprogramm!
Parkamark
2

Entschuldigung, Sie können nur ein Standard- Gateway haben. Sie können mehrere Gateways haben, jedoch nur eines für jedes Netzwerk.

Das Problem ist, dass sich beide genannten IPs im selben Netzwerk befinden. Außerdem haben Sie Ihre CIDRs falsch angegeben: Sie meinten 10.1.1.0/24 mit einem Subnetz von 255.255.255.0; oder sogar ein größeres Subnetz haben, zB 10.0.0.0/8 als 255.0.0.0.

Sie können daher jeden Host in Ihrem Netzwerk (10.0.0.0/8) oder jeden Host, der über ein (oder das) Gateway erreichbar ist, anpingen. Es ist jedoch nicht möglich, zwei Gateways für dasselbe Netzwerk zu haben.

mailq
quelle
1
Ich meinte 10.1.1.1/24 als Abkürzung für 10.1.1.1 im Subnetz 10.1.1.0/24. Entschuldigung, ich werde diese Abkürzung nicht mehr benutzen, sie ist eindeutig falsch. Ich habe immer noch ein Überwachungsproblem - ich habe oben weitere Details hinzugefügt. Ich kann dieses Problem nicht lösen, ohne einen besseren Router unter 10.1.1.2 installiert zu haben.
Luke Schlather
2

Verwenden Sie arping :

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

Woher:

  • source_ip ist eine IP, die lokal auf Ihrem Host zugewiesen ist
  • target_remote_ip ist die IP-Adresse, an die Sie einen Ping-Befehl senden möchten
  • gateway_mac_address ist die Layer-2-Ether-Adresse des alternativen Gateways, das Sie verwenden möchten

Alternativ können Sie, wenn Sie eine Form von Solaris verwenden, Folgendes verwenden:

ping -N [gateway_ip] [target_remote_ip]
Bahamat
quelle
Das sieht vielversprechend aus, obwohl ich vermute, dass die Arping-Funktion von iproute2 nicht ausreicht ... Vielleicht muss ich nur den Router durch etwas ersetzen, in das ich ssh kann.
Luke Schlather
1
iproute2‚s arpingist anders. Wenn Sie Arping von verwenden iproute2, um unbeabsichtigte Arps zu machen, würde ich vorschlagen, stattdessen send_arpfrom zu fakeverwenden. Außerdem muss das Gateway IP-Pakete weiterleiten.
Bahamat