VLAN 与局域网隔离
基于 HTTP 现代标准 · 核于 2026-06
速查
- VLAN 本质:在数据链路层(L2)把一个物理网络逻辑切分成多个广播域,每个 VLAN 就是一个独立的广播域 / 子网,互不串扰。
- 解决三件事:① 抑制广播泛滥(缩小广播域)② 提升安全(部门间二层隔离)③ 提升灵活性(按职能分组,不受物理位置 / 布线约束)。
- 802.1Q 标签:在以太网帧的「源 MAC」与「类型」之间插入 4 字节(32 位) VLAN Tag,是事实标准的 VLAN 标记方式。
- TPID = 0x8100:标签头 16 位,标识这是一个 802.1Q 帧;后 16 位为 TCI(标签控制信息)。
- VLAN ID 12 位:可用范围 1~4094,共 4094 个;
0表示「仅优先级、无 VLAN」,4095保留——所以不是 4096。 - PCP 3 位 + DEI 1 位:PCP 承载 802.1p 优先级(QoS,8 级),DEI(旧称 CFI)标记拥塞时可优先丢弃。
- 打标改帧:插入 Tag 后帧变长,FCS 必须重算;最大帧长 1518 → 1522 字节。
- Access 端口:接入端口,连终端设备(PC / 打印机),只属单一 VLAN,收发的是不带标签的普通帧。
- Trunk 端口:干道端口,连交换机 / 路由器,承载多个 VLAN 的流量,帧带 802.1Q 标签以区分归属。
- Native VLAN(本征 VLAN):Trunk 上不打标签直接传的那个 VLAN,默认 VLAN 1;两端必须一致,否则「VLAN 跳跃」隐患。
- VLAN 间通信需三层设备:VLAN 隔离的是广播域(L2),跨 VLAN 必须经路由器 / 三层交换机做三层转发。
- 单臂路由(router-on-a-stick):一条 Trunk 接路由器,路由器上建多个子接口、每个子接口对应一个 VLAN 网关,实现 VLAN 互通。
- 默认 VLAN 1:未配置的交换机所有端口都在 VLAN 1;生产环境建议把业务 VLAN 与管理 / Native VLAN 错开以减小攻击面。
一台交换机默认把所有端口放进同一个广播域——任何一台主机发的广播帧(ARP 请求、DHCP Discover)会泛洪到全部端口。网络一大,广播流量、安全风险、布线僵化三个问题就一起爆发。VLAN(Virtual LAN,虚拟局域网) 的解法是:在同一套物理交换机上,用软件把端口逻辑划分成多个互相隔离的广播域,让「市场部」「研发部」「访客」即使插在同一台交换机上也彼此看不见。本页讲清 VLAN 解决什么、802.1Q 如何往帧里塞一个 4 字节标签来标记 VLAN 归属、Access 端口与 Trunk 端口的分工,以及为什么 VLAN 之间通信必须借道三层设备(路由器 / 三层交换机,即「单臂路由」)。
一、为什么需要 VLAN:一个大广播域的三宗罪
回顾上一页 交换机工作原理:交换机靠 MAC 地址表做单播转发,但遇到广播帧(目的 MAC 全 FF)和未知单播时,会向除入端口外的所有端口泛洪。默认情况下,一台交换机的所有端口构成单个广播域——把多台交换机级联起来,这个广播域只会更大。
域一大,三个问题接踵而至:
- 广播泛滥(broadcast storm):ARP 请求、DHCP Discover、NetBIOS 通告等广播随主机数线性增长,每台主机都要收、要解析、要丢弃,白白消耗带宽与 CPU。Wikipedia 对此的描述是「随着网络增长,广播流量按比例上升,VLAN 通过形成多个广播域来管理广播流量」。
- 安全性差:同一广播域内,任意主机都能嗅探到广播、伪造 ARP(见下一页 ARP 协议与 ARP 欺骗),财务和访客挤在一个二层网络里毫无隔离。
- 不灵活:想按「部门」而非「物理位置」分组,传统做法得搬设备、重新布线——人事换个工位就要改网络拓扑。
VLAN 把「物理一张网」拆成「逻辑多张网」
Cloudflare 的比喻很直白:VLAN 好比「在同一个房间里架设两套各自独立的 LAN——但不是靠两台路由器两条线,而是用软件虚拟划分,只需一台路由器、一条上行」。物理上还是同一套交换机和网线,逻辑上已是互不相通的多个网络。
VLAN 的定义因此是:在数据链路层(OSI 第 2 层)被划分并隔离出来的一个广播域。一个 VLAN = 一个广播域;广播帧只在本 VLAN 内泛洪,绝不越界。要分几个广播域,就划几个 VLAN,与谁插在哪台交换机无关。
二、VLAN 划分示意:按职能而非位置分组
┌──────────── 物理交换机 SW1 ────────────┐
研发-PC ── P1 ● │ P1,P2 → VLAN 10 (研发) │
研发-PC ── P2 ● │ P3,P4 → VLAN 20 (市场) │ ← 同一台交换机
市场-PC ── P3 ○ │ P5 → VLAN 99 (访客) │ 逻辑上 3 个
市场-PC ── P4 ○ │ │ 独立广播域
访客-PC ── P5 ◆ │ 广播只在同色端口间泛洪,跨色不可见 │
└────────────────────────────────────────┘
VLAN 10 的广播 ──╳──> VLAN 20 (二层隔离,互不可达)
VLAN 10 ←─ 需经三层设备(路由器/三层交换机)─→ VLAN 20划分方式主要两类(Wikipedia 归纳):
- 静态 / 基于端口(Port-based,最常用):管理员把交换机端口指定给某个 VLAN,插上去的设备自动继承该端口的 VLAN。简单、可控,是企业网主流。
- 动态(Dynamic):通过 VMPS(VLAN Management Policy Server)等机制,依据源 MAC 地址或登录身份动态判定 VLAN 归属,设备换端口也能保持原 VLAN。
VLAN ≠ 子网,但通常一一对应
VLAN 是二层概念(划分广播域),子网是三层概念(划分 IP 网段)。两者本无强绑定,但工程实践上几乎总是一个 VLAN 对应一个 IP 子网——这样三层设备才能用「子网 ↔ VLAN」的映射来路由。Cloudflare 也特别提示:「VLAN 与 subnet 是两种不同的网络细分方式」,别混为一谈。
三、802.1Q 标签:帧里多出的 4 个字节
一根 Trunk 上同时跑着多个 VLAN 的帧,对端怎么知道某一帧属于哪个 VLAN?答案是 IEEE 802.1Q:在以太网帧里插入一个 4 字节(32 位)的 VLAN 标签。这是事实上的 VLAN 标记标准(Cisco 早期的 ISL 已淘汰)。
回顾 以太网帧结构:标签插在**「源 MAC」之后、「类型 / 长度」之前**。
未打标签的普通以太网帧:
┌─────────┬─────────┬───────────┬──────────┬─────┐
│ 目的MAC │ 源MAC │ 类型/长度 │ 数据 │ FCS │
│ 6 B │ 6 B │ 2 B │ 46~1500B │ 4 B │
└─────────┴─────────┴───────────┴──────────┴─────┘
打了 802.1Q 标签的帧(在源MAC后插入 4 字节 Tag):
┌─────────┬─────────┬═══════════════════════┬───────────┬──────────┬─────┐
│ 目的MAC │ 源MAC ║ 802.1Q Tag (4 字节) ║ 类型/长度 │ 数据 │ FCS*│
│ 6 B │ 6 B ║ ║ 2 B │ 46~1500B │ 4 B │
└─────────┴─────────╚═══════════════════════╝───────────┴──────────┴─────┘
│ │
▼ 展开这 4 字节(32 位)▼
┌──────────────────┬─────┬─────┬──────────────────────┐
│ TPID = 0x8100 │ PCP │ DEI │ VID (VLAN ID 12 位) │
│ 16 位 │ 3位 │ 1位 │ 可用 1~4094 │
└──────────────────┴─────┴─────┴──────────────────────┘
└──── TCI 标签控制信息 16 位 ────┘
* 插入 Tag 后帧变长,FCS 必须重新计算;最大帧长 1518 → 1522 字节四个字段逐一拆解:
- TPID(Tag Protocol Identifier,16 位)=
0x8100:固定值,告诉接收方「后面跟的是 802.1Q 标签信息」。它占据了原本「类型」字段的位置,所以老设备看到0x8100也知道这是带标签帧。 - PCP(Priority Code Point,3 位):承载 IEEE 802.1p 优先级,0~7 共 8 级,用于二层 QoS(语音 / 视频优先)。
- DEI(Drop Eligible Indicator,1 位):旧称 CFI,现表示「拥塞时本帧是否可被优先丢弃」。
- VID(VLAN Identifier,12 位):真正的 VLAN 编号。12 位理论上 0~4095 共 4096 个,但
0表示「仅带优先级、不属任何 VLAN」、4095保留,故实际可用 1~4094,共 4094 个。
不是 4096,是 4094
12 位 = 2¹² = 4096 个取值,但首尾两个(0 与 4095)被保留,实际可用 VLAN 数 = 4094。这是高频考点,别记成 4096。需要更多 VLAN(如运营商场景)时用 802.1ad / QinQ 双层标签:外层 S-TAG(TPID 0x88a8)+ 内层 C-TAG,嵌套扩展。
插入标签会改变帧内容,原有的 FCS(帧校验序列)必须重新计算;同时帧整体变长,以太网最大帧长从 1518 字节增至 1522 字节(多出的正是这 4 字节)——这也是为什么交换机链路常要支持「baby giant」帧。
四、Access 端口 vs Trunk 端口
802.1Q 标签只在交换机之间的链路上需要;连终端的端口反而不该带标签——PC 的网卡通常不认识 VLAN 标签。于是交换机端口分两种角色:
| 维度 | Access 端口(接入) | Trunk 端口(干道) |
|---|---|---|
| 连接对象 | 终端设备:PC、打印机、IP 电话 | 交换机↔交换机、交换机↔路由器 |
| VLAN 归属 | 只属单一 VLAN | 同时承载多个 VLAN |
| 帧是否带标签 | 不带标签(untagged)的普通帧 | 带 802.1Q 标签(tagged)以区分 VLAN |
| 打标 / 剥标 | 入向打标、出向剥标,对终端透明 | 维持标签原样转发(Native VLAN 除外) |
| 典型用途 | 把某台主机划入某个 VLAN | 让多个 VLAN 跨交换机延伸 / 上行到路由器 |
工作流是这样串起来的:
- PC 把普通帧发给 Access 端口;
- 交换机在入向给它打上该 Access 端口所属 VLAN 的标签;
- 帧若需跨交换机,从 Trunk 端口带标签转发给对端;
- 对端交换机按 VID 找到目标 Access 端口,出向剥掉标签,还原成普通帧交给目标 PC。
整个打标 / 剥标过程对终端完全透明——PC 全程只见普通以太网帧,根本不知道 VLAN 的存在。
Native VLAN(本征 VLAN):Trunk 上唯一不打标签的 VLAN
Trunk 默认带标签转发,但有一个例外——Native VLAN 的帧不打标签直接传(默认是 VLAN 1)。设计初衷是兼容不识别标签的老设备。两端 Trunk 的 Native VLAN 必须配置一致,否则会产生「VLAN 跳跃(VLAN hopping)」安全隐患;安全实践建议把 Native VLAN 改成一个不承载任何业务的空闲 VLAN。
五、VLAN 间通信:为什么必须借道三层
VLAN 在二层把广播域彻底隔开——这正是它的价值,但也带来一个直接后果:两个 VLAN 之间默认无法通信。研发 VLAN 10 的主机想访问市场 VLAN 20 的服务器,二层交换机做不到,因为它们分属不同广播域、不同子网。
跨 VLAN 通信必须上升到三层(网络层)做路由。Wikipedia 的表述是「不同 VLAN 间的通信,需要由一台路由器(三层设备)作为骨干来转发流量」。两种实现:
- 单臂路由(router-on-a-stick):交换机用一条 Trunk 接路由器;路由器在这条物理口上划分多个子接口,每个子接口配一个 VLAN 的网关 IP。VLAN 10 的主机把跨网段流量发给自己的网关(路由器 VLAN 10 子接口),路由器三层路由后从 VLAN 20 子接口发回。一条物理线承载所有 VLAN 的互访,故称「单臂」。
- 三层交换机(L3 Switch):在交换机内部直接集成路由功能,为每个 VLAN 创建一个 **SVI(交换虚拟接口)**当网关,VLAN 间转发在交换芯片里硬件完成,性能远高于单臂路由——这是中大型企业网的主流方案。
单臂路由(router-on-a-stick):
┌─────────── 路由器 ───────────┐
│ 子接口 G0/0.10 网关 10.0.10.1 (VLAN 10) │
│ 子接口 G0/0.20 网关 10.0.20.1 (VLAN 20) │
└──────────────┬───────────────┘
│ 一条 Trunk(带标签,承载 VLAN 10/20)
┌───────┴───────┐
│ 交换机 SW1 │
└──┬─────────┬──┘
Access │ │ Access
VLAN 10 │ │ VLAN 20
研发-PC 市场-PC
10.0.10.x 10.0.20.x
研发→市场:研发-PC 把包发给网关 10.0.10.1 → 路由器三层路由 → 从 .20.1 转出 → 市场-PCVLAN 隔离的是「二层广播」,不是「三层可达」
配了三层路由后,VLAN 间就能互访了——VLAN 本身不等于防火墙。真正的「禁止访问财务网段」要靠三层 ACL / 防火墙策略在路由设备上限制。VLAN 提供的是「广播域隔离 + 默认不互通」的基础,访问控制是其上的另一层。三层路由的细节(IP、网关、子网)属于网络层范畴,本叶不展开。
小结
VLAN 用软件在二层把一个物理网络逻辑切分成多个广播域,一举解决了大广播域的「广播泛滥、安全差、不灵活」三宗罪:按部门 / 职能分组而非物理位置,广播被关进各自的 VLAN,部门间天然二层隔离。
落到帧上,靠的是 802.1Q——在源 MAC 后插入 4 字节标签:TPID 0x8100 标识、PCP 3 位带优先级、DEI 1 位、VID 12 位(可用 1~4094 共 4094 个),插入后重算 FCS、最大帧长涨到 1522 字节。端口分工清晰:Access 端口连终端、属单一 VLAN、收发不带标签的普通帧;Trunk 端口连交换机 / 路由器、承载多 VLAN、用标签区分(Native VLAN 除外)。最后,VLAN 隔离的是广播域,跨 VLAN 通信必须借道三层设备——单臂路由或三层交换机充当各 VLAN 的网关。
上一页:交换机工作原理——理解了交换机如何在单个广播域内转发,才看得懂 VLAN 如何把它切成多个。 下一页:ARP 协议与 ARP 欺骗——VLAN 把广播域缩小后,同一 VLAN 内仍靠 ARP 做「IP → MAC」解析,而这正是 ARP 欺骗的舞台。