我如何通过备用网关进行 ping 操作?

我如何通过备用网关进行 ping 操作?

我们的网络有两个调制解调器,每个都隐藏在路由器后面。主路由器位于 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]

相关内容