¿Cómo puedo hacer ping a través de una puerta de enlace alternativa?

19

Nuestra red tiene dos módems, cada uno oculto detrás de un enrutador. El enrutador primario está en 10.1.1.1, el enrutador de respaldo está en 10.1.1.2, y ambos están configurados en la subred 10.1.1.0/24. Ambos enrutadores tienen su puerta de enlace configurada en 192.168.0.1. Sin embargo, el 192.168.0.1 que ve si su puerta de enlace es 10.1.1.1 es una máquina diferente del 192.168.0.1 que ve si su puerta de enlace es 10.1.1.2.

Mi servidor Nagios está configurado en consecuencia:

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

Para que quede claro: hay cuatro puertas de enlace aquí. Router1 (10.1.1.1) Router2 (10.1.1.2) Módem1 (192.168.0.1) Módem2 (192.168.0.1)

Aquí hay una ilustración de lo que puedo hacer manualmente para verificar el estado de los dos módems:

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

Como mínimo, me gustaría poder hacer ping a Modem2.

* Editado para corregir mi uso indebido abominable de la notación CIDR y proporcionar detalles claros. (No creo que esto pertenezca al superusuario).

Luke Schlather
fuente
¿Cuál es la configuración de IP desde la que está iniciando el ping?

Respuestas:

12

man ping

destino [...] de ping

Por lo tanto, puede dar ping a una cantidad de IP separadas por espacios en blanco como parámetro. La última dirección será "pinchada"; Los parámetros anteriores definen la ruta que debe tomar el ping.

Entonces en tu caso:

  • "ping 10.1.1.2 modem" para usar explícitamente la primera puerta de enlace,
  • "ping 10.1.1.1 modem" para usar explícitamente la segunda puerta de enlace.

Si encuentra el mismo problema con Windows: ping /? -kes la opción que probablemente desee.

Por cierto: el ping anterior no requiere privilegios de root. La información de enrutamiento (en su caso: la "lista de deseos") es parte del protocolo ICMP.

Nils
fuente
1
Eso no me lleva allí. ping -c4 10.1.1.2 192.168.0.1produce 100% de pérdida de paquetes. He aclarado la situación anterior.
Luke Schlather
44
Esto en realidad no funciona en absoluto, incluso con root. Probé esto mientras miraba tcpdump, y no hace lo que crees que hace.
bahamat
¿Qué sucede si eliminas la puerta de enlace predeterminada por completo? Todavía no entiendo tu configuración. ¿Por qué utiliza la misma dirección de "enrutador" en ambos módems?
Nils
Los dos módems están controlados por mis diferentes ISP.
Luke Schlather
Ok, ahora entiendo la misma IP de los enrutadores. ¿Es esta una conexión bajo demanda y desea realizar una conmutación por error?
Nils
11

Ni ping -Ntampoco arpingtrabajado para mí, finalmente me conformé con la solución de esta respuesta :

Puede usar la herramienta nping del paquete nmap :

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

Puede encontrar el mac de su enrutador en su caché ARP local:

$ arp -v [gateway ip]

La herramienta también admite diferentes tipos de ping, como --tcpo --udp.

Tho85
fuente
Gracias por esto. Su sugerencia de usar nping es el único método que he encontrado (aparte de agregar una ruta específica y usar el binario de ping normal) para enviar solicitudes de eco ICMP (pings) hacia un enrutador de respaldo 3G de marcado a pedido (para fines de prueba , para asegurarse de que se conecta y tiene conectividad real a Internet una vez conectado), logrado al apuntar a la dirección MAC del enrutador al enviar los paquetes ICMP, lo que nping le permite hacer. Muy útil pequeña utilidad!
parkamark
2

Lo sentimos, solo puede tener una puerta de enlace predeterminada . Puede tener múltiples puertas de enlace, pero solo una para cada red.

El problema es que ambas IP mencionadas están en la misma red. También especificó sus CIDR incorrectamente: quiso decir que 10.1.1.0/24 tenía una subred de 255.255.255.0; o incluso tener una subred más grande, por ejemplo, 10.0.0.0/8 como 255.0.0.0.

Por lo tanto, puede hacer ping a cualquier host dentro de su red (10.0.0.0/8) o cualquier host accesible a través de una (o la) puerta de enlace. Pero no es posible tener dos puertas de enlace para la misma red.

mailq
fuente
1
Me refería a 10.1.1.1/24 como una abreviatura de 10.1.1.1 en la subred 10.1.1.0/24. Lo siento, no volveré a usar esa taquigrafía, está claramente mal. Todavía tengo un problema de monitoreo: he agregado más detalles arriba. No puedo resolver este problema sin poner un enrutador mejor en su lugar en 10.1.1.2.
Luke Schlather
2

Use arping :

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

Dónde:

  • source_ip es una IP que se asigna localmente en su host
  • target_remote_ip es la dirección IP que desea hacer ping
  • gateway_mac_address es la dirección ether de capa 2 de la puerta de enlace alternativa que desea usar

Alternativamente, si está utilizando alguna forma de Solaris, puede usar:

ping -N [gateway_ip] [target_remote_ip]
bahamat
fuente
Eso parece prometedor, aunque supongo que el arping de iproute2 no va a cortarlo ... tal vez solo necesito reemplazar el enrutador con algo en lo que pueda confiar.
Luke Schlather
1
iproute2's arpinges diferente. Si usa arping from iproute2para hacer arps gratuitos, sugeriría usar send_arpfrom from fake. Además, la puerta de enlace debe ser algo que reenvíe los paquetes IP.
bahamat