1. 先搞清楚 VLAN 到底解决了园区网的什么核心痛点
如果你在管理一个几十上百台电脑的办公网络,或者一个教学楼、一个厂区的网络,最头疼的往往不是网速,而是混乱。比如,财务部的电脑为什么能收到研发部的广播包?行政部的打印机为什么能被访客随意连接?某个部门的网络环路,为什么能把整个公司搞瘫痪?
VLAN,就是解决这些混乱的“逻辑隔离墙”。它的核心价值不是提升速度,而是把一个物理上连在一起的网络,切割成多个逻辑上独立的“小网络”。每个小网络就是一个广播域,广播、组播流量只在域内传播,不会干扰其他域。这就像在一栋大楼里,用防火墙隔出了一个个独立的办公室,而不是所有人都在一个开放的大厅里。
很多人觉得 VLAN 配置复杂,底层原理抽象,所以宁愿用最简单的“一根网线插到底”的扁平网络。但一旦网络规模超过几十台设备,这种扁平网络的弊端就会指数级放大:广播风暴、安全隐患、管理困难。因此,理解 VLAN 的“为什么”和“怎么实现”,是网络从“能用”到“好管”的关键一步。
2. 没有 VLAN 的园区网:一场广播的灾难
要理解 VLAN 的必要性,我们先看看没有它的网络是什么样子。
在一个传统的、基于 Hub(集线器)或早期交换机的二层网络中,所有设备都处于同一个广播域。当一台设备发送一个广播帧(比如 ARP 请求“谁的 IP 是 192.168.1.1?”),这个帧会被所有连接到这个网络上的设备接收和处理。在只有十几台电脑的小办公室,这没什么。但当网络扩展到几百台设备时:
- 广播风暴风险:任何一个端口的环路、任何一个设备的异常广播,都会瞬间淹没整个网络,导致所有业务中断。
- 安全隐患:所有设备都在一个“池子”里。攻击者接入网络后,可以轻易地监听广播流量、发起 ARP 欺骗,威胁所有设备的安全。
- 资源浪费:每台设备的 CPU 都要处理大量与自己无关的广播包,造成无谓的资源消耗。
- 管理僵化:你想把财务部和研发部的网络策略分开?对不起,物理上连在一起,很难做精细的访问控制。
交换机虽然通过 MAC 地址表实现了单播帧的点对点转发,但它无法隔离广播帧。广播帧依然会从接收端口之外的所有端口泛洪出去。VLAN 的出现,就是为了给交换机赋予“隔离广播”的能力。
3. VLAN 的底层实现:802.1Q 标签是如何工作的
VLAN 的实现,核心在于一个叫做802.1Q的协议标准。它通过在标准的以太网帧里“打标签”来实现。
3.1 标准以太网帧 vs 带 VLAN 标签的帧
我们先看一个标准以太网帧的结构(简化):
| 目标MAC (6字节) | 源MAC (6字节) | 类型/长度 (2字节) | 数据 (46-1500字节) | 帧校验序列 (4字节) |当这个帧需要穿越支持 VLAN 的交换机时,交换机会在“源MAC地址”和“类型/长度”字段之间,插入一个4字节的 802.1Q 标签(Tag)。
插入标签后的帧结构:
| 目标MAC (6字节) | 源MAC (6字节) | **802.1Q Tag (4字节)** | 类型/长度 (2字节) | 数据 | 帧校验序列 |这个 4 字节的标签里,最关键的是12 比特的 VLAN ID 字段。12 比特能表示 0-4095 共 4096 个值,其中 0 和 4095 被保留,所以实际可用的 VLAN ID 是1-4094。这就是你配置vlan 10,vlan 20时,那个数字的来源。
3.2 交换机端口的三种关键角色
交换机端口如何处理这个标签,决定了 VLAN 的流量走向。这是配置中最容易出错的地方。
Access 端口:
- 角色:连接终端设备(PC、服务器、打印机)。这些设备自己不懂 VLAN 标签。
- 工作方式:
- 入方向(数据进交换机):收到不带标签的“原始帧”。交换机会根据端口配置的PVID,给这个帧打上对应的 VLAN 标签。例如,一个 Access 端口属于
vlan 10,它的 PVID 就是 10。所有从这个端口进入的帧,都被标记为 VLAN 10。 - 出方向(数据出交换机):发送帧给终端前,交换机会剥离(Strip)帧头的 802.1Q 标签,还原成标准的以太网帧。因为终端网卡不认识这个标签。
- 入方向(数据进交换机):收到不带标签的“原始帧”。交换机会根据端口配置的PVID,给这个帧打上对应的 VLAN 标签。例如,一个 Access 端口属于
Trunk 端口:
- 角色:连接交换机与交换机,或者连接支持 VLAN 的服务器/路由器。用于承载多个 VLAN 的流量。
- 工作方式:
- 入方向:可以接收带标签或不带标签的帧。对于不带标签的帧,同样用端口的 PVID 给它打标签(这个 PVID 通常是一个“默认VLAN”,比如 vlan 1)。
- 出方向:保留(Keep)帧的 VLAN 标签,并发送出去。这样,对端的交换机才能根据标签知道这个帧属于哪个 VLAN。
Hybrid 端口(部分厂商如华为支持):
- 角色:更灵活,可以像 Access 端口一样对某些 VLAN 剥离标签,像 Trunk 端口一样对另一些 VLAN 保留标签。这常用于连接既需要访问多个 VLAN,自身又不支持标签的服务器(如一些虚拟化主机)。
一个核心比喻:Access 端口就像公司的内部部门,员工(数据帧)进出不戴工牌(VLAN标签),保安(交换机)根据你进的哪个门(端口PVID)给你分配部门。Trunk 端口就像部门之间的走廊,走在走廊上的人都必须戴着工牌,这样到了另一个部门,保安才知道你该去哪。
3.3 用 Wireshark 抓包看 VLAN 标签
理论学习不如眼见为实。你可以在 Trunk 链路上用 Wireshark 抓包,直观看到 VLAN 标签。
- 确保你的抓包网卡能抓到 Trunk 口的流量(可能需要端口镜像)。
- 在 Wireshark 的抓包过滤器中,可以输入
vlan来只显示带 VLAN 标签的包。 - 找到任何一个以太网帧,在详情面板中展开 “Ethernet II” 部分,如果看到 “802.1Q Virtual LAN” 字样,点开它。你就能直接看到
VLAN ID: 10这样的信息。这就是帧的“身份证”。
如果抓到的包没有显示 VLAN 信息,检查抓包位置是否正确(必须在Trunk链路上),以及 Wireshark 是否开启了VLAN显示过滤(在“视图”->“内部”->“解析VLAN ID”中确认)。
4. 从配置命令反推底层行为:以锐捷交换机为例
理解了原理,再看配置命令就不会觉得是“魔法”了。我们结合热搜里的锐捷命令来解读。
假设场景:交换机连接一台 PC(端口 GigabitEthernet 0/1),连接另一台交换机(端口 GigabitEthernet 0/24)。PC 需要接入 VLAN 10。
第一步:创建 VLAN
Ruijie> enable Ruijie# configure terminal Ruijie(config)# vlan 10 Ruijie(config-vlan)# name Finance- 底层动作:在交换机的 VLAN 数据库中,创建了一个 ID 为 10 的逻辑表项。此时还没有任何端口属于它。
第二步:将 PC 端口配置为 Access 模式并划入 VLAN 10
Ruijie(config)# interface gigabitEthernet 0/1 Ruijie(config-if-GigabitEthernet 0/1)# switchport mode access Ruijie(config-if-GigabitEthernet 0/1)# switchport access vlan 10switchport mode access:告诉交换机,这个端口是 Access 角色。switchport access vlan 10:- 将这个端口的PVID 设置为 10。
- 将端口加入到 VLAN 10 的成员列表中。
- 底层动作:从此,从 Gi 0/1 进入的“裸帧”,都会被自动打上 VLAN 10 的标签。从交换机向 Gi 0/1 发送 VLAN 10 的帧时,会先剥掉标签再发出。
第三步:将交换机互联端口配置为 Trunk 模式,允许 VLAN 10 通过
Ruijie(config)# interface gigabitEthernet 0/24 Ruijie(config-if-GigabitEthernet 0/24)# switchport mode trunk Ruijie(config-if-GigabitEthernet 0/24)# switchport trunk allowed vlan 10switchport mode trunk:端口角色设为 Trunk。switchport trunk allowed vlan 10:只允许携带 VLAN 10 标签的帧通过这个 Trunk。这是出于安全和管理考虑的最佳实践,即“按需放行”,而不是默认允许所有 VLAN(1-4094)。- 底层动作:对于从 Gi 0/24 进入的带 VLAN 10 标签的帧,放行。对于从交换机内部发往 Gi 0/24 且标签为 VLAN 10 的帧,保留标签发送出去。
关于port trunk pvid vlan 10: 这个命令在 Trunk 端口上设置了 PVID。它的作用是:处理从该 Trunk 端口收到的、不带标签的帧。虽然 Trunk 链路本应只传输带标签的帧,但有时可能收到意外的不带标签的帧(比如对端配置错误)。此时,交换机会用这个 PVID(例如 10)给帧打上标签。这是一个重要的安全/策略配置点,如果设置不当,可能导致不受控的流量进入错误的 VLAN。
查看配置结果:
Ruijie# show vlan brief这个命令会显示所有 VLAN 及其成员端口。你应该能看到 VLAN 10 后面跟着Gi0/1这个成员。而 Trunk 端口 Gi0/24 通常不会直接显示在这个列表里,需要用show interfaces trunk或show running-config interface gi0/24来查看其 Trunk 配置。
5. VLAN 间通信:为什么需要三层设备
VLAN 实现了二层隔离,这意味着属于不同 VLAN 的设备,即使 IP 地址在同一个网段,也无法直接通过二层 MAC 地址通信。因为它们处于不同的广播域,ARP 请求无法跨越 VLAN 传播。
要实现 VLAN 间通信,必须借助三层(网络层)路由功能。常见方案有:
三层交换机(SVI 接口):这是园区网最主流、性能最好的方案。
- 在三层交换机上,为每个 VLAN 创建一个虚拟的三层接口,称为VLAN Interface或SVI。
- 例如:
Ruijie(config)# interface vlan 10 Ruijie(config-if-VLAN 10)# ip address 192.168.10.1 255.255.255.0 Ruijie(config)# interface vlan 20 Ruijie(config-if-VLAN 20)# ip address 192.168.20.1 255.255.255.0 - 底层动作:VLAN 10 内的主机(如 PC, IP 192.168.10.100/24)将网关设置为 192.168.10.1。当它要访问 VLAN 20 的主机(192.168.20.100)时,数据包会先发给网关 192.168.10.1(三层交换机)。交换机查路由表,发现目标网络 192.168.20.0/24 直连在 VLAN 20 接口上,于是将数据包从 VLAN 20 的二层接口转发出去,最终送达目标主机。整个过程由交换机的硬件 ASIC 高速完成,称为“一次路由,多次交换”。
独立路由器(单臂路由):在核心交换机与路由器之间使用一条 Trunk 链路,路由器上创建多个子接口,每个子接口对应一个 VLAN 并配置 IP 地址作为网关。这种方式性能瓶颈在路由器,适用于小型网络或过渡方案。
关键点:VLAN 间通信不是自动的。你必须显式地配置三层网关,并确保各 VLAN 的 IP 网段规划合理、不重叠,主机正确配置了网关地址。
6. 高级 VLAN 技术与实践避坑指南
除了基础的基于端口的 VLAN,还有一些进阶技术来应对更复杂的需求。
6.1 基于子网的 VLAN
通常 VLAN 是基于交换机端口划分的。但有些场景下,我们希望交换机根据数据包的IP 子网来动态决定其 VLAN。这通常需要在支持该功能的交换机上全局启用,并在端口上配置关联关系。
- 应用场景:对接一些无法识别 VLAN 标签、但会发送不同网段 IP 流量的老旧设备或特定类型的服务器。
- 注意:这增加了配置复杂度,且依赖于 IP 包的完整性,在安全性和稳定性上不如基于端口的 VLAN 直接。新手不建议优先使用,应先掌握好端口 VLAN。
6.2 Default VLAN (VLAN 1)
VLAN 1 是交换机的默认 VLAN。所有端口初始都属于 VLAN 1。它通常用于承载控制协议(如 CDP、LLDP、STP BPDU)的流量。
- 最佳实践:不要将用户数据流量放在 VLAN 1。将 VLAN 1 仅用于管理或保留。因为 VLAN 1 的广泛存在可能成为安全弱点。应该为业务创建新的 VLAN(如 10, 20, 30...),并将所有用户端口移出 VLAN 1。
6.3 配置实验中的常见“坑”与排查顺序
当你按照实验手册配置 VLAN 却不通时,按这个顺序排查:
检查物理连接与端口状态:
Ruijie# show interfaces status确认端口是
connected,速率双工正常。这是所有问题排查的第一步。确认 VLAN 创建与端口成员关系:
Ruijie# show vlan brief Ruijie# show running-config interface gigabitethernet 0/1确认 VLAN 已创建,且端口模式(access/trunk)和 VLAN 分配正确。
检查 Trunk 配置:
Ruijie# show interfaces trunk确认 Trunk 端口两端模式一致,并且
allowed vlan列表包含了需要通信的 VLAN。检查 MAC 地址表:
Ruijie# show mac-address-table interface gigabitethernet 0/1查看交换机是否从正确的端口学到了目标设备的 MAC 地址,并且该 MAC 地址关联的 VLAN 是否正确。
检查三层配置(如需跨 VLAN):
Ruijie# show ip interface brief Ruijie# show running-config interface vlan 10确认 VLAN 接口已创建、已
no shutdown、IP 地址配置正确。在主机上用ping测试网关是否可达。使用抓包工具: 在 Trunk 链路或关键端口上镜像流量,用 Wireshark 抓包。这是终极手段。看帧是否带了预期的 VLAN 标签?ARP 请求是否发出?ARP 回复是否收到?这能直接看到二层通信的真相。
7. 园区网 VLAN 规划与部署的核心思路
最后,抛开具体命令,谈谈在真实园区网中部署 VLAN 的工程化思路。
规划先行:不要拿到交换机就敲命令。先画拓扑图,规划好:
- VLAN ID 和名称:按部门、功能、区域划分。如
VLAN 10: Office_Finance,VLAN 20: Office_RD。 - IP 网段:为每个 VLAN 规划一个独立的子网。如
192.168.10.0/24,192.168.20.0/24。 - 网关地址:通常使用子网的第一个或最后一个可用 IP,如
192.168.10.1/24。 - 端口规划:哪些是 Access 口(接终端),哪些是 Trunk 口(接交换机、服务器、路由器)。
- VLAN ID 和名称:按部门、功能、区域划分。如
分层实施:
- 接入层:端口多为 Access 模式,划分到相应用户 VLAN。配置端口安全等策略。
- 汇聚/核心层:端口多为 Trunk 模式,承载所有 VLAN 流量。在这里配置 VLAN 接口(SVI)作为网关,并实施 VLAN 间访问控制列表。
文档与标注:
- 在交换机配置里使用
description命令描述端口用途。 - 更新网络拓扑图,标注 VLAN ID 和 IP 网段。
- 记录所有变更。混乱的 VLAN 配置是日后排障的噩梦。
- 在交换机配置里使用
测试流程:
- 先配置单台交换机、单个 VLAN,接一台 PC 测试网络连通性。
- 再配置 Trunk,测试同一 VLAN 跨交换机的通信。
- 最后配置三层网关,测试 VLAN 间通信。
- 每一步都做好验证,不要一次性配置大量命令后再测试。
VLAN 技术本身并不新,但它是构建任何中等规模以上、可管理、可扩展、安全的企业网络的基石。理解其底层原理,能让你在配置时知其所以然,在排障时直击要害,而不是在复杂的现象面前盲目尝试。从“端口-VLAN”的映射关系,到“标签的添加与剥离”,再到“三层网关的桥接”,把这几个关键环节的逻辑串起来,你就能真正驾驭园区网中的 VLAN。