网络卡顿这事儿,十有八九不是带宽不够,而是网络架构偷懒了。之前我处理过一家做外贸公司的网络问题:新办公室搬完,两百多台设备全挤在一个二层大广播域里,打开抓包软件一看,ARP广播每秒好几百条,一多半根本没人搭理。老板的第一反应是拉带宽,实际问题是整个网络从头到尾没有做过VLAN划分。
这篇文章就把VLAN划分这件事从根上捋一遍——它到底解决了什么、底层怎么传输、交换机上怎么配、规划时按什么原则来,再加上我这些年踩过的各种和VLAN相关的坑。不管你是刚入行的网管,还是准备给公司网络做一次正经改造的IT负责人,看这篇都能少走不少弯路。
1. 先搞清楚VLAN到底解决了什么问题:广播域冲突与安全边界
1.1 一个办公室的典型网络困境
在没有VLAN的局域网里,所有设备天然属于同一个广播域。什么叫广播域?就是任何一个数据帧发出来,这个范围内所有设备都得停下来听一耳朵,判断一下是不是发给自己的。以太网的ARP地址解析、DHCP地址获取、各种设备发现协议,全部依赖广播帧。当几百台电脑、打印机、摄像头、无线AP塞进同一个广播域,后果就是:某台电脑开机,全网都得跟着抖一下。
我举个生活化的例子:公司租了一层大开间办公区,所有人没有隔板,任何一个人喊一嗓子,全楼层都得抬头看。这个人多的房间里,你喊"谁是张三",全楼的人都要停下来看看自己是不是张三。日常交流效率可想而知,一旦有人持续大喊大叫,整层楼都没法办公。
这类问题在现网里的症状很有辨识度:高峰时段Ping网关延迟忽高忽低;文件服务器访问经常超时;某个终端中了招开始大量发ARP包,全办公室一起断网。最麻烦的是故障扩散——本来只是一台机器的问题,结果整个办公区陪着一起瘫痪。
1.2 VLAN是什么:物理网络上的逻辑隔间
VLAN全称Virtual Local Area Network,虚拟局域网。核心思想是在一台物理交换机上,用软件把端口划分成多个逻辑上互相独立的二层网络。每个VLAN就是一个独立的广播域,VLAN之间默认互不相通。就像那层大开间办公区,走廊和大门虽然还在,但每个部门都装上了玻璃隔间,部门内部的交流不会打扰到其他部门,部门之间的走动也要经过门禁。
划VLAN带来的直接收益,可以总结成一张表:
| 收益 | 说明 |
|---|---|
| 抑制广播 | 广播帧只在所属VLAN内传播,其他VLAN完全不受影响 |
| 安全隔离 | 财务、研发、访客分属不同VLAN,二层访问默认被隔离 |
| 缩小故障半径 | 一个VLAN出问题,影响范围被限制在本VLAN内部 |
| 灵活调整 | 员工工位搬迁无需改物理线缆,改一下端口配置就行 |
VLAN的编号范围是1到4094,0和4095属于保留值。这个数量对绝大多数企业来说绰绰有余,普通中小公司规划二三十个VLAN已经非常宽裕。
1.3 一个关键认知:VLAN是二层概念,不是IP概念
这是我反复跟团队强调的一点:VLAN工作在OSI模型二层数据链路层,靠以太网帧里夹带的标签来识别身份;而IP子网是三层网络层的划分。日常规划里,一个VLAN对应一个IP网段,更多是出于管理上的方便,并不是协议层面的强制要求。
打个比方:办公室的玻璃隔间决定了谁和谁在同一间屋子里(二层隔离),通讯录分组决定了你打电话可以打给谁(三层选路)。两者经常配套使用,但不是一回事。
这个认知在排错时非常重要。你把"VLAN隔离"误当成"三层不通"去排查,方向从一开始就错了,后面全是白忙活。
2. 抓包看透VLAN的底层语言:Access口、Trunk口与802.1Q标签
2.1 交换机端口的两副面孔:Access与Trunk
聊VLAN绕不开端口类型。主流交换机的端口大致分两类:Access口和Trunk口(有些设备还有Hybrid形态,日常场景很少用到,这里先不展开)。
Access口一般用来接终端设备,比如电脑、打印机、摄像头。一个Access口只能属于一个VLAN,交换机从这个口收到数据帧时,会自动给帧打上该VLAN的标签;数据从这个口发出去时,又会把标签剥掉。终端设备完全感知不到VLAN的存在,所以接入侧的配置几乎是零成本。
Trunk口则不一样,它主要用来连接交换机与交换机、交换机与路由器或防火墙。目的是一条物理链路上同时传输多个VLAN的流量。帧从Trunk口经过时带着802.1Q标签继续走,接收端交换机根据标签决定这个帧该进哪个VLAN。
类比一下:Access口是员工自己的门禁卡,只能开自己部门那一扇门;Trunk口是物业的万能卡,所有门都能开,但每过一道门都会在门禁系统留下记录,这个记录就是标签。
2.2 802.1Q标签:藏在以太网帧里的四字节信息
VLAN技术最终落地在802.1Q标准上,这是IEEE定义的VLAN封装规范。标准以太网帧由目标MAC、源MAC、以太类型、数据和帧校验组成。802.1Q在源MAC地址和以太类型之间插入了4个字节的Tag。
这4个字节分成两部分:前两个字节是TPID(Tag Protocol Identifier),固定为0x8100,作用是告诉交换机"这个帧带VLAN标签";后两个字节是TCI(Tag Control Information),里面包含3比特的优先级PCP、1比特的丢包指示DEI和12比特的VLAN编号VID。
| 字段 | 比特数 | 含义 |
|---|---|---|
| TPID | 16 | 固定0x8100,VLAN帧标识 |
| PCP | 3 | 802.1p优先级,用于QoS |
| DEI | 1 | 丢包指示 |
| VID | 12 | VLAN编号,取值1-4094 |
正是因为VID只有12位,VLAN编号最大就是4094。这里有个容易被忽略的细节:打上标签之后,以太网帧的最大长度从1518字节变成了1522字节。日常接入网环境里影响不大,但如果你在做巨型帧或者某些隧道封装,接口MTU必须把这个4字节算进去,否则就会出现"小包通、大包不通"的疑难杂症。
2.3 PVID:交换机如何处理无标签帧
再往深处走一步:交换机收到不带标签的帧时,怎么知道它属于哪个VLAN?答案是PVID,也就是Port VLAN ID,端口默认VLAN号。
Access口的PVID通常就是它所属的那个VLAN,所以从终端进来的无标签帧会被自动归入对应VLAN。Trunk口也有一个PVID,对应业界常说的Native VLAN(本征VLAN)。Trunk口两端交换机的PVID必须保持一致,否则无标签帧会走错房间。
实际项目里,因为PVID不一致导致的故障我碰到过不止一次。尤其是不同厂商的设备互联时,两端Native VLAN默认值都是1,平时相安无事,一旦有人把某一端的Native VLAN改成其他值,另一端发过来的无标签帧就进了错误VLAN,而且排查起来相当隐蔽——配置看着都对,就是流量走错路。所以配置Trunk口时,不只要看允许的VLAN列表,还要核对两端的PVID。
3. 在真实交换机上完成一次VLAN划分:从登录到验证
3.1 划分前的准备:设备清单与规划表
动手之前,先把账算清楚。我每次做VLAN改造前,都会先画一张表,列清楚每台设备的物理位置、接入交换机的端口号、要划到哪个VLAN、对应什么IP网段。没有这张表,配置到一半就容易乱,几十个端口的接入交换机,配错一个端口就是某个办公室断网半小时。
规划表大致长这样:
| 楼栋/楼层 | 交换机端口 | 用途 | VLAN | IP网段 |
|---|---|---|---|---|
| A栋3层 | GE0/0/1-8 | 财务部 | 20 | 192.168.20.0/24 |
| A栋3层 | GE0/0/9-16 | 人事行政 | 10 | 192.168.10.0/24 |
| A栋3层 | GE0/0/17-24 | 会议室预留 | 60 | 192.168.60.0/24 |
另外,改配置之前务必备份一份现网配置。交换机的命令行里,误操作一个回车就可能让整段业务中断。配置前保存、配置中分步操作、配置后再次保存,这是网工最基本的职业习惯。
3.2 配置步骤:创建VLAN、划分Access口、放行Trunk
以一台普通企业级交换机为例,配置逻辑如下。不同厂商的命令措辞略有差异,但整体思路完全一致。
# 创建VLAN并命名 vlan 10 name Office vlan 20 name Finance vlan 30 name Guest # 将端口GE0/0/1-8划分到VLAN10(Access方式) interface GigabitEthernet0/0/1 port link-type access port default vlan 10 # 交换机互联端口放行多个VLAN(Trunk方式) interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 30这里有几个容易翻车的点:端口出厂时默认都待在VLAN1里面,如果你只给端口配置了默认VLAN但没改端口类型,实际不一定生效;Trunk口如果忘了放行某个VLAN,那个VLAN的流量就断。我建议一个端口配完就检查一个,不要攒一堆配置再回头看。
3.3 管理VLAN:远程维护的生命线
如果你需要远程管理交换机,管理IP所在的VLAN一定要单独规划。我习惯把管理VLAN单独划出来,比如VLAN100,所有交换机的管理地址都放进去。这样即使某个业务VLAN出了状况,只要管理VLAN还通着,你就还能远程登录设备去做修复。
这个坑我印象很深:很多人图省事,把管理IP放在业务VLAN里。结果业务VLAN出现广播风暴或者二层环路,管理地址跟着一起失联,你连不上设备,只能大半夜跑机房现场处理。单独的管理VLAN能把管理通道和业务故障有效隔离开,这是花最小的成本给自己留一条救命通道。
3.4 验证VLAN划分:命令、ping与抓包
配置完成后,验证是必须的。先看VLAN表:
show vlan brief show interfaces trunk第一条命令确认VLAN是否创建成功、哪些端口归属哪个VLAN;第二条命令确认Trunk口放行的VLAN列表是否正确。终端侧把IP改成规划网段,先Ping自己的网关,通了再Ping对端机器。同VLAN能通、跨VLAN不通,那是三层路由的问题,继续查路由表和网关配置。
如果想看得更直观,可以用抓包软件。把笔记本接到Trunk口上抓包,能看到带着802.1Q标签的帧,过滤表达式写成vlan.id == 20,就只过滤VLAN20的流量。这是排查跨交换机VLAN问题最直观的手段之一,比看配置猜半天高效多了。
4. VLAN划分策略:按部门、按业务还是按安全级别
4.1 三种主流划分思路
同一个问题可以给出完全不同的回答:VLAN到底按什么来划?
按部门划分最直观。行政一个VLAN,财务一个VLAN,研发一个VLAN。优点是沟通成本极低,管理层一听就懂;缺点也很明显:跨部门协作时流量模型会变得复杂,一个项目组可能分散在好几个VLAN里,权限和策略不好收敛。
按业务划分适合业务系统明确的公司。办公网单独一个VLAN,生产内网一个VLAN,视频会议一个VLAN,无线一个VLAN。这种划分跟流量特征强绑定,做QoS和限速非常顺手,但前期必须把业务清单梳理清楚,规划成本偏高。
按安全级别划分则更适合有明确等级保护需求的场景。访客区、外协区、办公区、服务器区,由低到高逐级隔离。安全思路很清晰:低信任区域不主动访问高信任区域。
| 划分思路 | 典型场景 | 优点 | 缺点 |
|---|---|---|---|
| 按部门 | 中小办公网 | 简单直观,沟通成本低 | 跨部门流量模型复杂,权限难收敛 |
| 按业务 | 业务系统明确的公司 | 与流量特征匹配,QoS易部署 | 前期梳理成本高 |
| 按安全级别 | 有等级保护需求 | 安全边界清晰,最小权限 | 网关和策略配置量大 |
实际上,大部分公司最后都是混合策略:核心按业务划分,办公区按部门适当合并,访客独立安全隔离。没必要求全责备,够用就行。
4.2 一个300人公司的VLAN规划实例
拿一次实际咨询项目举例,某研发型公司约三百人,办公区三个楼层,服务器集中在机房,访客频繁。最终的VLAN规划如下:
| VLAN | 用途 | 网段 | 网关 | 说明 |
|---|---|---|---|---|
| VLAN 10 | 办公终端 | 192.168.10.0/24 | 192.168.10.1 | 员工PC、打印机 |
| VLAN 20 | 财务/人事 | 192.168.20.0/24 | 192.168.20.1 | 敏感部门,互访受限 |
| VLAN 30 | 监控/IoT | 192.168.30.0/24 | 192.168.30.1 | 摄像头、门禁,禁止外联 |
| VLAN 50 | 访客无线 | 192.168.50.0/24 | 192.168.50.1 | 仅能访问互联网 |
| VLAN 60 | 视频会议 | 192.168.60.0/24 | 192.168.60.1 | 预留,后续可加QoS |
| VLAN 100 | 管理网 | 192.168.100.0/24 | 192.168.100.1 | 交换机管理地址 |
这套方案有几个设计考量:财务和人事单独成VLAN,减少终端层面的非授权访问尝试;监控设备单独隔离,真遇到安全事件时可以快速切断;访客无线跟内网完全隔离,访客连Wi-Fi后只能上网,看不到内网任何资源。VLAN编号从10到100留有大量余量,后续加新业务不至于处处受限。
4.3 关于地址规划与VLAN ID分配的经验法则
ID分配我倾向于一句话总结:低号给业务,高号给管理,中间留扩展。VLAN1默认存在,尽量别用;VLAN2到10留给基础设施和上行链路;10到99分配给业务部门;100到199放管理网和网络设备;200以上留给临时或者项目扩展。
网关地址也建议统一,要么全用.1,要么全用.254。我见过不少公司网关地址东一个西一个,排错的时候得翻半天表格。统一之后,你去任何一台设备上都能下意识算出默认网关。
如果楼栋或者楼层比较多,还可以按地理位置预留ID段。比如A栋用1到50,B栋用51到100。这样以后看到VLAN号,大致就能判断物理位置在哪儿,省去不少查表的功夫。这些习惯每一条都不起眼,但聚在一起就是实打实的工作效率。
5. 跨交换机通信、VLAN间路由与常见故障排查
5.1 多台交换机之间的Trunk配置与常见错误
一台交换机不可能覆盖所有工位,多台交换机级联时,级联口必须配置Trunk。注意Trunk两端要同时放行相同的VLAN列表,只在一端放行没用。
我曾经处理过这样一个问题:核心交换机Trunk口放行了VLAN10和20,接入交换机只放行了10,结果VLAN20在那栋楼里全部不通。配置不一致时,报错往往不会出现在配置面上,终端用户只会说"上不了网",你只能逐台设备核对Trunk列表。所以规范化的配置模板和变更记录,不是用来应付检查的,是真正能省事的。
5.2 VLAN间路由:二层隔离之后,三层如何打通
VLAN划分完成之后,不同VLAN默认不能二层互通。但实际业务里,办公网要访问财务的打印机,访客网要禁止访问内网——这些需求得靠三层路由来实现。
最常用的方案是三层交换机为每个VLAN配置一个VLANIF接口(也叫SVI,Switch Virtual Interface),这个接口的IP地址就是该VLAN内设备的默认网关。VLAN10的设备把数据包丢给VLAN10的网关,三层交换机查路由表转发给VLAN20的网关,再送到目标设备。
比如VLAN10的网关是192.168.10.1,VLAN20的网关是192.168.20.1,配置好两个VLANIF后,两个网段就能通过三层交换通信了。而访客VLAN如果不希望它访问内网,只需要不配置对应路由,或者加一条ACL就能堵住。
还有一种更老的单臂路由方案,用路由器的一个物理接口配多个子接口,每个子接口封装802.1Q对应一个VLAN。这种方案受限于路由器转发性能,现在基本被三层交换机替代了。另外,如果DHCP服务器部署在某个特定VLAN里,其他VLAN的终端要自动获取IP,交换机需要配置DHCP Relay,把终端的广播请求中继到服务器。这个细节经常被遗漏,终端显示"未识别的网络",排查半天才想起来是中继没配。
5.3 排查链路:VLAN不通的经典场景与排除顺序
最后分享几个最常见的VLAN不通场景,基本覆盖了我这些年遇到的大部分故障。
第1种:Access端口划错VLAN。终端IP没错就是不通,show vlan确认端口归属就能发现问题。
第2种:Trunk口没放行目标VLAN。跨交换机时某个VLAN整体不通,多半是Trunk的allowed列表漏了。
第3种:Trunk两端PVID不一致。表现是某些流量走错VLAN,抓包才能看出来。
第4种:网关地址或子网掩码写错。VLAN内部二层都通,一访问外网就断,重点检查终端的三层配置。
第5种:级联链路物理异常但没被发现。光模块或者网线降速、双工不匹配,导致VLAN间通信时好时坏。先看端口物理状态和错误计数。
我的排查顺序固定不变:物理链路状态、端口VLAN归属、Trunk放行列表、PVID一致性、终端IP和网关,最后一招抓包。按这个顺序来,大部分问题能在十分钟内定位。早年我也喜欢上来就抓包,现在反而先看交换机的表和状态,抓包留作交叉验证,效率高很多。
VLAN划分这件事,难点从来不在命令本身——把端口划进一个VLAN,谁都学得会。难的是动手之前想清楚边界:哪些流量要在一起,哪些要分开,未来三五年业务会怎么变化。我见过不少公司一开始随便划了几个VLAN,半年后业务调整,物理网线全乱套,只能对着残缺的规划表重新梳理。规划表不是给领导看的,是给你自己下次排错用的。
另外一个建议:每次改完VLAN配置,把变更内容记下来,哪怕写在记事本上。网络问题重复性很高,这些记录会在某次凌晨排障时救你一命。把这些基础打牢,VLAN划分这门课就算真正毕业了。