除非 wireshark 正在捕获数据包,否则服务器无法 ping

除非 wireshark 正在捕获数据包,否则服务器无法 ping

如果没有 wireshark 抓包,一台服务器就无法 ping 通其他服务器。而且我相信在 ping 进程之前有一个进程正在抓包。但是如何找到这个进程呢?

答案1

好的。我自己解决了这个问题。事实是发送到我的服务器的数据包具有正确的 IP 地址,但 MAC 地址错误。因此,如果 wiredshark 关闭,网络接口卡 (NIC) 将直接丢弃它。但如果 wiredshark 已打开,它将捕获数据包并将 MAC 地址修改为正确的地址。

答案2

我在从 Windows 7 计算机(Enterprise,SP1)ping 以太网目标设备时遇到了同样的问题。在我的配置中,有 2 个 USB2Ethernet 适配器,Windows 中的以太网接口来自适配器的驱动程序。此硬件配置肯定可以工作(从 Linux ping 时可以工作)。但从 Windows 则不行。

不幸的是,您的回答并没有阐明问题的根源。如果您的意思是 ICMP 响应具有错误的 MAC 地址,那么问题就是它为什么会出错。如果您使用的是现成的软件(操作系统附带的标准工具)并且没有手工制作的 ICMP 请求/响应,那么问题仍然悬而未决,错误 MAC 地址问题的根源是什么?TCP/IP 堆栈(ICMP 实现是其中的一部分)的工作原理是,首先通过 ARP 广播请求发现 MAC 地址,然后根据给定的响应选择目标 MAC 地址。

无论如何,我已尝试为目标 IP 设置静态 ARP 条目(尝试了连接到 Windows 对等体的 USB2Ethernet 的 MAC 地址和目标以太网接口的 MAC 地址)。到目前为止还没有成功。

在目标系统(正在 ping 的系统)上我可以看到,ICMP 响应实际上已被发送,但 Windows 系统似乎正在将它们过滤掉。

使用 Wireshark 监听端口后问题得到解决,与目标系统的网络连接完美(ICMP 和所有其他协议)。

我认为这与 Wireshark 在嗅探时将以太网接口带入的混杂模式和/或一些我不知道的 Windows 设置/服务有关。

相关内容