按 VLAN 过滤
vlan.id 用来过滤带 802.1Q 标签的以太网帧。在 Trunk 口抓包后按 VLAN 分离不同业务流量,可以验证划分是否符合设计、标签在哪些设备上被剥离。Access 口发出的帧本来就不带标签,如果抓到的包里完全没有 vlan 字段,先确认抓包点的链路类型,而不是直接怀疑配置出错。
基本信息
| 适用平台 | Wireshark(解析 IEEE 802.1Q 标签) |
|---|---|
| 过滤语法 | vlan.id == 10 / vlan && !ip / vlan == 2 && vlan.id == 10 |
| 适用链路 | Trunk 口、镜像口、服务器网卡子接口 |
| 相关场景 | 802.1Q 单标签与 QinQ 双层标签 |
典型使用场景
- 验证 VLAN 划分:在 Trunk 口按 VLAN 过滤,核对业务是否隔离正确
- 分离多业务流量:同一物理口跑多个 VLAN 时按 id 分别分析
- 排查标签剥离:确认 Access 口发出的帧已不带标签
- QinQ 场景:外层与内层标签分别匹配,定位运营商与用户侧划分
- 服务器虚拟化:宿主机子接口标签与虚机网卡配置互相对照
常用示例
常用示例
vlan.id == 10 # 只要 VLAN 10 的帧
vlan == 2 && vlan.id == 10 # QinQ:外层 VLAN 2、内层 VLAN 10
vlan && !ip # 带标签但不含 IP 的帧
vlan.id == 10 && arp # 某一 VLAN 内的 ARP 交互常见现象判读
| 现象 | 含义 | 处理方向 |
|---|---|---|
| 文件里没有 vlan 字段 | 抓包点链路不带标签 | 确认是否为 Access 口,或换到 Trunk 口抓 |
| 只有一层标签 | 普通 802.1Q 转发 | 核对本端预期的标签层数 |
| 出现两层标签 | QinQ 或标签嵌套 | 按层顺序分别匹配内外层 |
| 标签被驱动剥离 | 网卡硬件卸载行为 | 在驱动侧关闭或换抓包点 |
部分网卡与虚拟交换机默认启用 VLAN 硬件卸载,标签在驱动层就被剥离,落盘的 pcap 里看不到 vlan 字段。换一块网卡、关掉卸载,或改到上游设备抓包都能解决。
QinQ 场景中 vlan 字段会出现两次,过滤器的匹配顺序按标签由外到内。写表达式时把外层写在前面,判读时也不容易看错。
虚拟化平台里,宿主机子接口的标签常由虚拟交换机在软件层添加,抓包看到标签的位置与物理 Trunk 口并不相同。判断标签在哪一层被加上或被剥掉,需要在宿主机与虚机两侧同时取数。