1. 为什么这个实验值得每个网络初学者反复做三遍
刚接触网络设备配置的朋友,十有八九第一个卡住的地方就是VLAN。书上的定义背得滚瓜烂熟——"虚拟局域网,用来隔离广播域"——可真到了模拟器里,面对一台交换机和几台PC,却不知道从哪根线开始连、从哪条命令开始敲。我带过不少刚入行的同事,发现一个共同规律:凡是能把"基于接口划分VLAN"和"基于MAC地址划分VLAN"这两种方式都独立跑通的人,后面学Trunk、学三层交换、学STP都会顺很多;而只停留在背概念的人,往往学到后面越学越糊涂。
这个实验的价值就在这儿。它不复杂,但它是整个交换网络的"地基"。基于接口划分VLAN是最常用的方式,生产环境里90%以上的场景都用它;基于MAC地址划分VLAN则是一种"移动办公"思路的体现,员工换了工位、换了交换机端口,只要设备网卡不变,VLAN归属就不变。两种方式放在一起做对比实验,能帮你真正理解"VLAN的本质是逻辑分组,而不是物理位置分组"这句话。
这篇内容适合三类人:一是正在准备网络方向入门认证、需要动手做实操的初学者;二是工作中要维护中小型办公网络、但对VLAN配置一知半解的运维人员;三是想系统梳理一遍以太网基础和VLAN原理、把零散知识串起来的技术爱好者。我会用模拟器环境,从最基础的拓扑搭建讲起,把两种划分方式的配置、验证、排错完整走一遍,并且把我在实际配置中踩过的坑、容易忽略的细节都摊开来说。你跟着做,大概率能一次跑通;就算跑不通,我也把排查思路给你铺好了。
2. 动手之前先把这几个以太网基础概念捋清楚
2.1 广播域、冲突域和VLAN到底在解决什么问题
很多人配置VLAN时是"照着命令敲",但不知道为什么敲。我们先把最底层的逻辑说清楚。以太网里,一台主机发一个广播帧(比如ARP请求),这个帧会被交换机泛洪到所有端口,所有收到的主机都要处理它。这个"广播能到达的范围"就叫广播域。广播域越大,网络里无谓的广播流量就越多,主机的CPU被这些广播打断的次数也越多,网络效率就越低。
早期的解决办法是拿路由器把网络切成一段一段,但路由器接口贵、转发慢。于是VLAN出现了:在交换机上逻辑地划分出多个广播域,每个VLAN就是一个独立的广播域,VLAN之间的广播互相隔离。这就是VLAN最核心的价值——用交换机的成本,实现路由器的隔离效果。
这里有个容易混淆的点:冲突域和广播域不是一回事。冲突域是早期共享式以太网的概念,现在交换机每个端口就是一个独立的冲突域,这个问题基本被交换机解决了。而广播域是VLAN要解决的核心问题。你只要记住一句话:交换机隔离冲突域,VLAN隔离广播域。
2.2 一个以太网帧里,交换机到底看哪些字段
要理解"基于MAC地址划分VLAN",就得知道交换机转发一个帧时看的是什么。一个标准的以太网帧结构大致是这样的:目的MAC地址(6字节)、源MAC地址(6字节)、类型/长度字段(2字节)、数据载荷、帧校验序列。交换机收到帧后,主要看源MAC来学习MAC地址表,看目的MAC来决定从哪个端口转发出去。
基于接口划分VLAN时,交换机根本不看帧里的MAC,它只认"这个帧是从哪个物理端口进来的",然后给这个帧打上对应VLAN的标签。而基于MAC地址划分VLAN时,交换机会读取帧的源MAC地址,去查一张预先配置好的"MAC-VLAN映射表",根据查到的结果决定这个帧属于哪个VLAN。这就是两种方式在数据平面上的本质区别,理解了这一点,后面的配置命令你就能"望文生义"了。
2.3 Access、Trunk、Hybrid三种链路类型的分工
配置VLAN绕不开端口链路类型。简单说:
- Access链路:通常连终端设备(PC、打印机、服务器)。它只属于一个VLAN,进出这个端口的帧都不带VLAN标签(对终端来说它是"透明"的)。
- Trunk链路:通常连交换机或路由器。它允许多个VLAN的帧通过,帧在链路上传输时带VLAN标签(Tag),用来区分不同VLAN。
- Hybrid链路:华为设备特有的类型,既能像Access一样接终端,又能像Trunk一样传多个VLAN,还能灵活控制哪些VLAN带标签、哪些不带。
这个实验里,基于接口划分VLAN主要用Access端口;如果拓扑里有多台交换机级联,就需要Trunk。Hybrid在基础实验里可以先放一放,等把前两种吃透了再研究。
2.4 模拟器环境准备与拓扑规划
我用的是eNSP(企业网络模拟平台),这是国内网络学习者最常用的工具之一。安装过程不展开,重点说拓扑规划。这个实验我建议搭一个最小但完整的拓扑:
- 两台二层交换机(比如S5700),命名为SW1、SW2,用一条线级联。
- 四台PC,PC1、PC2接在SW1上,PC3、PC4接在SW2上。
- 规划两个VLAN:VLAN 10(比如给技术部)和VLAN 20(比如给市场部)。
- 基于接口划分时:PC1、PC3划到VLAN 10,PC2、PC4划到VLAN 20。
- 基于MAC地址划分时:用PC的MAC地址来绑定VLAN,验证换端口后VLAN归属不变。
IP地址规划建议:VLAN 10用192.168.10.0/24,VLAN 20用192.168.20.0/24。PC1配192.168.10.1,PC3配192.168.10.2,PC2配192.168.20.1,PC4配192.168.20.2。这样同VLAN能通、跨VLAN不通,验证起来一目了然。
提示:eNSP里PC的MAC地址可以手动指定,建议在实验开始前就把每台PC的MAC记下来,后面基于MAC划分VLAN时要用。默认MAC是自动生成的,重启模拟器可能会变,手动固定更稳妥。
3. 基于接口划分VLAN:最常用也最容易出错的配置
3.1 配置思路与命令逐条拆解
基于接口划分VLAN的逻辑非常直白:先创建VLAN,再把端口划进去。在华为设备上,配置流程是这样的:
# 在SW1上操作 <Huawei> system-view [Huawei] sysname SW1 [SW1] vlan batch 10 20 # 批量创建VLAN 10和20 # 配置连接PC1的端口(假设是GE0/0/1) [SW1] interface GigabitEthernet 0/0/1 [SW1-GigabitEthernet0/0/1] port link-type access [SW1-GigabitEthernet0/0/1] port default vlan 10 [SW1-GigabitEthernet0/0/1] quit # 配置连接PC2的端口(假设是GE0/0/2) [SW1] interface GigabitEthernet 0/0/2 [SW1-GigabitEthernet0/0/2] port link-type access [SW1-GigabitEthernet0/0/2] port default vlan 20 [SW1-GigabitEthernet0/0/2] quitSW2上做类似操作,把PC3划到VLAN 10、PC4划到VLAN 20。然后配置两台交换机之间的级联端口为Trunk,并允许VLAN 10和20通过:
# SW1的级联口(假设是GE0/0/24) [SW1] interface GigabitEthernet 0/0/24 [SW1-GigabitEthernet0/0/24] port link-type trunk [SW1-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 20 [SW1-GigabitEthernet0/0/24] quitSW2的级联口做对称配置。到这里,基于接口的VLAN划分就完成了。
3.2 为什么级联口必须配Trunk,配成Access会怎样
这是初学者最容易犯的错。有人图省事,把两台交换机之间的线两端都配成Access,结果发现跨交换机的同VLAN主机不通。原因很简单:Access端口只属于一个VLAN,从SW1过来的VLAN 10的帧到了SW2的Access口,会被当成"不属于这个端口VLAN"的帧丢弃,或者被错误地打上另一个VLAN的标签。
Trunk口的作用就是"允许多个VLAN的帧带着标签通过"。当VLAN 10的帧从SW1的Trunk口发出时,会被打上VLAN 10的标签;SW2的Trunk口收到后,根据标签知道这是VLAN 10的流量,再转发给属于VLAN 10的Access端口,Access端口在发给PC前会把标签剥掉。整个过程对PC是透明的。
注意:Trunk口配置时,
port trunk allow-pass vlan这条命令一定要写,而且要把所有需要跨交换机通信的VLAN都列进去。默认情况下,华为交换机的Trunk口只允许VLAN 1通过,你不显式放行,其他VLAN的流量全被丢弃。我见过不止一个人卡在这里,排查半天以为是VLAN没创建,其实是Trunk没放行。
3.3 验证连通性:ping通与ping不通都要会看
配置完先别急着庆祝,验证才是关键。打开PC1的命令行,ping PC3(同VLAN 10):
PC1> ping 192.168.10.2如果通,说明VLAN 10跨交换机通信正常。再ping PC2(跨VLAN):
PC1> ping 192.168.20.1这个应该不通,因为VLAN 10和VLAN 20之间没有三层路由,二层是隔离的。如果这个居然通了,那说明你的VLAN划分有问题,很可能端口没划对,或者Trunk放行了不该放行的VLAN导致广播域串了。
还可以用display vlan命令查看VLAN和端口的对应关系:
[SW1] display vlan输出里会列出每个VLAN包含哪些端口。重点看VLAN 10和VLAN 20的端口列表是否符合预期。另外display port vlan可以看每个端口的链路类型和默认VLAN,排查端口配置错误时非常有用。
3.4 我在这个环节踩过的三个坑
第一个坑:端口没配link-type就直接配default vlan。华为交换机端口默认是Access类型,所以直接配port default vlan通常没问题,但如果你之前改过端口类型,再配default vlan可能不生效。稳妥做法是先显式配port link-type access。
第二个坑:VLAN没创建就往端口上划。虽然华为设备允许你把端口划到一个不存在的VLAN,系统会自动创建,但批量配置时容易乱。建议养成习惯,先vlan batch把要用的VLAN都建好,再划端口。
第三个坑:PC的IP地址配错网段。这个听起来很蠢,但真的高发。PC1配了192.168.10.1/24,PC3配了192.168.20.2/24,然后你ping不通还以为是VLAN问题。验证前先ipconfig看一眼每台PC的IP和掩码,确认同VLAN的主机在同一网段。
4. 基于MAC地址划分VLAN:让VLAN跟着人走
4.1 这种划分方式到底适合什么场景
基于接口划分VLAN有个天然局限:VLAN绑定在物理端口上。员工A的工位在VLAN 10,他出差一周,同事B临时坐他的位置,B的电脑插上去,如果不改端口配置,B就进了VLAN 10,可能访问到他本不该访问的资源。反过来,员工A换到别的工位,端口属于别的VLAN,A就进不了自己的VLAN了。
基于MAC地址划分VLAN就是解决这个"人动VLAN动"的问题。它把VLAN和设备的MAC地址绑定,只要设备网卡不变,插到哪台交换机的哪个端口,都能自动进入预设的VLAN。这在会议室、开放办公区、临时工位等场景下特别实用。
当然它也有代价:每台设备都要手动登记MAC地址,设备多了维护量大;而且MAC地址是可以被伪造的,安全性上不如基于接口+802.1X认证的组合。所以生产环境里它通常作为补充手段,而不是主力方案。
4.2 MAC-VLAN映射表的配置与关键命令
在华为设备上,基于MAC划分VLAN需要三步:创建VLAN、建立MAC与VLAN的映射、在端口上启用MAC-VLAN功能。
# 在SW1上操作 [SW1] vlan batch 10 20 # 建立MAC地址与VLAN的映射 [SW1] vlan 10 [SW1-vlan10] mac-vlan mac-address 5489-98xx-xxxx # PC1的MAC [SW1-vlan10] quit [SW1] vlan 20 [SW1-vlan20] mac-vlan mac-address 5489-98yy-yyyy # PC2的MAC [SW1-vlan20] quit # 在端口上启用MAC-VLAN功能 [SW1] interface GigabitEthernet 0/0/1 [SW1-GigabitEthernet0/0/1] mac-vlan enable [SW1-GigabitEthernet0/0/1] quit [SW1] interface GigabitEthernet 0/0/2 [SW1-GigabitEthernet0/0/2] mac-vlan enable [SW1-GigabitEthernet0/0/2] quit注意这里的端口不需要配port default vlan,因为VLAN归属是由MAC地址决定的,不是端口决定的。端口只需要开启mac-vlan enable,让它具备"查MAC表"的能力。
4.3 端口类型与MAC-VLAN的配合关系
这里有个细节很多人搞不清:启用了MAC-VLAN的端口,它的链路类型是什么?答案是——端口仍然可以是Access或Hybrid,但MAC-VLAN的优先级高于端口的默认VLAN。也就是说,当一个帧进入端口时,交换机会先看源MAC有没有匹配的MAC-VLAN表项,有就按表项走,没有才按端口的默认VLAN处理。
实际配置中,我建议把启用MAC-VLAN的端口配成Hybrid类型,并且port hybrid untagged vlan把相关VLAN都放行,这样兼容性最好。如果配成Access,虽然也能工作,但端口的默认VLAN会和MAC-VLAN产生优先级上的混淆,排查问题时容易绕晕。
[SW1] interface GigabitEthernet 0/0/1 [SW1-GigabitEthernet0/0/1] port link-type hybrid [SW1-GigabitEthernet0/0/1] port hybrid untagged vlan 10 20 [SW1-GigabitEthernet0/0/1] mac-vlan enable [SW1-GigabitEthernet0/0/1] quit4.4 验证"换端口不换VLAN"的完整过程
这个实验最精彩的验证环节来了。先把PC1插在SW1的GE0/0/1上,确认它在VLAN 10里能ping通PC3。然后把PC1从GE0/0/1拔下来,插到SW1的GE0/0/3(这个端口之前没做任何VLAN配置,只开了mac-vlan enable)。再ping PC3,如果还能通,说明MAC-VLAN生效了——PC1的VLAN归属跟着MAC走,不跟着端口走。
反过来验证:把PC2(MAC绑定VLAN 20)插到原来PC1用的GE0/0/1上。如果配置正确,PC2应该进入VLAN 20,ping PC4通,ping PC3不通。这就证明了同一个端口上,不同MAC的设备进入了不同的VLAN。
提示:验证时记得在PC上重新获取或确认IP。如果PC1原来配的是192.168.10.1,换端口后IP不变,VLAN也不变,直接ping就行。但如果你的模拟器PC是DHCP获取IP,换端口后可能拿到不同网段的地址,那就先手动配静态IP再验证。
4.5 MAC-VLAN配置中最隐蔽的两个问题
第一个问题:MAC地址格式写错。华为设备要求MAC地址格式是xxxx-xxxx-xxxx,中间用短横线分隔,字母小写。如果你从PC的ipconfig /all里复制出来的是54-89-98-XX-XX-XX这种格式,直接粘贴进去会报错。要手动改成华为的格式。这个错误系统提示不明显,很多人以为是命令不支持,其实是格式问题。
第二个问题:MAC-VLAN表项和端口默认VLAN冲突。如果一个端口既配了port default vlan 10,又开启了mac-vlan enable,而某个MAC绑定的是VLAN 20,那么这个MAC的帧会进VLAN 20(MAC-VLAN优先),但其他未登记的MAC的帧会进VLAN 10。这种"混合模式"在实验里可以用来做对比,但生产环境里容易造成管理混乱,建议一个端口要么纯Access,要么纯MAC-VLAN,别混着用。
5. 两种划分方式的对比与选型建议
5.1 从配置复杂度、灵活性、安全性三个维度对比
把两种方式放在一起看,差异就很清晰了:
| 对比维度 | 基于接口划分 | 基于MAC地址划分 |
|---|---|---|
| 配置复杂度 | 低,几条命令搞定 | 中,每台设备都要登记MAC |
| 灵活性 | 低,VLAN绑死端口 | 高,VLAN跟着设备走 |
| 安全性 | 中,换设备即换VLAN | 较低,MAC可伪造 |
| 维护成本 | 低,端口变动少时省心 | 高,设备增减都要改表 |
| 适用场景 | 固定工位、机房、服务器区 | 移动办公、会议室、临时工位 |
从表里能看出来,两种方式不是"谁替代谁"的关系,而是互补。实际项目里,我通常的做法是:主体用基于接口划分,把网络骨架搭稳;在需要灵活性的局部区域(比如会议室、访客区)叠加MAC-VLAN或配合其他认证手段。
5.2 生产环境里我会怎么组合使用
举个我实际遇到过的场景:一个中型办公室,技术部工位固定,用基于接口划分VLAN,端口规划得整整齐齐;但有一个共享的测试区,经常有不同部门的同事带着笔记本过来调试,今天来的是技术部的,明天来的是市场部的。如果按端口划分,每次都要改配置;后来我在测试区的接入端口上启用了MAC-VLAN,把常来的几台设备MAC登记好,谁来插上就自动进对应的VLAN,省了大量沟通成本。
但要注意,MAC-VLAN不是万能的。如果测试区来了台新设备,MAC没登记,它就会落到端口的默认VLAN里。所以我会给这些端口配一个"访客VLAN"作为默认,新设备进来先隔离,需要访问内网再单独登记。这样既灵活又安全。
5.3 什么时候该考虑更高级的方案
如果你的网络规模再大一点,设备再多一点,纯靠MAC-VLAN维护就吃力了。这时候可以考虑:
- 802.1X认证:基于用户身份动态分配VLAN,比MAC绑定更安全,适合有域环境的公司。
- 动态VLAN(通过RADIUS下发):用户认证通过后,服务器告诉交换机把这个用户放到哪个VLAN,完全自动化。
- 基于子网的VLAN:根据IP子网划分VLAN,适合IP规划规范的环境。
但这些都属于进阶内容,前提是你把今天这两种基础方式彻底吃透了。基础不牢,上高级方案只会更乱。
6. 实验跑不通时的系统排查链路
6.1 从物理层到应用层的逐层检查法
实验不通,别慌,按层次往下查。我习惯的顺序是:
- 物理层:端口有没有Up?
display interface brief看端口状态,如果是Down,检查连线、检查端口有没有被shutdown。 - 数据链路层:VLAN配对了没?
display vlan看端口在不在正确的VLAN里;display port vlan看端口的链路类型和默认VLAN。 - MAC-VLAN专项:
display mac-vlan all看映射表项有没有生效;display mac-vlan interface看端口有没有启用mac-vlan。 - 网络层:PC的IP、掩码、网关配对了没?同VLAN主机是不是同网段?
- 应用层:ping命令本身有没有问题?防火墙有没有拦截(模拟器里一般没有)?
这个顺序的好处是"从下往上",下层不通上层肯定不通,先排除底层问题,避免在高层瞎折腾。
6.2 几个高频故障的快速定位
故障一:同VLAN跨交换机不通。九成是级联口没配Trunk,或者Trunk没放行对应VLAN。检查display port vlan看级联口的类型,检查display vlan看Trunk口在不在VLAN的端口列表里。
故障二:MAC-VLAN不生效。先确认MAC地址格式对不对,再确认端口有没有mac-vlan enable,最后确认MAC-VLAN表项有没有建在正确的VLAN下。三个都对了还不生效,试试把端口shutdown再undo shutdown,有时候模拟器状态没刷新。
故障三:PC ping不通但配置看着都对。先看PC的ARP表arp -a,如果ARP都没学到,说明二层就不通;如果ARP学到了但ping不通,可能是IP层问题。另外eNSP里PC的网卡有时候会"假死",重启PC或者重新拖一台PC往往能解决。
6.3 用抓包验证你的判断
如果条件允许,在eNSP里可以在交换机之间或端口上抓包。抓包能看到帧里到底有没有VLAN标签、标签是多少。比如你在Trunk口抓包,应该能看到带802.1Q标签的帧,标签里的VLAN ID就是你的VLAN号。在Access口抓包,帧应该是不带标签的。这个验证手段比看配置命令更直接,能帮你确认"数据平面"的真实行为。
7. 把实验做扎实的几个进阶练习
7.1 加一台三层交换机实现VLAN间通信
基础实验里VLAN之间是不通的,这是特性不是bug。但实际网络里,不同VLAN之间往往需要受控地通信。你可以在这个拓扑上加一台三层交换机,配置VLANIF接口作为各VLAN的网关,实现VLAN间路由。这一步做完,你对"二层隔离、三层互通"的理解会上一个台阶。
7.2 用Hybrid端口实现更灵活的访问控制
华为的Hybrid端口是个宝藏。你可以用它实现"同一个端口,某些VLAN带标签、某些不带标签",从而做出很灵活的访问控制。比如让VLAN 10的流量带标签上行到核心,VLAN 20的流量不带标签直接给终端。这个练习能帮你彻底搞懂VLAN标签的来龙去脉。
7.3 模拟MAC地址冲突和伪造的场景
基于MAC划分VLAN的安全性弱点,你可以亲手验证一下:把PC2的MAC改成和PC1一样,看看交换机会怎么处理。通常会看到MAC地址漂移告警,两个设备抢同一个VLAN。这个实验能让你直观感受到"为什么生产环境不能只靠MAC做安全控制"。
我个人在实际操作中的体会是,VLAN这个东西,看十遍书不如动手配一遍,配一遍不如故意配错一次再排查出来。我当年学的时候,把级联口配成Access导致跨交换机不通,排查了整整一个下午,最后发现是链路类型的问题。那个下午的收获,比之前看一周理论都大。所以你做这个实验时,不妨也故意"制造"几个错误,然后自己按排查链路走一遍,这种肌肉记忆才是真正属于你的。
最后再分享一个小技巧:每次实验前,把拓扑图、IP规划、VLAN规划、MAC地址表先写在纸上或文档里,配置时对照着来。别小看这个习惯,它能帮你省掉至少一半的"配置漂移"问题。等实验做完,这份规划文档就是你最好的实验报告。