icmp ping回复没有被ping进程接收,由tcpdump / wireshark看到

即使我可以清楚地看到tcpdump输出中的响应,我也遇到了实际ping过程收到答复的问题。

我正在运行:

  • Mac OS X 10.11.4 El Capitan
  • 作为一个成员的龙头接口与龙头界面
  • qemu正在运行IncludeOS的虚拟机实例

桥梁创build如下:

sudo ifconfig bridge5 create sudo ifconfig bridge5 10.0.0.5 netmask 255.255.255.0 up 

分接接口是一个tuntap设备,并按如下方式连接到网桥:

 sudo ifconfig bridge5 addm tap0 

我用qemu启动我的虚拟机没有问题,这是我观察到的:

  1. 连接到虚拟机上运行的TCP服务没有问题。 我可以加载一个网页。
  2. 执行一个arping很好。
  3. 一个正常的ping 10.0.0.42给我Request timeout for icmp_seq ,但是当我检查出tcpdump输出我看到以下内容:

     $ tcpdump -i bridge5 -vvv tcpdump: listening on bridge5, link-type EN10MB (Ethernet), capture size 262144 bytes 15:11:40.014240 IP (tos 0x0, ttl 64, id 47005, offset 0, flags [none], proto ICMP (1), length 84, bad cksum 0 (->aedd)!) 10.0.0.5 > 10.0.0.42: ICMP echo request, id 24337, seq 8, length 64 15:11:40.014808 IP (tos 0x0, ttl 64, id 0, offset 0, flags [none], proto ICMP (1), length 118) 10.0.0.42 > 10.0.0.5: ICMP echo reply, id 24337, seq 8, length 98 (wrong icmp cksum af73 (->3b17)!) 

我注意到这个输出的一点是校验和不好。 我们已经有了这个完全相同的解决scheme在Ubuntu上工作了很长一段时间,当我检查那里也有一个icmp校验错误的答复。

任何想法可以阻止通过ping应用程序的答复?

wireshark在接收到防火墙之前看到数据包。 这意味着防火墙或类似的产品过滤您的接待。 ( 参考 )

错误的校验和通常意味着在TCP上启用了tcp校验和卸载 。

TCP校验和卸载(大量校验和错误)

有些原因可能会导致许多校验和错误。

如果您捕获最近的以太网NIC,则可能会看到许多此类“校验和错误”。 这是由于TCP校验和卸载经常在这些NIC上实现,因此,对于由机器传输的数据包。 只有在捕获工具从networking堆栈截获数据包之后很长一段时间才会计算校验和,直到数据包由NIC硬件发出。

由于这可能会令人困惑,并会阻止Wireshark重新组合TCP段,所以在这些情况下closures校验和validation是一个好主意。

要禁用TCP校验和有效性的检查,请转到TCP首选项并取消选中校验和validation框