Appearance
Appearance
VLAN 抓包的核心问题不是“Wireshark 会不会解析 802.1Q”,而是“抓包点和网卡驱动有没有把 VLAN tag 保留下来”。同一条链路上的帧可能在线路上带 tag,但到达操作系统、VLAN 虚拟接口或镜像端口时已经被剥离。
适用场景:排查 VLAN trunk、access 端口、VLAN 虚拟接口、802.1Q tag 是否可见,以及带 VLAN 的抓包过滤器。不要把“看不到 VLAN tag”直接等同于“网络里没有 VLAN”;它经常只是抓包位置、交换机镜像配置、网卡硬件卸载或驱动处理造成的可见性问题。
| 抓包位置 | 通常能看到什么 | 适合做什么 | 风险 |
|---|---|---|---|
| 物理 trunk 链路或其 TAP | 线路上的 tagged / untagged 帧 | 判断 VLAN tag 是否真实存在 | 仍可能被采集网卡或驱动剥离 |
| 交换机 SPAN / mirror 端口 | 取决于镜像配置,可带 tag 或不带 tag | 临时排查某端口或 VLAN 流量 | 交换机可能剥离 tag、丢包或改时序 |
| 主机上的 VLAN 虚拟接口 | 通常是去 VLAN 化后的流量 | 看该 VLAN 内协议栈实际收发 | 通常看不到原始 802.1Q tag |
| 主机上的物理接口 | 可能看到全部帧、只看到未打标签帧,或看到已剥离 tag 的帧 | 验证驱动/硬件行为 | 行为依赖 NIC、固件、驱动和系统 |
常见原因按优先级排查:
因此,排查时先确认“目标链路上本来是否应带 tag”,再确认“抓包点是否处在 tag 还存在的位置”。
| 平台/环境 | 典型表现 | 建议 |
|---|---|---|
| Linux | 可在 VLAN 接口或物理接口抓;是否保留 tag 依赖 NIC、固件和驱动 | 同时比较 VLAN 接口与物理接口;必要时检查驱动 VLAN offload/剥离设置 |
| FreeBSD、NetBSD、OpenBSD、macOS | 通常有独立 VLAN 接口;物理接口更可能看到原始帧 | 想看 tag 时优先尝试物理接口;注意硬件 VLAN tagging 可能仍会隐藏 tag |
| Solaris、HP-UX、AIX、Digital/Tru64 UNIX | 文档描述多为物理接口与 VLAN 接口分离 | 想看 tag 时优先尝试物理 LAN 适配器接口 |
| Windows | 没有统一的内置 VLAN 抓包模型;主要取决于网卡和驱动 | 检查厂商驱动设置;必要时换简单网卡、独立抓包机或交换机镜像/TAP |
| SPAN / mirror 端口 | 是否带 tag 取决于交换机配置 | 明确配置镜像端口是否保留 VLAN tag,例如 trunk 方式 |
Linux 上通常需要 8021q kernel module 和 VLAN 配置工具来创建 VLAN 接口。配置后,Wireshark 可以在 VLAN 接口(例如 eth0.100)或底层物理接口(例如 eth0)上抓包。
如果物理接口上仍看不到 tag,不要立即判断 VLAN 不存在;应继续检查驱动是否在 pcap 之前剥离 tag。
FreeBSD、NetBSD、OpenBSD 和 macOS 一般把 VLAN 呈现为独立网络接口。要观察带 tag 的原始帧,通常应在物理 LAN 适配器上抓,而不是 VLAN 接口上抓。
OpenBSD 文档还提示,如果网络适配器执行硬件 VLAN tagging,在物理接口上抓包也可能看不到 tag。其他 BSD 或 macOS 环境也可能遇到类似硬件处理差异。
Solaris、HP-UX、AIX 和 Digital/Tru64 UNIX 的资料都指向类似模型:VLAN 有独立命名的接口,物理 LAN 适配器接口更可能用于观察带 tag 的帧。
如果系统或驱动不允许看到 tag,可考虑在 VLAN 交换机上设置镜像端口,并让独立抓包机连接到镜像端口;不要把该抓包接口配置为 VLAN 成员。
Windows 是否能看到 VLAN tag 主要取决于网卡和驱动。
| 厂商/驱动 | 原始页面提到的线索 | 注意 |
|---|---|---|
| Intel | 某些 Intel Ethernet 适配器需要禁用 VLAN tag stripping,可能还需升级驱动 | 具体名称和位置随驱动版本变化,应查厂商说明 |
| Broadcom | 某些 NetXtreme 芯片可通过注册表项 PreserveVlanInfoInRxPacket=1 保留 802.1Q header | 修改注册表前应确认设备实例,避免误改其他网卡 |
| Broadcom BASP | 服务器虚拟 miniport 可拆分 VLAN 接口 | 从虚拟接口抓到的多为对应 VLAN 流量 |
| Intel iANS | 虚拟 miniport 会拆分启用 VLAN 的接口 | 聚合接口行为需按环境验证 |
| Marvell Yukon | 原始页面提到 SkDisableVlanStrip=1 和 *PriorityVLANTag=0 | 注册表路径中的实例编号需按本机确认 |
这些设置都是厂商和驱动相关行为,不应写成所有 Windows 网卡通用规则。
802.1Q 头会改变后续字段偏移。对带 VLAN tag 的帧使用抓包过滤器时,要显式使用 vlan 关键字。
只抓 VLAN 封装中某个主机:
vlan and host x.x.x.x同时抓未打标签和带标签的同一主机:
host x.x.x.x or (vlan and host x.x.x.x)抓指定 VLAN ID:
vlan 100如果你只写 host x.x.x.x,带 VLAN tag 的帧可能因为偏移不同而没有按预期匹配。
vlan。导入自 https://wiki.wireshark.org/CaptureSetup/VLAN,时间为 2020-08-11 23:12:04 UTC