Skip to content
Wireshark Wiki 中文翻译整理专题首页原始页面

VLAN 抓包设置

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、固件、驱动和系统

VLAN tag 为什么会消失

常见原因按优先级排查:

  1. 抓的是 VLAN 虚拟接口,而不是底层物理接口;虚拟接口常把流量呈现为普通 Ethernet。
  2. 交换机镜像端口没有按保留 VLAN tag 的方式配置。
  3. NIC、固件或驱动在硬件/驱动层处理 VLAN,并在 libpcap 或 Npcap 看到之前剥离 tag。
  4. 操作系统的 VLAN 机制把物理接口和 VLAN 接口拆分,抓包点选错。
  5. 抓包过滤器没有考虑 802.1Q 头部偏移,导致带 tag 的帧被过滤掉。

因此,排查时先确认“目标链路上本来是否应带 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

Linux 上通常需要 8021q kernel module 和 VLAN 配置工具来创建 VLAN 接口。配置后,Wireshark 可以在 VLAN 接口(例如 eth0.100)或底层物理接口(例如 eth0)上抓包。

  • 在 VLAN 接口上抓包:通常只看到该 VLAN 的去标签流量。
  • 在物理接口上抓包:理论上更接近线路上的帧,但实际是否看到 VLAN tag 取决于 NIC、固件、驱动和卸载设置。

如果物理接口上仍看不到 tag,不要立即判断 VLAN 不存在;应继续检查驱动是否在 pcap 之前剥离 tag。

BSD 与 macOS

FreeBSD、NetBSD、OpenBSD 和 macOS 一般把 VLAN 呈现为独立网络接口。要观察带 tag 的原始帧,通常应在物理 LAN 适配器上抓,而不是 VLAN 接口上抓。

OpenBSD 文档还提示,如果网络适配器执行硬件 VLAN tagging,在物理接口上抓包也可能看不到 tag。其他 BSD 或 macOS 环境也可能遇到类似硬件处理差异。

其他 UNIX

Solaris、HP-UX、AIX 和 Digital/Tru64 UNIX 的资料都指向类似模型:VLAN 有独立命名的接口,物理 LAN 适配器接口更可能用于观察带 tag 的帧。

如果系统或驱动不允许看到 tag,可考虑在 VLAN 交换机上设置镜像端口,并让独立抓包机连接到镜像端口;不要把该抓包接口配置为 VLAN 成员。

Windows

Windows 是否能看到 VLAN tag 主要取决于网卡和驱动。

  • 一些简单网卡和驱动会把 VLAN tag 直接交给上层,Wireshark 可以显示。
  • 一些较复杂的 Intel、Broadcom 或服务器级适配器会在硬件或驱动中处理 VLAN,默认可能剥离 tag。
  • 厂商提供的 VLAN、聚合或 failover 套件可能把物理接口拆成虚拟 miniport;在这些虚拟接口上抓包通常看到的是处理后的流量。

常见厂商设置线索

厂商/驱动原始页面提到的线索注意
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 封装中某个主机:

text
vlan and host x.x.x.x

同时抓未打标签和带标签的同一主机:

text
host x.x.x.x or (vlan and host x.x.x.x)

抓指定 VLAN ID:

text
vlan 100

如果你只写 host x.x.x.x,带 VLAN tag 的帧可能因为偏移不同而没有按预期匹配。

排查顺序

  1. 确认目标端口是 access 还是 trunk,线路上是否应出现 802.1Q tag。
  2. 优先在物理 trunk 链路、TAP 或正确配置的 SPAN 端口上观察。
  3. 对比物理接口和 VLAN 虚拟接口的抓包结果。
  4. 检查交换机镜像端口是否保留 tag。
  5. 检查 NIC、驱动和系统是否剥离 VLAN tag。
  6. 检查抓包过滤器是否使用了 vlan

相关页面

导入自 https://wiki.wireshark.org/CaptureSetup/VLAN,时间为 2020-08-11 23:12:04 UTC

相关 Wireshark Wiki 页面

网络分析技术档案