Linux

無法在同一網路上的一台設備上的介面之間 ping

  • February 19, 2021

在網路 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                                                                                                                      

引用自:https://serverfault.com/questions/1048728