tcpdump:即使禁用卸载后,从客户端到本地主机接口的 cksum 仍然无效

tcpdump:即使禁用卸载后,从客户端到本地主机接口的 cksum 仍然无效

我遇到了一个奇怪的问题。在 Linux 中,我打开了两个窗口。一个运行 tcpdump,另一个运行 curl。我使用 curl 尝试连接到本地主机,但 tcpdump 记录了无效校验和错误。这是来自 tcpdump 窗口的日志:

bash-4.2# tcpdump -evvvt -i lo
tcpdump: listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes
00:00:00:00:00:00 (oui Ethernet) > 00:00:00:00:00:00 (oui Ethernet), ethertype
IPv4 (0x0800), length 74: (tos 0x0, ttl 64, id 18215, offset 0, flags [DF], 
proto TCP (6), length 60)
localhost.37550 > localhost.http: Flags [S], cksum 0xfe30 (incorrect -> 0x5d4b), 
seq 112438199, win 32792, options [mss 16396,sackOK,TS val 4648080 ecr 0,nop,wscale 9], length 0
00:00:00:00:00:00 (oui Ethernet) > 00:00:00:00:00:00 (oui Ethernet), ethertype 
IPv4 (0x0800), length 54: (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto TCP (6), length 40)
localhost.http > localhost.37550: Flags [R.], cksum 0x6c64 (correct), seq 0, ack 112438200, win 0, length 0

而且 curl 窗口没有任何有趣的内容。如果我使用最大详细程度,我得到的只是连接到 127.0.0.1。然后它立即终止并显示无法连接到主机。

然后我使用 ethtool -k 查看我可以调整哪些参数来禁用卸载,因为许多人声称我的问题是由于卸载造成的。以下是我可以进行调整后的参数:

Offload parameters for lo:                                                                      
rx-checksumming: on                                                                             
tx-checksumming: on                                                                             
scatter-gather: on                                                                              
tcp-segmentation-offload: off                                                                   
udp-fragmentation-offload: off                                                                  
generic-segmentation-offload: off                                                               
generic-receive-offload: off                                                                    
large-receive-offload: off
rx-vlan-offload: off
tx-vlan-offload: off
ntuple-filters: off
receive-hashing: off

我尝试关闭所有设置,但无法关闭的设置出现以下错误:

bash-4.2# ethtool -K lo rx off
Cannot set device rx csum settings: Operation not supported
bash-4.2# ethtool -K lo tx off
Cannot set device tx csum settings: Operation not supported
bash-4.2# ethtool -K lo sg off
Cannot set device scatter-gather settings: Operation not supported

设备lo是本地主机接口。

我该如何修复这个问题,以便当我使用 tcpdump 或任何其他 tcp 数据包工具时,我不会从成功使用 TCP 连接到其他 IP 地址的实用程序那里得到校验和错误?

相关内容