Linux
無法在同一網路上的一台設備上的介面之間 ping
在網路 A 上有一個設備,我們稱之為 1
設備 1 有 eth5 和 eth7 兩個介面
網路 A 上有設備 2
從 eth5 ping 到設備 2 有效
從 eth7 ping 到設備 2 有效
設備 2 可以 ping 通 eth5 和 eth7
但是,從 eth5 ping 到 eth7(反之亦然)不起作用..
[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
在這種情況下,我建議使用綁定您要發送的介面的 IP 地址,而不是介面本身(用於您的配置)。
ping -I <ens5 IP address> <ens7 IP address>
ping 未按預期工作的原因是生成的 IPv4 數據報的目標 IP 地址是傳遞給 ping 的介面的地址,而不是給定的目標 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