即使我可以清楚地看到tcpdump输出中的响应,我也遇到了实际ping过程收到答复的问题。
我正在运行:
桥梁创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启动我的虚拟机没有问题,这是我观察到的:
一个正常的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框