直接用 icmp 过滤即可捕获完整 Ping 流量,无需指定 IP 或端口;常用命令包括 sudo tcpdump -i eth0 -nn icmp,支持 type 8/0 精确匹配、host 目标过滤及 -w 保存 pcap 文件供分析。

直接用 icmp 作为过滤表达式就能抓到完整的 ICMP Ping 流量(包括 echo request 和 echo reply),不需要指定 IP 或端口——这是最简洁、最可靠的方式。
基础命令:抓取所有 ICMP 包
执行以下命令即可捕获本机收发的所有 ICMP 报文:
- sudo tcpdump -i any icmp —— 在所有网卡上监听 ICMP 流量
- sudo tcpdump -i eth0 icmp —— 仅监听 eth0 接口的 ICMP 流量
- 加 -nn 避免 DNS 解析,提升响应速度和可读性:sudo tcpdump -i eth0 -nn icmp
精准定位 Ping 流量(可选增强)
ICMP Ping 使用的是 type 8(echo request)和 type 0(echo reply),如需进一步聚焦,可用:
- sudo tcpdump -i eth0 'icmp[0] == 8' —— 只抓发出的 ping 请求
- sudo tcpdump -i eth0 'icmp[0] == 0' —— 只抓收到的 ping 回复
- sudo tcpdump -i eth0 'icmp[0] == 8 or icmp[0] == 0' —— 明确限定 Ping 的两类报文
注意:方括号语法 icmp[0] 表示 ICMP 报文首字节(即 type 字段),必须用单引号包裹整个表达式,防止 shell 解析错误。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
配合目标主机过滤(常见需求)
若只想看与某台设备(如 192.168.1.1)之间的 Ping 通信:
- sudo tcpdump -i eth0 -nn icmp and host 192.168.1.1
- 想只看发给它的请求:sudo tcpdump -i eth0 -nn 'icmp and dst host 192.168.1.1 and icmp[0] == 8'
这里 and 是逻辑连接符,tcpdump 原生支持,无需额外安装或配置。
保存为文件供后续分析
抓包结果可实时查看,也可存为 pcap 文件,用 Wireshark 打开深入分析:
- sudo tcpdump -i eth0 -nn icmp -w ping.pcap —— 抓满自动停止(按 Ctrl+C 中断)
- sudo tcpdump -i eth0 -nn icmp -c 20 -w ping20.pcap —— 只抓 20 个包后自动保存退出
生成的 .pcap 文件兼容 Wireshark、Tcpdump 自身(tcpdump -r ping.pcap)等所有主流分析工具。

















