Comment puis-je envoyer une requête ping via une autre passerelle?

19

Notre réseau possède deux modems, chacun caché derrière un routeur. Le routeur principal est sur 10.1.1.1, le routeur de sauvegarde est sur 10.1.1.2 et sont tous deux configurés pour le sous-réseau 10.1.1.0/24. Les deux routeurs ont leur passerelle configurée sur 192.168.0.1. Cependant, le 192.168.0.1 que vous voyez si votre passerelle est 10.1.1.1 est une machine différente du 192.168.0.1 que vous voyez si votre passerelle est 10.1.1.2.

Mon serveur Nagios est configuré en conséquence:

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

Pour être clair: il y a quatre passerelles ici. Router1 (10.1.1.1) Router2 (10.1.1.2) Modem1 (192.168.0.1) Modem2 (192.168.0.1)

Voici une illustration de ce que je peux faire manuellement pour vérifier l'état des deux modems:

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

J'aimerais au moins pouvoir envoyer une requête ping à Modem2.

* Modifié pour corriger mon utilisation abominable de la notation CIDR et fournir des détails clairs. (Je ne pense pas que cela appartient au superutilisateur.)

Luke Schlather
la source
Quelle est la configuration IP à partir de laquelle vous lancez le ping?

Réponses:

12

man ping

destination ping [hop ...]

Ainsi, vous pouvez donner à ping un certain nombre d'adresses IP séparées par un espace blanc comme paramètre. La dernière adresse sera "pingée"; les paramètres précédents définissent l'itinéraire que le ping doit prendre.

Donc dans votre cas:

  • "ping 10.1.1.2 modem" pour utiliser explicitement la première passerelle,
  • "Modem ping 10.1.1.1" pour utiliser explicitement la deuxième passerelle.

Si vous rencontrez le même problème avec Windows: ping /? -kc'est l'option que vous souhaitez probablement.

BTW: Le ping ci-dessus ne nécessite aucun privilège root. Les informations de routage (dans votre cas: la "liste de souhaits") font partie du protocole ICMP.

Nils
la source
1
Cela ne m'amène pas là. ping -c4 10.1.1.2 192.168.0.1donne 100% de perte de paquets. J'ai clarifié la situation ci-dessus.
Luke Schlather
4
Cela ne fonctionne pas du tout, même avec root. J'ai testé cela avec tout en regardant tcpdump, et il ne fait pas ce que vous pensez qu'il fait.
bahamat le
Que se passe-t-il si vous supprimez complètement la passerelle par défaut? Je ne comprends toujours pas votre configuration. Pourquoi utilisez-vous l'adresse de "routeur" identique sur les deux modems?
Nils
Les deux modems sont contrôlés par mes différents FAI.
Luke Schlather
Ok - je comprends maintenant la même IP des routeurs. S'agit-il d'une connexion à la demande et vous souhaitez basculer?
Nils
11

Ni ping -Nni arpingtravaillé pour moi, je me suis finalement arrangé avec la solution de cette réponse :

Vous pouvez utiliser l'outil nping du package nmap :

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

Vous pouvez trouver le mac de votre routeur dans votre cache ARP local:

$ arp -v [gateway ip]

L'outil prend également en charge différents types de ping, comme --tcpou --udp.

Tho85
la source
Merci pour cela. Votre suggestion d'utiliser nping est la seule méthode que j'ai trouvée (autre que l'ajout d'une route spécifique et l'utilisation du binaire ping normal) pour envoyer des requêtes d'écho ICMP (pings) vers un routeur de sauvegarde 3G de numérotation sur demande (à des fins de test , pour vous assurer qu'il se connecte et dispose d'une réelle connectivité Internet une fois connecté), obtenu en ciblant l'adresse MAC du routeur lors de l'envoi des paquets ICMP, ce que nping vous permet de faire. Petit utilitaire très utile!
parkamark
2

Désolé, vous ne pouvez avoir qu'une seule passerelle par défaut . Vous pouvez avoir plusieurs passerelles, mais une seule pour chaque réseau.

Le problème est que les deux IP mentionnées sont dans le même réseau. Vous avez également spécifié vos CIDR à tort: ​​vous vouliez dire que 10.1.1.0/24 avait un sous-réseau de 255.255.255.0; ou même avoir un sous-réseau plus grand, par exemple 10.0.0.0/8 comme étant 255.0.0.0.

Vous pouvez donc envoyer une requête ping à tout hôte de votre réseau (10.0.0.0/8) ou à tout hôte accessible via une (ou la) passerelle. Mais il n'est pas possible d'avoir deux passerelles pour le même réseau.

mailq
la source
1
Je voulais dire 10.1.1.1/24 comme raccourci pour 10.1.1.1 sur le sous-réseau 10.1.1.0/24. Désolé, je n'utiliserai plus ce raccourci, c'est clairement faux. J'ai toujours un problème de surveillance - j'ai ajouté plus de détails ci-dessus. Je ne peux pas résoudre ce problème sans mettre en place un meilleur routeur à 10.1.1.2?
Luke Schlather
2

Utilisez l' arping :

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

Où:

  • source_ip est une adresse IP attribuée localement sur votre hôte
  • target_remote_ip est l'adresse IP à laquelle vous souhaitez envoyer une requête ping
  • gateway_mac_address est l'adresse éther de couche 2 de la passerelle alternative que vous souhaitez utiliser

Alternativement, si vous utilisez une forme de Solaris, vous pouvez utiliser:

ping -N [gateway_ip] [target_remote_ip]
bahamat
la source
Cela semble prometteur, bien que je suppose que la mise en forme d'iproute2 ne va pas le couper ... peut-être que je dois simplement remplacer le routeur par quelque chose dans lequel je peux ssh.
Luke Schlather
1
iproute2« s arpingest différent. Si vous utilisez l'arpage de iproute2pour faire des arcs gratuits, je suggère d'utiliser send_arpà la fakeplace. De plus, la passerelle doit être quelque chose qui transmettra les paquets IP.
bahamat