我在小型网络上有两台设备(一台 PC 和一台笔记本电脑),它们通过以太网连接。我为每个设备的 NIC 分配了静态 IP。笔记本电脑的 NIC 具有 IP192.168.1.101
和逻辑接口enp0s31f6
,PC 的 NIC 具有 IP192.168.1.103
和逻辑接口enp1s0f2
。
从 PC 上,当我尝试 ping 笔记本电脑时,它工作正常:
$ ping -I enp1s0f2 192.168.1.101
PING 192.168.1.101 (192.168.1.101) from 192.168.1.103 enp1s0f2: 56(84) bytes of data.
64 bytes from 192.168.1.101: icmp_seq=1 ttl=64 time=0.354 ms
64 bytes from 192.168.1.101: icmp_seq=2 ttl=64 time=0.377 ms
64 bytes from 192.168.1.101: icmp_seq=3 ttl=64 time=0.260 ms
64 bytes from 192.168.1.101: icmp_seq=4 ttl=64 time=0.418 ms
64 bytes from 192.168.1.101: icmp_seq=5 ttl=64 time=0.253 ms
64 bytes from 192.168.1.101: icmp_seq=6 ttl=64 time=0.250 ms
^C
--- 192.168.1.101 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5123ms
rtt min/avg/max/mdev = 0.250/0.318/0.418/0.067 ms
但是,从笔记本电脑 ping 到 PC 不会收到任何 icmp 回复。在 PC 上,我看到了请求,但没有回复:
sudo tcpdump -i enp1s0f2
[sudo] password for user:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp1s0f2, link-type EN10MB (Ethernet), capture size 262144 bytes
20:22:38.442345 IP 192.168.1.101 > user: ICMP echo request, id 62, seq 19, length 64
20:22:39.465977 IP 192.168.1.101 > user: ICMP echo request, id 62, seq 20, length 64
20:22:40.490038 IP 192.168.1.101 > user: ICMP echo request, id 62, seq 21, length 64
20:22:41.518012 IP 192.168.1.101 > user: ICMP echo request, id 62, seq 22, length 64
查看ARP缓存:
$ arp -a
? (192.168.1.101) at 48:9e:bd:75:b7:16 [ether] on enp1s0f2
? (192.168.1.101) at <incomplete> on enp1s0f3
我尝试删除缓存并重试。当我成功从 PC ping 到笔记本电脑时,会出现第一个条目。当我无法从笔记本电脑 ping 到 PC 时,会出现第二个条目。
知道发生什么事了吗?
答案1
根据您的 ARP 缓存,以及它之后的一点解释,以及您似乎必须在从 PC 发出的 ping 中指定源接口的事实,它似乎正在尝试回复不同的接口 (enp1s0f3)。
我猜测 enp1s0f2 和 enp1s0f3 在同一个网络中的 IP 地址存在重叠。
在 PC 上执行这些操作并显示输出:
ifconfig
ip route list
答案2
PC 上有防火墙吗?通常,出站的返回流量可以正常工作,而入站的未经请求的流量将被阻止。