tcpdump 抓 IP 分片

用 ip 头部标志位与偏移过滤分片报文:MF 标志(0x2000)或分片偏移非 0 均可识别,大包被丢、PMTUD 异常时会看到残片。

用途过滤 IP 分片报文(首片与后续片)
语法ip[6:2] & 0x3fff != 0(MF 或偏移非 0)

常用示例

常用示例
tcpdump -i eth0 -nn 'ip[6:2] & 0x3fff != 0'
tcpdump -i eth0 -nn -v 'ip[6] & 0x20 != 0'   # 只看 MF=1 的片
tcpdump -i eth0 -nn -v 'ip[6:2] & 0x1fff != 0'  # 偏移非 0 的后续片
IPv6 分片看扩展头,不能沿用该表达式;重组后的完整报文需 Wireshark 查看。

易错点

  • 首个分片带完整 L4 头、后续片没有,按端口过滤会漏掉后续片,分析分片问题别加端口条件
  • 抓包看到分片说明路径 MTU 小于报文长度,结合 ICMP 需分片类型 3/码 4 一起看

数据来源与参考

  • man 8 pcap-filter
  • RFC 791(IP 分片字段)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌