VLAN技术详解:从原理到实战

各位好,今天我们聊聊VLAN。说实话,VLAN这个概念刚出来的时候,我也觉得不就是个虚拟局域网嘛,有啥好讲的?直到我在一个大型园区网项目中,亲眼看到广播风暴把整个网络打瘫,才真正意识到VLAN的重要性。那场面,啧啧,所有交换机都在疯狂转发广播帧,网络延迟直接飙到秒级。

好,咱们正式开始。

一、VLAN的定义与作用

VLAN,全称Virtual Local Area Network,虚拟局域网。说白了,就是把一个物理网络,逻辑上切成多个相互隔离的广播域。

你想想看,没有VLAN的时候,一台交换机上所有端口都在同一个广播域里。只要有一台设备发个ARP广播,所有端口都得收一遍。设备一多,广播帧满天飞,CPU忙不过来,网络性能直线下降。

VLAN的核心作用有三个:

  • 隔离广播域:每个VLAN是一个独立的广播域,广播帧只在VLAN内部传播
  • 提高安全性:不同VLAN之间默认不能通信,相当于物理隔离
  • 简化管理:不用重新布线,通过软件配置就能调整网络结构

重要:VLAN是二层技术,不同VLAN之间的通信必须通过三层设备(路由器或三层交换机)来完成。

我记得有一次,客户说他们的财务系统和办公网络要隔离,但又不想重新拉网线。我直接说,配VLAN啊,一个VLAN 10给财务,一个VLAN 20给办公,完事。客户当时还半信半疑,配完之后直呼真香。

二、VLAN的划分方式

VLAN怎么划分?嗯,这里要分几种情况来讲。

1. 基于端口划分

这是最常用、最直观的方式。把交换机的某些端口划到一个VLAN里。比如端口1-8属于VLAN 10,端口9-16属于VLAN 20。

优点:配置简单,容易理解。
缺点:用户换了端口,VLAN就变了,不够灵活。

我在项目中遇到过,一个员工从工位A换到工位B,结果发现访问不了服务器了。为啥?因为工位B的端口在另一个VLAN里。所以后来我建议客户用下面这种方式。

2. 基于MAC地址划分

交换机会记录每个MAC地址属于哪个VLAN。不管设备插到哪个端口,只要MAC地址不变,VLAN就不变。

优点:用户移动设备时VLAN自动跟随,非常灵活。
缺点:维护MAC地址表很麻烦,设备一多就乱。而且MAC地址可以伪造,安全性存疑。

说实话,这种方式在实际项目中用得不多。除非是那种对移动性要求极高、设备数量又少的环境。

3. 基于协议划分

根据网络层协议类型来划分VLAN。比如IP协议的流量走VLAN 10,IPX协议的流量走VLAN 20。

这个现在基本没人用了。为啥?因为现在网络里几乎全是IP协议,IPX、AppleTalk这些早就淘汰了。你想想看,划分了也没意义啊。

个人建议:除非有特殊需求,否则优先使用基于端口的VLAN划分方式。简单、稳定、好排查问题。

三、VLAN的帧格式(802.1Q Tag)

好,接下来是重点。VLAN是怎么在帧里标识的?靠的就是802.1Q标签。

标准的以太网帧长这样:

| 目的MAC | 源MAC | 类型/长度 | 数据 | FCS |
|  6字节  |  6字节 |   2字节   | 46-1500字节 | 4字节 |

加了802.1Q标签之后,变成这样:

| 目的MAC | 源MAC | 802.1Q Tag | 类型/长度 | 数据 | FCS |
|  6字节  |  6字节 |   4字节    |   2字节   | 46-1500字节 | 4字节 |

这个4字节的Tag里,最关键的是12位的VLAN ID,取值范围是0-4095。其中0和4095保留,实际可用的是1-4094。

字段 长度 说明
TPID 2字节 固定值0x8100,标识这是802.1Q帧
Priority 3位 优先级,用于QoS
CFI 1位 规范格式指示符,以太网中通常为0
VID 12位 VLAN ID,范围1-4094

注意:我曾经遇到过一个坑,两台交换机之间Trunk链路配置了不同的Native VLAN,结果导致VLAN 1的流量在链路上被错误地打上了Tag。排查了半天才发现是Native VLAN不匹配。所以,Trunk两端的Native VLAN一定要保持一致。

四、VLAN的Access与Trunk链路

链路类型,说白了就是端口怎么处理VLAN标签。

1. Access链路

Access端口,也叫接入端口。它只属于一个VLAN,收到的帧不带Tag,发出去的帧也不带Tag。

典型场景:连接终端设备,比如PC、打印机、服务器。

配置示例:

interface GigabitEthernet0/1
 port link-type access
 port default vlan 10

这样配完之后,这个端口收到的所有帧都会被划到VLAN 10里,发出去的帧会去掉Tag。

2. Trunk链路

Trunk端口,也叫干道端口。它可以承载多个VLAN的流量,帧在链路上传输时带着802.1Q Tag。

典型场景:交换机之间的互联,或者交换机到路由器的连接。

配置示例:

interface GigabitEthernet0/24
 port link-type trunk
 port trunk allow-pass vlan 10 20 30

这里要注意,Trunk端口上有一个Native VLAN的概念。Native VLAN的帧在Trunk链路上是不带Tag的。默认情况下,Native VLAN是VLAN 1。

避坑指南:我曾经在配置Trunk时,忘了把管理VLAN从允许列表里去掉。结果管理流量和业务流量混在一起,排查问题的时候差点崩溃。建议把管理VLAN单独放在一个Trunk允许列表之外,或者用专门的带外管理。

3. Access vs Trunk 对比

特性 Access Trunk
所属VLAN 1个 多个
帧格式 不带Tag 带Tag(Native VLAN除外)
典型用途 连接终端 连接交换机/路由器
配置复杂度

嗯,到这里VLAN的核心内容就讲完了。你可能会问,VLAN之间怎么通信?别急,那是后面三层路由的内容。今天先把二层VLAN吃透,后面就好办了。

最后说一句,VLAN配置看似简单,但实际项目中坑不少。我建议你在实验室里多搭几个场景试试,比如Access和Trunk混用、Native VLAN不一致、VLAN允许列表漏配等等。踩过坑,才能真正记住。