Skip to content

🔪 VLAN 虚拟局域网:广播域的逻辑切割

🌱 创建: 2026/04/01 ⏱️ 更新: 2026/05/22

This content is not available in your language yet.

在传统的二层网络拓扑中,连接在同一台物理交换机上的所有设备都处于同一个广播域(Broadcast Domain)。这意味着,当一台设备发送 ARP 请求或 DHCP 发现报文时,交换机会将这些广播包泛洪(Flood)给所有端口。

随着网络规模的扩大,海量的广播包不仅会消耗设备 CPU 性能(广播风暴),还会带来严重的安全隐患(例如访客可以直接扫描并访问核心服务器)。为了解决物理隔离成本过高的问题,IEEE 制定了 VLAN(虚拟局域网,定义于 IEEE 802.1Q 标准) 技术。


1. 核心概念:逻辑上的“多台交换机”

Section titled “1. 核心概念:逻辑上的“多台交换机””

VLAN 的本质,是通过软件配置,将一台物理交换机在逻辑上切割成多台独立的“虚拟交换机”。

属于不同 VLAN 的设备,即使它们插在同一台物理交换机相邻的两个端口上,它们在二层链路层也是完全隔离的。它们无法通过 MAC 地址直接通信,广播包也绝对不会跨越 VLAN 边界。


2. 底层机制:IEEE 802.1Q 标签 (Tagging)

Section titled “2. 底层机制:IEEE 802.1Q 标签 (Tagging)”

交换机内部是如何区分不同的数据帧属于哪个 VLAN 的呢?答案是给数据帧“打标签”(Tagging)

当一个标准的以太网帧(Ethernet Frame)进入交换机内部时,如果启用了 VLAN,交换机会在源 MAC 地址和类型字段之间,强行插入一个 4 字节(32 位)的 802.1Q 标签

这 4 个字节包含极其重要的信息:

  1. TPID(标签协议标识符):固定为 0x8100,告诉网络设备“这是一个带有 802.1Q 标签的帧”。
  2. PCP(优先级代码点):3 位,用于 QoS(服务质量),定义流量优先级。
  3. DEI(丢弃指示符):1 位,用于网络拥塞时指示哪些帧可以优先丢弃。
  4. VID(VLAN ID)最核心的 12 位。它决定了该数据帧属于哪个 VLAN。12 位的二进制空间意味着最多可以划分 $2^12 = 4096$ 个 VLAN。
    • VLAN 0VLAN 4095 为系统保留。
    • 可用范围为 VLAN 1VLAN 4094
    • VLAN 1 通常是所有交换机出厂默认的本征 VLAN(Native VLAN)。

3. 交换机端口模式:Access vs Trunk

Section titled “3. 交换机端口模式:Access vs Trunk”

为了让打了标签的数据帧能够正确进出交换机,并与那些根本不懂 VLAN 是什么的普通设备(如电脑、打印机)兼容,交换机的端口被定义了不同的工作模式。

这是用来连接终端设备(如 PC、服务器)的端口。普通网卡通常不处理带有 VLAN 标签的数据包。

  • 接收(Ingress):当毫无标签的裸数据帧从 PC 进入 Access 端口时,交换机会给它打上该端口默认的 VLAN ID(称为 PVID,Port VLAN ID)。
  • 发送(Egress):当带有 VLAN 标签的数据帧准备从 Access 端口发往 PC 时,交换机会**剥离(Strip)**掉标签,还原成标准的以太网帧发给终端。

这是用来连接交换机与交换机,或**交换机与路由器(防火墙)**的端口。一条物理网线需要承载多个 VLAN 的流量。

  • 接收与发送:Trunk 端口允许带有各种 VLAN ID 标签的数据帧原封不动地通过。
  • 本征 VLAN(Native VLAN):Trunk 端口上唯一一个不打标签的 VLAN。如果有无标签的数据帧进入 Trunk 口,会被默认归入 Native VLAN。

4. 架构进阶:VLAN 间路由 (Inter-VLAN Routing)

Section titled “4. 架构进阶:VLAN 间路由 (Inter-VLAN Routing)”

如前所述,VLAN 在二层是绝对隔离的。如果 VLAN 10 (服务器) 想要与 VLAN 20 (管理网) 通信,必须通过**三层设备(路由器或三层交换机)**进行路由转发。

在企业级或进阶的极客架构中,最经典的实现方式是 单臂路由(Router on a Stick)

单臂路由的运作流程

  1. 防火墙/路由器(例如 OPNsense)只用一根物理网线连接到交换机的 Trunk 端口。
  2. 在路由器的这一个物理网卡上,创建多个虚拟子接口(VLAN Interface),例如 eth0.10(关联 VLAN 10)和 eth0.20(关联 VLAN 20)。
  3. 每个虚拟子接口配置不同网段的网关 IP(如 192.168.10.1192.168.20.1)。
  4. VLAN 10 的主机要访问 VLAN 20 时,数据包先被打上 10 的标签送到路由器。路由器收到后查路由表,将标签替换为 20,再从同一个物理接口发回交换机,最终送达目标。

5. 工程实践:典型的 VLAN 规划表

Section titled “5. 工程实践:典型的 VLAN 规划表”

在复杂的网络架构中,提前规划 VLAN ID 和对应的 IP 网段是极其必要的。良好的规划能让防火墙规则(ACL)的编写变得清晰无比。

admin@tech-fortress:~# cat /etc/network/vlan_architecture.conf
VLAN ID逻辑网段 (CIDR)区域名称 (Zone)安全策略与路由说明
VLAN 1N/ADefault / Native高危保留区。工程最佳实践要求:永远不要将核心业务放在 VLAN 1。
VLAN 1010.0.10.0/24Management (管理网)存放 PVE、TrueNAS、交换机后台等设备的管理 IP。仅允许管理员设备接入。
VLAN 2010.0.20.0/24Server/App (核心服务)存放各类虚拟机、Docker 容器。允许向外网提供特定的端口映射服务。
VLAN 3010.0.30.0/24IoT (物联网设备)存放智能家居、摄像头。安全策略:完全阻断访问其他 VLAN,严格限制访问公网
VLAN 4010.0.40.0/24Guest (访客网络)仅提供 DHCP 和 DNS,允许访问公网,绝对禁止访问内网任何其他 VLAN 资源。

  • IEEE 802.1Q: IEEE Standard for Local and metropolitan area networks—Bridges and Bridged Networks (VLAN 标签机制的全球标准)

Last updated: