我们的网络有两个调制解调器,每个都隐藏在路由器后面。主路由器位于 10.1.1.1,备用路由器位于 10.1.1.2,并且都配置为 10.1.1.0/24 子网。两个路由器的网关均配置为 192.168.0.1。但是,如果网关为 10.1.1.1,则您看到的 192.168.0.1 与如果网关为 10.1.1.2,则您看到的 192.168.0.1 是不同的机器。
我的 Nagios 服务器设置如下:
auto eth0
iface eth0 inet static
address 10.1.1.10
netmask 255.255.255.0
gateway 10.1.1.1
所以要清楚:这里有四个网关。路由器 1 (10.1.1.1) 路由器 2 (10.1.1.2) 调制解调器 1 (192.168.0.1) 调制解调器 2 (192.168.0.1)
下面说明了我可以手动执行哪些操作来检查两个调制解调器的状态:
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
我至少希望能够 ping 通 Modem2。
*编辑以纠正我对 CIDR 符号的严重误用,并提供清晰的细节。
答案1
man ping
ping [hop...] 目的地
因此,您可以为 ping 提供多个以空格分隔的 IP 作为参数。最后一个地址将被“ping”;前面的参数定义 ping 应采用的路由。
因此就你的情况而言:
- “ping 10.1.1.2 modem”明确使用第一个网关,
- “ping 10.1.1.1 modem”明确使用第二个网关。
如果您在使用 Windows 时遇到同样的问题:
ping /?
-k
这可能是您想要的选项。
顺便说一句:上述 ping 不需要任何 root 权限。路由信息(在您的例子中为“whishlist”)是 ICMP 协议的一部分。
答案2
ping -N
对我来说都不起作用arping
,我最终选择了这个答案:
您可以使用该工具网平来自nmap包裹:
# nping --icmp --dest-mac [gateway mac] [target ip]
您可以在本地 ARP 缓存中找到路由器的 mac:
$ arp -v [gateway ip]
该工具还支持不同的 ping 类型,例如--tcp
或--udp
。
答案3
抱歉,您只能拥有一个默认网关。您可以拥有多个网关,但每个网络只能有一个网关。
问题是,上述两个 IP 都在同一个网络中。此外,您错误地指定了 CIDR:您认为 10.1.1.0/24 的子网是 255.255.255.0;或者甚至认为 10.0.0.0/8 的子网更大,即 255.0.0.0。
因此,您可以 ping 网络 (10.0.0.0/8) 内的任何主机或通过网关可访问的任何主机。但同一网络不可能有两个网关。
答案4
使用阿尔平:
# arping -c 1 -S [source_ip] -T [target_remote_ip] [gateway_mac_address]
在哪里:
- source_ip 是主机本地分配的 IP
- target_remote_ip 是您要 ping 的 IP 地址
- gateway_mac_address 是备用您要使用的网关
或者如果您使用某种形式的 Solaris,则可以使用:
ping -N [gateway_ip] [target_remote_ip]