首页/网络/抓包与流量分析速查/tcpdump 抓 ICMP 与类型过滤

tcpdump 抓 ICMP 与类型过滤

过滤 ICMP 报文并可按类型/代码细分:icmp[0]=8 是 Echo 请求(ping),0 是应答;抓"需要分片"(type 3 code 4)对 MTU 排查很关键。

抓 ICMP 在做什么

icmp 原语直接匹配 ICMP 报文,配合下标可以按类型与代码细分:icmp[0] 是类型字段,icmp[1] 是代码字段。类型 8 是回显请求(ping),类型 0 是回显应答,类型 3 是目的不可达,类型 11 是超时。其中类型 3 代码 4 表示需要分片但设置了禁止分片标志,这是排查最大传输单元问题的关键报文。抓 ICMP 既用于确认连通性,也用于发现路径上的丢弃原因。

基本信息

全部 ICMPicmp
按类型icmp[icmptype] = icmp-echo 或 icmp[0] = 3
按类型与代码icmp[0] = 3 and icmp[1] = 4
IPv6 对应icmp6 与 ip6[40] 取类型字段
常见类型0 回显应答、3 目的不可达、8 回显请求、11 超时

常用类型与含义

类型名称典型场景
0回显应答ping 回复,确认双向可达
3目的不可达含网络、主机、端口、协议不可达等多种代码
3 代码 4需要分片但被禁止路径最大传输单元发现问题,表现为大包不通小包通
8回显请求ping 探测,也常见于监控系统
11超时跳数超限,常见于路由环路或追踪路由
13 与 14时间戳请求与应答较少使用,出现时值得确认来源

典型使用场景

  • 确认某台主机是否可达,以及回包是否经过抓包点
  • 排查大包不通:抓类型 3 代码 4 的报文,判断是否分片被拦
  • 核对路径:与路由追踪结合,看在哪一跳返回超时
  • 确认监控探测行为:识别周期性回显请求的来源
  • IPv6 环境排查:ICMPv6 承担邻居发现,屏蔽会导致地址配置异常

常用示例

常用示例
tcpdump -i eth0 -nn icmp                              # 全部 ICMP
tcpdump -i eth0 -nn 'icmp[icmptype] = icmp-echo'      # 只看 ping 请求
tcpdump -i eth0 -nn 'icmp[0] = 3 and icmp[1] = 4'     # 需要分片但被禁止
tcpdump -i eth0 -nn 'icmp[0] = 11'                    # 超时
tcpdump -i eth0 -nn 'icmp and host 10.0.0.9'          # 限定对端
tcpdump -i eth0 -nn 'icmp6 and ip6[40] = 128'         # IPv6 回显请求
ICMP 不可达报文里会携带原始 IP 头与部分数据,用 -X 或交给 Wireshark 可以看到被拒绝的那个报文长什么样,这对判断是哪条连接被拦很关键。
ICMPv6 是 IPv6 的必需组件,邻居发现、地址自动配置都依赖它。排查 IPv6 问题时不要一刀切屏蔽或过滤 ICMPv6,否则会制造出新的故障。

与 MTU 排查配合

与 MTU 排查配合
ping -M do -s 1472 10.0.0.9      # 禁止分片探测,验证路径最大传输单元
tcpdump -i eth0 -nn 'icmp[0] = 3'  # 抓不可达报文,看是哪一跳返回
tcpdump -i eth0 -nn -vv 'icmp' -c 5   # 详细模式能解析出更具体的类型说明

判读要点

  • ping 不通不代表主机不可达,ICMP 常被中间设备限速或直接丢弃
  • 大包不通小包通且抓到类型 3 代码 4,几乎可以确定是路径最大传输单元问题
  • 回显请求来自固定地址且周期规律,多为监控探测,不必当成异常
  • 超时报文说明路径跳数或存在环路,配合路由追踪定位具体节点

易错点

  • 用 ping 不通直接断定主机故障,ICMP 被限速或屏蔽是常见现象,需要结合 TCP 探测判断
  • 屏蔽 ICMPv6 会导致 IPv6 邻居发现与地址配置异常,排查时不要顺手过滤掉它
  • 只看类型不看代码,会把多种目的不可达混为一谈,代码 4 与代码 3 的处理方向完全不同
  • ICMP 报文的载荷里携带原始报文片段,做误判判断时遗漏这部分会缺少关键线索
  • 抓包点不覆盖回程路径时,看不到回显应答不代表对方没有回应

数据来源与参考

  • man 8 pcap-filter
  • RFC 792(ICMP)
  • RFC 4443(ICMPv6)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌