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允许列表漏配等等。踩过坑,才能真正记住。