网络 A 上有一个设备,我们将其称为 1
设备 1 有两个接口,eth5 和 eth7
网络 A 上有一个设备 2
从 eth5 到设备 2 执行 ping 操作
从 eth7 到设备 2 执行 ping 操作
设备 2 可以 ping 通 eth5 和 eth7
但是,从 eth5 ping 到 eth7 以及从 eth7 ping 到 eth5 不起作用。
[root@ipfrmk /]# ping -I eth5 192.168.10.42
PING 192.168.10.42 (192.168.10.42) from 192.168.10.43 eth5: 56(84) bytes of data.
^C
--- 192.168.10.42 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2006ms
和
[root@ipfrmk /]# ping -I eth7 192.168.10.43
PING 192.168.10.43 (192.168.10.43) from 192.168.10.42 eth7: 56(84) bytes of data.
^C
--- 192.168.10.43 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 1999ms
为什么我无法在设备 1 上连接到网络 A 的两个接口之间 ping 通?
我可以 ping 网络 A 上的其他设备,但无法分别 ping 接口。
也许每个接口都有静态路由?
我尝试了以下命令,但没有成功。
ip route add 192.168.0.0/16 via 192.168.10.42 dev eth5
输出
[root@ipfrmk /]# ping -I eth5 192.168.10.42
PING 192.168.10.42 (192.168.10.42) from 192.168.10.43 eth5: 56(84) bytes of data.
From 192.168.10.43 icmp_seq=1 Destination Host Unreachable
From 192.168.10.43 icmp_seq=2 Destination Host Unreachable
From 192.168.10.43 icmp_seq=3 Destination Host Unreachable
^C
--- 192.168.10.42 ping statistics ---
6 packets transmitted, 0 received, +3 errors, 100% packet loss, time 5002ms
pipe 3
我是不是遗漏了什么?
[root@ipfrmk /]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth5
192.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 eth7
192.168.0.0 192.168.10.42 255.255.0.0 UG 0 0 0 eth5
答案1
在这种情况下,我建议使用绑定您要发送的接口的 IP 地址,而不是接口本身(对于您的配置)。
ping -I <ens5 IP address> <ens7 IP address>
ping 无法按预期工作的原因是,生成的 IPv4 数据报的目标 IP 地址是传递给 ping 的接口的 IP 地址,而不是给定的目标 IP 地址。
我的配置:
2: ens5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:e0:cc:50 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.10/24 brd 192.168.122.255 scope global ens5
3: ens6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:cd:c9:91 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.20/24 brd 192.168.122.255 scope global ens6
这看起来应该可以工作,但实际上却不行:
root@debian:/home/morgan# ping -c 1 -I ens5 192.168.122.20
PING 192.168.122.20 (192.168.122.20) from 192.168.122.10 ens5: 56(84) bytes of data.
--- 192.168.122.20 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 1ms
tcpdump 输出显示了它为什么不工作......
目标 IP 地址是 ens5 接口的 IP 地址,而不是传递给 ping 的预期目标 IP(192.168.122.20)。
18:36:17.982917 IP 192.168.122.10 > 192.168.122.10: ICMP host 192.168.122.20 unreachable, length 92
当我使用 ens5 的 IP 地址时,ping 可以成功:
root@debian:/home/morgan# ping -c 1 -I 192.168.122.10 192.168.122.20
PING 192.168.122.20 (192.168.122.20) from 192.168.122.10 : 56(84) bytes of data.
64 bytes from 192.168.122.20: icmp_seq=1 ttl=64 time=5.17 ms
--- 192.168.122.20 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 2ms
rtt min/avg/max/mdev = 5.165/5.165/5.165/0.000 ms
答案2
我可能错了……但这是急转弯吗?它可能无法以这种方式返回自身。有时它无法像那样在同一个界面中往返。