简介:配套华为eNSP的跨交换机VLAN配置实验文档,面向计算机网络专业学生、网络管理员及希望理解VLAN隔离机制的初学者,可直接用于课程实训、实验报告撰写或自学练习。文档以完整实验报告形式呈现,围绕IEEE 802.1Q标准,系统逐步演示设备连接、IP地址规划、默认VLAN互通验证、VLAN创建与端口映射、接入端口与主干端口区分,以及同一VLAN可通信、不同VLAN被隔离等核心环节,并配有拓扑与映射表辅助核对。包体为1个docx文档,大小约1.98MB,内含实验拓扑、VLAN映射表、配置步骤与报文捕获截图说明,结构清晰,适合边读边操作。目前已有2500余人学习下载。通过该文档,读者可在eNSP中完整复现实验流程,掌握交换机VLAN划分与Trunk主干链路设置方法,学会观察携带VLAN标签的802.1Q MAC帧,并能针对捕获报文失败等典型问题形成排查思路,进而提升网络配置规范性与实际排错能力。
1. 跨交换机VLAN实验,为什么值得你亲手做一遍
做网络工程毕设或者刚入行的朋友,十有八九在华为eNSP里点开过交换机,创建过VLAN,然后两台PC接在同一台交换机上,ping通了就觉得自己会了。可一旦把设备数量翻一倍,变成两台交换机、四台PC,很多人就懵了:同样的VLAN 10,为什么在另一台交换机上创建的VLAN 10下挂的PC,就是ping不通?原因不在VLAN本身,而在跨交换机之间的那条链路到底该用什么口、该放行哪些VLAN、PVID该是谁。这恰恰是真实机房和网络工程毕设里最常考的跨交换机VLAN配置实验要解决的事。
这个实验的完整闭环是:在两台交换机上分别划分VLAN 10和VLAN 20,让相同VLAN的主机跨过交换机之间的链路正常互通,同时保证不同VLAN的主机在二层彻底隔离。它回答的不只是“命令怎么敲”,还包括为什么要用Trunk而不是Access、PVID不一致会出现什么诡异现象、以及抓包验证隔离到底应该看哪里。这篇文章就按这个顺序,把整个实验从拓扑到排错完整走一遍。
2. 跨交换机VLAN为什么必须靠Trunk:Access、Trunk与PVID的边界
2.1 一个简单问题:Access口到底能不能连两台交换机
很多人第一次做跨交换机实验,会下意识地把两台交换机用Access口连起来,然后把接口划进VLAN 10。结果是PC1能通PC2,但PC3永远不通PC4。这是因为Access口在转发帧的时候会做一件事:把802.1Q标签剥掉再送出去。也就是说,从Access口出去的帧是普通以太网帧,不带任何VLAN身份信息。对端交换机收到之后,只能把这个帧归入自己这个端口的PVID所对应的VLAN。如果两端端口PVID都是VLAN 20,那么VLAN 20的流量在两台交换机之间勉强能走;但如果PVID不一致,哪怕同一VLAN的PC也会失联。
所以结论是:Access口不是不能连交换机,而是它只能承载一个VLAN的流量,而且依赖两端PVID巧合相等。一旦你的网络里有两个或以上VLAN需要跨交换机互通,Access口根本不够用。跨交换机VLAN配置实验的核心操作就是把交换机之间的互联口改成Trunk口,让帧带着VLAN标签穿行。
2.2 Trunk口到底做了什么:802.1Q标签才是通信隔离的通行证
Trunk口做的事情可以用一句话说清楚:默认情况下出方向不给帧脱标签,入方向按帧自带的标签决定它进哪个VLAN。交换机在Trunk口上处理帧的逻辑是:
- 发往Trunk口的帧,如果是本地PVID对应的VLAN且不带标签,会先打上PVID标签,然后判断这个VLAN是否在allow-pass列表里;
- 如果是来自其他VLAN的帧,本身已经有802.1Q标签,Trunk口直接检查是否被允许放行,允许就发,不允许就丢;
- 对端Trunk口收到时,先看帧带不带标签,带标签就按标签所属VLAN进入对应的广播域。
这个机制里最容易被忽略的是PVID。PVID只对“收到的无标签帧”生效。调试口里面输入port trunk pvid vlan 10,意思是这个口收到的没打标签的帧统统算作VLAN 10的流量。这个设置和allow-pass是两个维度:allow-pass决定哪些VLAN的帧能从这个口出去进到对端,PVID决定进来的无标签帧属于哪个VLAN。两者配错任何一个,跨交换机通信都会出问题。
2.3 一张表看懂Access、Trunk、Hybrid的行为差异
| 端口类型 | 收到无标签帧 | 收到带标签帧 | 发出的帧 |
|---|---|---|---|
| Access | 打上PVID标签后进入对应VLAN | 如果标签等于PVID则接收,否则丢弃(多数交换机默认丢弃) | 帧标签被剥掉,变成无标签帧 |
| Trunk | 打上PVID标签后,检查是否在allow-pass中,在则接收 | 检查VLAN是否在allow-pass中,在则接收,否则丢弃 | 保留802.1Q标签发出,PVID对应VLAN的帧除外(默认脱标签发出) |
| Hybrid | 打上PVID标签后按tagged/untagged规则决定是否接收 | 检查VLAN是否在放行列表中 | 按tagged/untagged两个列表决定发出去带不带标签 |
华为交换机默认端口类型是Hybrid,所以你做实验时会发现:明明没手动配VLAN,两台PC在同一台交换机上却能通。因为Hybrid口默认的untagged VLAN包含VLAN 1,大家默认都在VLAN 1里,自然能通。
在跨交换机VLAN配置实验里,习惯做法是:连接PC的口统一配成Access,交换机之间的互联口统一配成Trunk。这样配置量小、逻辑直观,排查问题时一眼能看出端口类型是否符合预期。有些企业网络用Hybrid做灵活放行,那是后话,初学者先在Access和Trunk上建立牢固的边界感,再玩更复杂的。
2.4 选型澄清:做这个实验前先想清楚要几台设备
在华为eNSP里做这个实验,常见拓扑是两台交换机加四台PC。交换机型号选S5700或S3700都行,没有任何区别,因为VLAN划分和Trunk配置属于基础二层功能,模拟器不会在命令上给你出难题。真正的变量只有你自己:会不会把端口连错、会不会忘了配置某个VLAN、会不会在测试时被Windows防火墙干扰。
如果你有华为eNSP官网下载的安装包,装上之后最好先确认三件事:AR路由器能不能启动、交换机的启动时间是否正常、设备的接口编号是不是你预期的。这里有一个很典型的预期差:eNSP里的Ethernet0/0/1对应的是模拟器面板上的某个特定接口,不是所有Ethernet0/0/1都在同一位置。连线时要看拓扑图上端点编号,而不是看设备图标位置。很多人在这一步浪费大量时间,以为网线连上了,实际连错了口。
3. 用华为eNSP在本地跑通跨交换机VLAN的最小拓扑
3.1 拓扑规划:四台PC分布在两台交换机上才是关键
打开eNSP后不要急着拖设备,先想清楚拓扑。我要做的是“跨交换机VLAN配置实验”,如果四台PC全挂在一台交换机上,另一台只做点缀,那就没有练习到Trunk的价值。合理的拓扑是:
- S1和S2两台交换机通过GE0/0/1口互联;
- S1下挂PC1和PC3,分别属于VLAN 10和VLAN 20;
- S2下挂PC2和PC4,分别属于VLAN 10和VLAN 20;
- PC1和PC2属于VLAN 10,跨交换机互通是所有实验目标的基线;
- PC3和PC4属于VLAN 20,同样跨交换机互通;
- VLAN 10和VLAN 20之间的通信必须被隔离,ping不通是正确结果。
这样的好处是:同VLAN跨交换机验证Trunk放行,不同VLAN跨交换机验证隔离,两种关键行为都在两台交换机之间发生,链路只有一条,配置集中,排错简单。
3.2 连线、启动、开启抓包:准备工作里的三个小细节
设备拖出来后,连线这一步要按编号来。我这里用的是S1的GE0/0/1连S2的GE0/0/1,然后PC1接S1的Ethernet0/0/1,PC3接S1的Ethernet0/0/2,PC2接S2的Ethernet0/0/1,PC4接S2的Ethernet0/0/2。双击PC打开配置面板,IP地址按下列规则设置:
- PC1:192.168.10.1/24
- PC2:192.168.10.2/24
- PC3:192.168.20.1/24
- PC4:192.168.20.2/24
掩码统一为255.255.255.0,网关先不填。这个实验只涉及二层通信,不配置网关。如果填了网关反而可能让你在排查时混淆:ping不同VLAN的地址时,系统会先查ARP,没有网关时ARP请求会广播,隔离有效时收不到响应,表现为“无法访问目标主机”;有网关但网关无路由时,通常表现为“请求超时”。两种现象都说明隔离成功,但会让初学者困惑。
启动前在S1和S2上右键,选择“开启抓包”,把互联口GE0/0/1和PC侧接口的抓包都打开。eNSP自带的抓包工具基于Wireshark的接口逻辑,生成的pcap文件可以直接看802.1Q头部。做通信隔离验证时,抓包能直接告诉你:帧到底有没有被打上VLAN标签、Trunk口上有没有出现两个VLAN的帧。
3.3 前提检查:先让设备处在干净状态再动手
一个很常见的翻车现场是:交换机里残留了之前实验的VLAN配置,自己又叠加了一套,导致display vlan时看到的VLAN列表和实际生效的不一致。eNSP里关闭设备不会自动清除配置,重新打开还是旧配置。所以开始之前,我一般会对两台交换机做一次复位:
<Huawei>reset saved-configuration Warning: The action will delete the saved configuration in the device. The configuration will be erased to reconfigure. Continue? [Y/N]:Y如果设备提示没有保存过配置,会直接回显错误,不用管,继续下一步。然后执行reboot,等待设备重新启动。启动后进入system-view,确认当前接口全是默认Hybrid口且没有多余的VLAN:
display vlan正常情况下看到的只有VLAN 1。
3.4 AR设备启动不了的规避办法:错误代码40的处理思路
做纯交换机实验,理论上不需要AR路由器。但eNSP的有些版本在启动时会默认把AR设备拉起来,或者在拓扑里拖了一台AR路由器但没启动,结果报“错误代码40”。这个问题在网络工程毕设期间反复被问,原因多半是eNSP进程残留了上一次的AR实例,或者虚拟网卡驱动没有正常加载。
常见做法是把这个AR设备从拓扑里删掉,或者在启动前右键设备选择“停止”,然后在“管理”菜单里执行“工具-注册设备”刷新设备状态。如果还是报40,就去任务管理器里把ensp相关的进程全部结束,重新打开eNSP。做二层实验不需要AR,能少一个变量就少一个。
4. 跨交换机VLAN配置实验实操:从划分到隔离验证的完整命令序列
4.1 交换机基础配置:命名与全局VLAN创建
先给交换机起个名字,这一步不是形式主义。跨交换机实验如果两台交换机都叫Huawei,你在排错时display current-configuration,分不清自己在哪台设备上,尤其用telnet或STelnet远程登录时更麻烦。命名是低成本高回报的习惯。
S1上执行:
system-view sysname S1 vlan batch 10 20 quitS2上执行同样的命令,只是sysname改成S2:
system-view sysname S2 vlan batch 10 20 quitvlan batch允许一次创建多个VLAN,比逐个创建高效。如果还有VLAN 30到VLAN 40这种连续范围,写成vlan batch 30 to 40即可。创建之后可以用display vlan确认,你会看到VLAN 10和VLAN 20都在列表里,状态是down,因为还没有接口加入。这一步是后续所有配置的基础。忘记在某一台交换机上创建VLAN,那台交换机上即使接口配了access和default vlan,那个VLAN也不存在,端口会一直处于异常状态。
4.2 连接PC的接口配置:Access口与default vlan
PC侧接口必须配置成Access口并指定所属VLAN。华为的命令是:
interface Ethernet0/0/1 port link-type access port default vlan 10 quit第一条命令把端口模式改成Access,第二条把端口的默认VLAN设为10。华为的“default vlan”在Access口上等价于PVID,也同时是该端口唯一允许通过的VLAN。PC接进来后,PC发送的普通以太网帧在这时被打上VLAN 10的标签,进入VLAN 10的广播域。
S1上这样配置Ethernet0/0/1和Ethernet0/0/2:
interface Ethernet0/0/1 port link-type access port default vlan 10 quit interface Ethernet0/0/2 port link-type access port default vlan 20 quitS2上对应配置Ethernet0/0/1为VLAN 10,Ethernet0/0/2为VLAN 20。这里有一个关键认知:VLAN 10和VLAN 20是在两台交换机上同时创建的,PC1和PC2之所以能跨交换机通信,靠的是两台交换机上都有VLAN 10,并且互联口放行了VLAN 10的帧。如果S2上忘了创建VLAN 10,那么PC2的帧打上标签之后,S1能收到也能转发,但S2上根本找不到VLAN 10这个广播域,直接丢弃。
4.3 交换机互联口配置:Trunk口与allow-pass放行策略
连接PC的口配好之后,跨交换机互联口是关键。两台交换机都用GE0/0/1互联,按下面的配置:
S1:
interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20 port trunk pvid vlan 10 quitS2:
interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20 port trunk pvid vlan 10 quit这里解释一下三个命令的含义。port link-type trunk把端口从默认Hybrid切换为Trunk模式。allow-pass vlan 10 20指定这个Trunk口允许哪些VLAN的帧通过。默认情况下,华为交换机Trunk口只放行VLAN 1,如果你不写allow-pass,VLAN 10和VLAN 20的帧在这个接口上会被直接丢弃,这是跨交换机配置实验里最常见的翻车点。
port trunk pvid vlan 10指定Trunk口的PVID。这个值决定了从该口收到的无标签帧属于哪个VLAN。互联口之间两块交换机相连,默认都会收发带标签帧,所以PVID不参与正常业务的判别。但如果你在Trunk口下接了PC,PC发出的无标签帧就会被划分到PVID指定的VLAN,这也是为什么Trunk口通常不建议接PC的原因。
配置完成后,可以用display port vlan确认每个接口的工作模式。看输出时重点检查:Ethernet0/0/1是access,PVID是10;GE0/0/1是trunk,PVID是10,allow-pass列表包含10和20。只要有一个不一致,跨交换机通信就精确失败。
4.4 测试通信隔离:ping结果的正确解读方式
配置完成后开始验证。第一步在PC1上ping PC2:
ping 192.168.10.2预期结果是通。这个结果说明:PC1的帧进入S1的Ethernet0/0/1被打上VLAN 10标签,通过GE0/0/1的Trunk链路到达S2,S2把帧归入VLAN 10广播域,最终到达PC2。这个通的意义不是“两台PC能ping通”,而是“VLAN 10在跨交换机链路上被正确放行”。
第二步在PC1上ping PC3:
ping 192.168.20.1预期结果是“请求超时”或“无法访问目标主机”。这两个现象都说明VLAN 10和VLAN 20在二层是隔离的。因为PC3在VLAN 20,PC1的ARP广播只在VLAN 10内传播,永远到不了VLAN 20。这是隔离的预期表现,不是配置错误。
第三步反向验证:PC3 ping PC4,应该能通。这一步很容易被忽略,但非常必要。它能确认VLAN 20跨交换机也放行成功,避免你只验证了一条链路,另一条VLAN的allow-pass配错却毫无察觉。
4.5 查看VLAN与端口状态:用display输出确认配置正确
配置和测试做完,不要急着收工。在S1上执行:
display vlan输出会列出VLAN 1、VLAN 10、VLAN 20,且VLAN 10和20下各有对应的接口。注意观察VLAN 10下的接口列表应该包含Ethernet0/0/1和GigabitEthernet0/0/1。如果GE0/0/1不在VLAN 10的接口列表里,说明Trunk口的allow-pass配置有问题。
再执行:
display port vlan这个命令按端口维度显示所有端口的PVID、端口类型和放行VLAN。输出结果里,GE0/0/1那一行应该是“trunk”和“10, 20”。如果看到只有VLAN 1,说明allow-pass命令没生效或者被后续命令覆盖。这个时候回退到配置里检查,发现问题之后直接重新敲allow-pass即可,不需要重启设备。
4.6 通信隔离本质:广播域的分割与ARP的影响
如果上面的ping测试全部符合预期,你已经完整验证了VLAN的两个核心能力:跨交换机二层互通和本地广播域隔离。这里要强调一点:VLAN隔离的是广播域,不是物理链路。PC1和PC3的帧可能共用同一条物理链路,甚至共用同一个Trunk互联口,但因为携带的VLAN标签不同,它们被交换机划分到不同的广播域中。Trunk口同时传输多个VLAN的帧,靠的就是802.1Q标签来区分。
这种通信隔离设计在现代网络里比物理隔离更实用。物理隔离要求每个部门单独拉线、单独设备,成本高且扩展难。VLAN隔离是在现有物理设备上按逻辑划分隔离域,需要跨交换机扩大覆盖范围时,只需让Trunk口放行更多VLAN。做跨交换机VLAN配置实验,本质上就是把“逻辑隔离”从单台设备延伸到了多台设备。
5. 避坑:跨交换机VLAN配置实验里的6个常见问题与排查方法
5.1 坑一:Trunk口没写allow-pass,交换机“假装没看”你的VLAN配置
现象:VLAN创建了,Access口也配了default vlan,PC1 ping PC2就是不通,但PC1 ping PC3也不通,检查物理线路全是对的。
原因:华为Trunk口的默认放行列表只有VLAN 1。你光把端口模式改成trunk,不执行port trunk allow-pass vlan 10 20,VLAN 10和20的帧在Trunk口发出去之前就被丢弃了。这种情况交换机不会报错,也不会有日志,属于安静的翻车。
解决:在互联口上执行port trunk allow-pass vlan 10 20。推荐写成allow-pass vlan 10 20而不是allow-pass vlan all,后者虽然省事,但会让所有VLAN跨交换机广播,等于放弃了隔离设计意图,而且以后排查“VLAN 30怎么通到这边来了”的时候更头疼。
5.2 坑二:两端PVID不一致,同VLAN跨交换机PC也ping不通
现象:两端都是Trunk口,allow-pass都放行了VLAN 10和20,但PC1 ping PC2失败。display port vlan看到S1的GE0/0/1 PVID是10,S2的GE0/0/1 PVID是1。
原因:Trunk口之间的PVID不一致时,如果有一端的交换机收到了无标签帧,会按各自的PVID划分。Trunk口处理无标签帧的情况虽然不多,但只要出现一次,对端收到的就是另一个VLAN的帧,直接被丢弃。更隐蔽的情况是,eNSP里有些交换机型号默认Trunk口的PVID会跟随端口加入的第一个VLAN变化,这时候两头容易不一致。
解决:把两端互联口的PVID统一。操作是port trunk pvid vlan 10,两台上都执行。做完之后用display port vlan确认两个GE0/0/1的PVID一致。
5.3 坑三:AR路由器启动报错误代码40,实验根本进不去
现象:打开eNSP拓扑,AR设备启动时黑窗口一闪而过,然后提示错误代码40。有时候还会连带导致交换机启动失败。
原因:eNSP的AR设备依赖虚拟化组件,上一次异常退出时进程没有完全释放,或者设备实例重复注册,就会报40。这个问题在网络工程毕设期间被问得最多,因为它卡在最前面,让人连实验都做不了。
解决:如果是纯二层VLAN实验,AR不是必需品,直接从拓扑里删掉。如果确实需要AR做路由,先右键设备选择“停止”,再执行eNSP菜单栏“工具-注册设备”。仍然报错,就结束所有eNSP相关进程然后重启软件。避免在eNSP运行期间频繁开关AR设备,这是最容易触发40的操作。
5.4 坑四:PC侧口用了Trunk,配置对但还是隔离失败
现象:PC1 ping PC2不通,检查所有配置都是正确的,VLAN存在,Access口正确,Trunk口allow-pass也正确。
原因:连接PC的接口如果被配成了Trunk口,PC发送的无标签帧会被打上PVID标签。如果PVID是10,而PC1的IP在VLAN 20网段,那么PC1实际上被划分到了VLAN 10,跟PC2虽然在VLAN 10,但是一个在Trunk口下一个在Access口下,行为不同。更麻烦的是Trunk口还会检查allow-pass列表,任何带标签帧的意外发送都会导致通信失败。
解决:严格遵守接口角色划分。接PC的口一律配置为Access口,接交换机互联的口一律配置为Trunk口。在display port vlan里逐口核对端口模式,发现Trunk口下接PC就改回Access并指定default vlan,不要图省事。
5.5 坑五:用ping结果判断隔离时,操作系统防火墙干扰了ICMP
现象:ping同VLAN的PC也一直请求超时,但配置没有任何问题。检查网线、IP都正确,只有接另一个PC测试时能通。
原因:网络工程毕设里很常见的环境问题——Windows防火墙拦截了ICMP回显请求。PC1能发出去,PC2收到了但因为防火墙规则不回包,所以显示超时。这不是VLAN配置的锅。
解决:在测试用的PC上临时关闭防火墙,或者在防火墙入站规则里放行“文件和打印机共享(回显请求 – ICMPv4-In)”。实验做完可以重新打开防火墙。如果四台PC都是Windows,建议统一提前关掉防火墙,省去反复排查。
5.6 坑六:排错时只看ping,不会用display命令定位
现象:ping不通时不知道该从哪里入手,来回重启设备。
原因:ping只告诉你结果,不告诉你原因。跨交换机VLAN的排错应该分层进行,物理层检查display interface看端口up还是down,链路层检查display port vlan看PVID和端口类型,VLAN层检查display vlan看VLAN存在与否和接口归属,最后再回到PC端ping。跳过中间步骤直接重启,纯属玄学排错。
解决:每次实验配置完,按固定顺序输出三组命令:display interface,确认互联口状态;display port vlan,确认端口模式和放行列表;display vlan,确认接口归属。养成这个习惯后,上面五个坑至少能自动暴露四个。
6. 进阶:让通信隔离可观测——Wireshark抓包与VLAN间通信的取舍
做跨交换机VLAN配置实验,只停留在“通了”和“不通”是不够的。你还需要能亲眼看到隔离的机制是怎么起作用的。eNSP自带的抓包功能其实就是Wireshark,抓包操作很简单:右键点击交换机端口,选择“开启抓包”,然后在PC上重新执行一次ping。抓包文件打开后,重点看两个位置。
第一个位置是PC侧接口S1的Ethernet0/0/1。这里抓到的帧应该是“无标签”的。因为Access口在发出帧时会把VLAN标签剥掉。如果你在这里抓到带802.1Q标签的帧,说明端口类型配置异常。
第二个位置是S1和S2互联的Trunk口。在这里抓到的帧应该带VLAN标签。在Wireshark的过滤栏里输入vlan,所有802.1Q帧会被过滤出来,点开其中一帧能看到VLAN ID字段:VLAN 10的帧ID是10,VLAN 20的帧ID是20。两条VLAN的流量在同一物理链路上并行传输,靠的就是这个ID区分。这个过程也解释了为什么Trunk口叫“trunk”,因为它像树干一样承载多个VLAN的分支。
到这里,跨交换机VLAN配置实验的链路已经完整:配置、验证、排错、抓包观察。最后说一说VLAN间通信。我在带毕设学生做这个实验时,最常见的追问是:那VLAN 10和VLAN 20之间怎么通信?答案很明确:单纯靠交换机做不到,需要路由器或三层交换机参与,常见方案是单臂路由。在eNSP里加一台AR路由器,交换机和路由器之间用Trunk口相连,路由器上创建子接口分别对应VLAN 10和VLAN 20,再配好网关IP,VLAN间通信就能通。但这属于“跨VLAN路由”阶段,在做跨交换机VLAN隔离实验时,路由功能不应该存在——一旦存在单臂路由,你的隔离就被打破了。
我自己的教训是:有一段时间为了图省事,在实验拓扑里顺手放了一台配备好子接口的AR路由器,结果PC1 ping PC3通了,我花了一个多小时排查VLAN配置,最后才发现是那台路由器的VLANIF接口在起作用。从那以后,做通信隔离实验时,我的拓扑里永远不放路由器,只保留交换机和PC。这个习惯让整个实验的意义变得非常单纯:你要验证的是什么,拓扑里就只留什么。
希望这个实验的完整拆解能帮你少走一段弯路。做完之后,你可以试着把VLAN数量加到3个,或者把交换机换成三层交换机配置VLANIF接口,再观察数据转发路径。基础链路规范和踩坑经验是通用的,先把这些变成肌肉记忆,后面的路会顺很多。
本文还有配套的精品资源,点击获取