🔪 VLAN 虚拟局域网:广播域的逻辑切割
在传统的二层网络拓扑中,连接在同一台物理交换机上的所有设备都处于同一个广播域(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 个字节包含极其重要的信息:
- TPID(标签协议标识符):固定为
0x8100,告诉网络设备“这是一个带有 802.1Q 标签的帧”。 - PCP(优先级代码点):3 位,用于 QoS(服务质量),定义流量优先级。
- DEI(丢弃指示符):1 位,用于网络拥塞时指示哪些帧可以优先丢弃。
- VID(VLAN ID):最核心的 12 位。它决定了该数据帧属于哪个 VLAN。12 位的二进制空间意味着最多可以划分 $2^12 = 4096$ 个 VLAN。
VLAN 0和VLAN 4095为系统保留。- 可用范围为
VLAN 1到VLAN 4094。 VLAN 1通常是所有交换机出厂默认的本征 VLAN(Native VLAN)。
3. 交换机端口模式:Access vs Trunk
Section titled “3. 交换机端口模式:Access vs Trunk”为了让打了标签的数据帧能够正确进出交换机,并与那些根本不懂 VLAN 是什么的普通设备(如电脑、打印机)兼容,交换机的端口被定义了不同的工作模式。
3.1 Access 端口 (接入端口)
Section titled “3.1 Access 端口 (接入端口)”这是用来连接终端设备(如 PC、服务器)的端口。普通网卡通常不处理带有 VLAN 标签的数据包。
- 接收(Ingress):当毫无标签的裸数据帧从 PC 进入 Access 端口时,交换机会给它打上该端口默认的 VLAN ID(称为 PVID,Port VLAN ID)。
- 发送(Egress):当带有 VLAN 标签的数据帧准备从 Access 端口发往 PC 时,交换机会**剥离(Strip)**掉标签,还原成标准的以太网帧发给终端。
3.2 Trunk 端口 (中继端口)
Section titled “3.2 Trunk 端口 (中继端口)”这是用来连接交换机与交换机,或**交换机与路由器(防火墙)**的端口。一条物理网线需要承载多个 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)。
单臂路由的运作流程:
- 防火墙/路由器(例如 OPNsense)只用一根物理网线连接到交换机的 Trunk 端口。
- 在路由器的这一个物理网卡上,创建多个虚拟子接口(VLAN Interface),例如
eth0.10(关联 VLAN 10)和eth0.20(关联 VLAN 20)。 - 每个虚拟子接口配置不同网段的网关 IP(如
192.168.10.1和192.168.20.1)。 - 当
VLAN 10的主机要访问VLAN 20时,数据包先被打上10的标签送到路由器。路由器收到后查路由表,将标签替换为20,再从同一个物理接口发回交换机,最终送达目标。
5. 工程实践:典型的 VLAN 规划表
Section titled “5. 工程实践:典型的 VLAN 规划表”在复杂的网络架构中,提前规划 VLAN ID 和对应的 IP 网段是极其必要的。良好的规划能让防火墙规则(ACL)的编写变得清晰无比。
| VLAN ID | 逻辑网段 (CIDR) | 区域名称 (Zone) | 安全策略与路由说明 |
|---|---|---|---|
VLAN 1 | N/A | Default / Native | 高危保留区。工程最佳实践要求:永远不要将核心业务放在 VLAN 1。 |
VLAN 10 | 10.0.10.0/24 | Management (管理网) | 存放 PVE、TrueNAS、交换机后台等设备的管理 IP。仅允许管理员设备接入。 |
VLAN 20 | 10.0.20.0/24 | Server/App (核心服务) | 存放各类虚拟机、Docker 容器。允许向外网提供特定的端口映射服务。 |
VLAN 30 | 10.0.30.0/24 | IoT (物联网设备) | 存放智能家居、摄像头。安全策略:完全阻断访问其他 VLAN,严格限制访问公网。 |
VLAN 40 | 10.0.40.0/24 | Guest (访客网络) | 仅提供 DHCP 和 DNS,允许访问公网,绝对禁止访问内网任何其他 VLAN 资源。 |
📚 权威规范参考
Section titled “📚 权威规范参考”- IEEE 802.1Q: IEEE Standard for Local and metropolitan area networks—Bridges and Bridged Networks (VLAN 标签机制的全球标准)