首页/网络/网络排障速查/抓包确认 VLAN 标签与链路层信息
连通性与链路检测54 条

抓包确认 VLAN 标签与链路层信息

『配置都说放行了就是不通』时,最硬的证据是链路层抓包:-e 显示 MAC 与 VLAN tag,能直接判明 tag 是否被丢、是否走错 VLAN。

网络排障速查网络更新于 2026-10-13

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.1Qtrunk 链路上应出现trunk 口完全不出现,说明标签未打或已被剥离
vlan 100与规划一致标签号与规划不符,指向端口 PVID 或聚合配置
p 0优先级位按设计设置关键业务仍为 0,上层 QoS 分类会失效
本机发出的帧无标签Linux 主机通常收发未打标帧属正常现象,不要误判为故障
ethertype IPv4access 口上应为无标签帧access 口出现标签帧,会被设备丢弃或改标
发送端抓包看到未打标签的帧属于正常:标签通常由交换机或虚拟交换机在转发时添加。判读的关键是『经过哪个点之后标签变了或丢了』,因此抓包位置必须选在标签处理点的两侧。
在虚拟化与容器环境,抓包点比想象中多:物理口、bond、bridge、veth、tun/tap 各看一次,才能确定标签在哪一层被处理;只抓物理口常得出错误结论。

易错点

  • 把本机看到的无标签帧当异常:主机通常收发未打标帧,标签在链路上处理,误判会浪费大量时间
  • 抓包点选错位置:不在标签处理点两侧对比,就无法判断标签在哪一跳丢失
  • 忽略 PCP 优先级位:标签号对了但优先级全是 0,上层 QoS 分类仍不生效
  • 只在一端抓包:缺少对照,无法区分是发送侧未打标还是接收侧被剥离
  • 在容器命名空间内抓宿主机接口:抓到的流量与容器实际路径不符,结论不可用

数据来源与参考

  • IEEE 802.1Q(VLAN 标签格式)
  • man 8 tcpdump(vlan 过滤语法)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌