Linux – How to ping via an alternate gateway

gatewaylinuxpingrouting

Our network has two modems, each one hidden behind a router. The primary router is on 10.1.1.1, the backup router is on 10.1.1.2, and are both configured to the 10.1.1.0/24 subnet. Both routers have their gateway configured to 192.168.0.1. However, the 192.168.0.1 that you see if your gateway is 10.1.1.1 is a different machine from the 192.168.0.1 that you see if your gateway is 10.1.1.2.

My Nagios server is set up accordingly:

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

So to be clear: there are four gateways here. Router1 (10.1.1.1) Router2 (10.1.1.2) Modem1 (192.168.0.1) Modem2 (192.168.0.1)

Here's an illustration of what I can do manually to check the status of the two 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 adminuser@192.168.0.1 # I can log in to Modem1 and check status

I would like at a minimum to be able to ping Modem2.

*Edited to correct my abominable misuse of CIDR notation, and provide clear detail.

Best Answer

Neither ping -N nor arping worked for me, I finally settled with the solution from this answer:

You can use the tool nping from the nmap package:

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

You can find your router's mac in your local ARP cache:

$ arp -v [gateway ip]

The tool also supports different ping types, like --tcp or --udp.

Related Question