ip6是tcpdump过滤ipv6流量的唯一正确关键字,可单独使用或与tcp、udp、icmp6等组合;不可用ipv6或ip version 6;混合抓取需用"ip or ip6"并加引号。

直接用 ip6 关键字就能准确过滤 IPv6 流量,这是最简洁可靠的方式。
用 ip6 过滤所有 IPv6 包
命令示例:
sudo tcpdump -i eth0 ip6
这条命令会捕获该网卡上所有 IPv6 协议的数据包,包括 ICMPv6、TCPv6、UDPv6 等,不依赖端口或具体地址。它对应 IPv6 的网络层,和 ip(IPv4)是并列关系,不是子集。
组合协议与 IPv6 条件
想进一步缩小范围,可在 ip6 后叠加其他条件:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 只抓 IPv6 的 TCP 流量:tcpdump ip6 and tcp
- 只抓发往某 IPv6 地址的 UDP 包:tcpdump ip6 and udp and dst host 2001:db8::1
- 抓 ICMPv6 报文(如邻居发现、路由通告):tcpdump icmp6(注意不是 icmp,后者只匹配 IPv4 的 ICMP)
避免常见误区
几个容易出错的地方:
- 不要写成 ip version 6 或 ipv6 —— tcpdump 不识别这些写法,必须用 ip6
- 混合 IPv4/IPv6 场景下,若需同时抓两者,可用:ip or ip6,记得加引号防止 shell 解析错误
- 使用 -n 或 -nn 可避免反向 DNS 查询拖慢捕获,尤其对 IPv6 地址更明显
验证是否真抓到 IPv6 流量
执行后观察输出中的地址格式:如果看到类似 2001:db8::1.54321 > fe80::202:b3ff:fe1e:8329.80 这样的源/目的地址,就确认是 IPv6 流量。ICMPv6 的 echo request/reply 也会明确标为 ICMP6。










