VLAN 标签抓包是什么
当『配置都说放行了就是不通』时,最硬的证据是链路层抓包:tcpdump 加 -e 会把以太网头一起打印出来,包含源目的 MAC、ethertype 与 802.1Q 标签(vlan 号与优先级)。它能直接判明标签是在哪一跳被添加、被剥离还是被改写的,从而把『VLAN 不通』这种模糊描述定位到具体设备的具体端口。
基本信息
| 适用平台 | Linux(tcpdump)+ 交换机侧镜像端口 |
|---|---|
| 关键选项 | -e 显示链路层、-nn 不做名称解析、vlan 过滤表达式 |
| 权限要求 | 需 root 或 CAP_NET_RAW |
| 典型对象 | trunk 与 access 口不匹配、标签被误剥离、上行链路未带标 |
典型使用场景
- 新上架的虚拟机或容器网络不通:确认宿主上行是否真的带了预期的 VLAN 号
- 跨交换机不通:在两端各抓一次,对比标签在中途是否发生变化
- 怀疑交换机端口模式配错:access 口收到带标帧会被丢弃或改标,抓包一眼可见
- 优先级排查:VLAN 标签里的 PCP 位是否被正确设置,影响上层 QoS
带链路层与 VLAN 的抓包
带链路层与 VLAN 的抓包
# 打印以太网头,可直接看到 802.1Q 标签
sudo tcpdump -i eth0 -e -nn -c 10
# 输出示例:00:11:... > 00:22:... ethertype 802.1Q (0x8100), length 102: vlan 100, p 0, ethertype IPv4
# 只看带标签的流量
sudo tcpdump -i eth0 -e -nn 'vlan and host 10.0.0.5'
# 只看指定 VLAN 号并配合协议过滤
sudo tcpdump -i eth0 -e -nn 'vlan 100 and icmp'抓包要点对照
| 观察点 | 正常表现 | 异常指向 |
|---|---|---|
| ethertype 802.1Q | trunk 链路上应出现 | trunk 口完全不出现,说明标签未打或已被剥离 |
| vlan 100 | 与规划一致 | 标签号与规划不符,指向端口 PVID 或聚合配置 |
| p 0 | 优先级位按设计设置 | 关键业务仍为 0,上层 QoS 分类会失效 |
| 本机发出的帧无标签 | Linux 主机通常收发未打标帧 | 属正常现象,不要误判为故障 |
| ethertype IPv4 | access 口上应为无标签帧 | access 口出现标签帧,会被设备丢弃或改标 |
发送端抓包看到未打标签的帧属于正常:标签通常由交换机或虚拟交换机在转发时添加。判读的关键是『经过哪个点之后标签变了或丢了』,因此抓包位置必须选在标签处理点的两侧。
在虚拟化与容器环境,抓包点比想象中多:物理口、bond、bridge、veth、tun/tap 各看一次,才能确定标签在哪一层被处理;只抓物理口常得出错误结论。