VLAN 0、1、4095:三个特殊 ID 的用途、风险与配置边界
VLAN 让网络工程师可以划分广播域、隔离安全性和提高灵活性。但在 0 到 4095 这个 ID 范围里,有三个特殊的 ID——0、1 和 4095——并不为常规用户数据流量设计。它们的特殊用途和不当配置可能引发从性能下降到安全漏洞的一系列问题。
VLAN 0:不是”不存在”,而是”优先级信使”
许多初学者认为 VLAN 0 是无效或不存在的,但并非如此。根据 IEEE 802.1Q 标准,VLAN ID 0 是一个保留值,用于一个特殊目的:优先级标记(Priority Tagging)。
802.1Q 标签长什么样
要理解 VLAN 0 的用途,得先看清标签本身的结构。一个 802.1Q 标签共 4 字节,插在源 MAC 地址与类型/长度字段之间:
| 字段 | 长度 | 作用 |
|---|---|---|
| TPID | 16 bit | 固定 0x8100,标识这是一个带 802.1Q 标签的帧 |
| PCP | 3 bit | 优先级代码点,即 CoS(服务等级),取值 0–7 |
| DEI | 1 bit | 丢弃资格指示,拥塞时可优先丢弃 |
| VID | 12 bit | VLAN ID,取值 0–4095 |
关键就在于 VID 和 PCP 是两个独立字段。当一台设备(比如 IP 电话、视频会议终端)需要给帧打优先级,但这个帧本身不属于任何特定 VLAN 时,就把 VID 填 0、PCP 填上 CoS 值。接收设备看到 VID 为 0,就只读 PCP 做优先级处理,不把帧归属到任何 VLAN。这种帧叫优先级标记帧(Priority-Tagged Frame)。
为什么是坑
- 不能用于数据隔离。你无法在交换机上创建 VLAN 0 并分配端口。它是协议层面的信号,不是一个可配置的逻辑网络。硬要按普通 VLAN 配,只会得到命令报错或不可预测的行为。
- 容易被误解。在 IP 电话串接 PC 的场景里,电话可能用 VLAN 0 标记语音流量的优先级,而 PC 流量不带标签或属于其他 VLAN。不理解这个机制的人,在抓包时看到 VID 为 0 会误判为”没有 VLAN 信息”。
VLAN 1:默认的”后门”
VLAN 1 是几乎所有品牌交换机的默认 VLAN 和默认 Native VLAN。正是这种”默认”特性,让它成为网络中最常见的安全薄弱环节。
三重身份叠加
- 默认 VLAN:所有端口在出厂或重置状态下都属于 VLAN 1,任何未被明确配置的端口都会自动成为它的成员。
- 默认 Native VLAN:在 Trunk 链路上,Native VLAN 承载的是不带 802.1Q 标签的流量,默认也由 VLAN 1 扮演。
- 控制协议的落脚点:CDP、VTP、PAgP、DTP 以及部分生成树 BPDU 等二层控制协议流量,默认都在 VLAN 1 上传输。
为什么是坑
- 未授权访问入口。如果没关闭空闲端口,也没把它们丢进隔离 VLAN,攻击者随便接一台设备就能进 VLAN 1,进而摸到管理接口或其他资源。
- VLAN 跳跃的温床。VLAN 1 作为默认 Native VLAN,是 VLAN Hopping——特别是双重标签攻击(Double-Tagging Attack)——的主要利用点。
双重标签攻击是怎么发生的
攻击者利用自己端口的 Native VLAN(通常是 VLAN 1),构造带两层 VLAN 标签的帧:
sequenceDiagram
participant A as 攻击者
participant S1 as Switch_A
participant S2 as Switch_B
participant V as 受害主机 (VLAN 10)
A->>S1: 双标签帧(外层 Native VLAN 1,内层 VLAN 10)
Note right of S1: 外层是 Native VLAN,剥离外层标签
S1->>S2: 单标签帧(Tag: VLAN 10)
S2->>V: 按 VLAN 10 转发
Note right of V: 回程流量通常回不到攻击者
第一台交换机看到外层标签是自己的 Native VLAN,于是剥离外层、把帧从 Trunk 转出去。第二台交换机收到的是一个只带内层标签(VLAN 10)的帧,就老老实实把它转发进了 VLAN 10。VLAN 就这样被跨过去了。
注意攻击是单向的——受害主机的回包没有第二层标签,回不到攻击者。所以这类攻击通常配合单向通信或反射技巧使用,但用来投放流量已经够了。
最低限度的加固
- 把 Trunk 端口的 Native VLAN 改成未使用、且 ID 不是 1 的 VLAN
- 未使用的物理端口直接
shutdown - 必须保持开启的备用端口,划进一个无 IP、不参与路由的隔离 VLAN
- VLAN 1 只留给必要的控制协议,不要承载用户数据
VLAN 4095:协议保留,但厂商另有用法
与 VLAN 0 和 1 不同,VLAN 4095(十六进制 0xFFF)是严格的保留值,802.1Q 规定它不可用于配置和传输。但一些厂商在特定场景下赋予了它内部用途。
三种绕不开的用法
- 通用保留:多数交换机把它当作内部”无效 VLAN”的标识。收到无法识别的 VLAN ID 帧时,内部处理单元可能将其归类到 4095 然后丢弃。
- Cisco VTP Pruning:在 VTP 修剪中,4095 用来表示”这条 Trunk 上所有 VLAN 都被修剪掉了”。
- VMware VGT:在 vSphere 里把 vSwitch 或端口组的 VLAN ID 设为 4095,会开启虚拟客户机标记(Virtual Guest Tagging)。此模式下 vSwitch 允许 0–4094 的流量全部通过,并把 802.1Q 标签的处理权完全交给虚拟机自己。
graph TD
subgraph "物理网络"
P["物理交换机"]
end
subgraph "ESXi 主机"
VSW["虚拟交换机<br/>端口组 VLAN ID = 4095"]
end
subgraph "虚拟机内部"
OS["客户机操作系统"]
APP["网络应用 / 防火墙 / 路由器"]
OS -->|"自行识别并处理 VLAN 10 / 20 / 30"| APP
end
P -->|"Trunk(允许多个 VLAN)"| VSW
VSW -->|"VGT:标签原样透传"| OS
VGT 本质上是把物理 Trunk 延伸进了虚拟机内部,适合跑软路由、虚拟防火墙或抓包分析的场景。
为什么是坑
- 配置会失败,或者行为完全走样。在普通交换机上尝试配置 4095 通常直接报错;即便在虚拟化平台能配上,它的行为也和标准 VLAN 不同,误用会让隔离策略失效。
- 多厂商兼容性差。不同厂商对 4095 的内部处理存在差异,有些系统甚至把 4000–4095 整段都留给内部功能。混合组网时这类问题极难排查。
汇总
| VLAN ID | 本质 | 主要风险 | 建议 |
|---|---|---|---|
| 0 | 优先级标记,只传 CoS | 无法做数据隔离;误判为”无效 VLAN”导致 QoS 排查困难 | 当作 QoS 信令理解,不要当普通 VLAN 配 |
| 1 | 默认 VLAN + 默认 Native VLAN | 易受 VLAN 跳跃攻击;未授权访问入口;承载过多控制协议 | 改 Native VLAN、关停或隔离空闲端口、不承载用户数据 |
| 4095 | 协议保留值,厂商另有内部用途 | 配置报错、行为不可预测、多厂商互通性差 | 物理网络中不要当常规 VLAN 用;仅在明确理解其用途(如 VMware VGT)时配置 |
这三个 ID 的特殊性,来自协议标准和厂商实现的两套逻辑叠在一起。分清”标准怎么规定”和”厂商怎么用”,配置时就不会踩进去了。
