为什么tcpdump抓包tcp校验和不对

·

tcpdump 抓包tcp校验和错误 (checksum incorrect)

cksum 0x7f33 (incorrect -> 0x3a5e) 表示校验和计算错误

这通常是 校验和卸载 (Checksum Offloading) 导致的

网卡在硬件层面计算校验和,但抓包时数据包还在内核队列中,校验和尚未计算

解决方案

禁用校验和卸载(推荐)

# 临时禁用 TX 校验和卸载
sudo ethtool -K enp0s31f6 tx off
# 临时禁用 RX 校验和卸载  
sudo ethtool -K enp0s31f6 rx off

tcpdump 忽略校验和错误

sudo tcpdump -i enp0s31f6 -v -n not tcp port 22  # 忽略校验和警告

永久禁用校验和卸载

ethtool -K enp0s31f6 tx off rx off