简介:基于华为eNSP的跨交换机VLAN配置实验资源,聚焦网络工程实训场景,适合计算机网络专业学生、网络管理员以及需要入门VLAN配置的初学者,用来理解复杂交换式以太网设计、跨交换机VLAN划分及IEEE802.1Q帧格式。压缩包内为1个docx文档,大小约1.98MB,内容覆盖设备连接与IP地址规划、默认VLAN通信验证、三台交换机上VLAN创建和接入/主干端口映射、跨VLAN隔离性测试,以及802.1Q标签报文捕获与分析过程。还包括实验中常见的“捕获报文失败”问题排查思路,如确认捕获功能、过滤器设置和端口配置,帮助读者少走弯路。资源目前已有2504人学习/浏览,适合作为实训报告参考和上机练习指引,有助于提升网络设备配置、VLAN规划和排错能力。
1. 跨交换机VLAN为什么要单独做一次实验
大多数接触华为eNSP的人做VLAN实验是从一台交换机开始的:建两个VLAN,把PC分进去,同一个VLAN能通,不同VLAN互相隔离,实验结束。但一旦拓扑变成两台交换机,中间用一条线连起来,很多人会翻车——明明每台交换机上都建好了VLAN,接口也划进去了,跨交换机的PC却怎么都ping不通。原因不是VLAN建错了,而是你忽略了交换机之间的那条链路需要一种特殊处理:Trunk。本文要讲的跨交换机VLAN配置实验,就是把这个最容易出幺蛾子的环节单独拎出来做一遍:基于华为eNSP模拟器,用两台交换机、四台PC,把VLAN划分与通信隔离在两个设备之间真正落地。适合正在做网络工程毕业设计、备考HCIA-Datacom,或者工作中要维护多台交换机但没摸过VLAN标签技术的从业者。实验做完你会得到一个可靠的认知:VLAN隔离不是靠IP网段,而是靠端口和标签。
2. 跨交换机VLAN的底层逻辑:PVID与标签转发
2.1 隔离的本质:广播域收窄,不是靠IP网段隔离
很多新手做完单交换机VLAN实验后会形成一个印象:VLAN隔离等于IP隔离。PC1配192.168.10.0网段,PC2配192.168.20.0网段,两个网段不通,就以为VLAN在起作用。这个理解在单交换机场景恰好能“碰巧”工作,但到了跨交换机场景会坑住你。
VLAN做的事是切割广播域。交换机默认情况下,一个广播帧进来,除了接收端口之外的所有端口都转发一遍。PC多了之后,ARP广播、DHCP发现报文会把交换机整个打满,而且安全上没有任何隔离:任何一台PC只要知道对端IP,就能直接访问。VLAN划分之后,广播帧只在同一个VLAN的端口之间转发,跨VLAN的广播是到不了的。至于IP地址,你给不同VLAN配不同网段只是“配套动作”,是为了让三层设备将来能做路由转发,它本身不提供隔离。
这个区别在跨交换机场景下会立刻体现出来。两台交换机S1和S2,S1上PC1在VLAN 10,S2上PC3也在VLAN 10,两台PC的IP都在192.168.10.0网段。如果你只想着“IP同网段就能通”,你会发现它不一定通;反过来,PC1在VLAN 10、PC2在VLAN 20,即使你把两个PC配在完全相同的IP地址段,它们之间也不会通过二层转发互通。隔离与否的决定因素是数据帧走在哪个VLAN里,而不是IP长什么样。
2.2 Access和Trunk的一进一出规则:Tag、Untag与PVID
要在两台交换机之间转发VLAN流量,必须先搞清楚交换机端口对数据帧做了什么手脚。华为交换机端口按链路类型主要分Access、Trunk、Hybrid三种,跨交换机场景我们谈的通常是Trunk。先记Access和Trunk的进出规则,整个实验的核心就在这两套规则里。
Access口一般连终端设备,比如PC。它有一个属性叫PVID,默认是VLAN 1。进出规则是:数据帧从Access口进来,交换机给帧打上一个内部标签,标签内容就是PVID值;如果进来的帧本身已经带标签,Access口会直接丢弃。数据帧从Access口出去前,无论内部标签是多少,都会被剥掉,还原成一个原始以太网帧发给PC。也就是说,Access口两边的设备感知不到VLAN存在,VLAN信息只在交换机内部生效。
Trunk口一般连交换机或路由器。它有一个PVID(默认VLAN 1)和一个允许通过的VLAN列表。进出规则是:Trunk口收到带标签的帧,如果标签里的VLAN在允许列表里,就收下;收到不带标签的帧,查PVID,打上PVID对应的标签再收下。发送方向更关键:Trunk口要发一个帧,如果帧的VLAN值等于本端口的PVID,就把标签剥掉,以Untagged形式发出去;如果帧的VLAN值不等于PVID,就带着标签(Tagged)发出去。
这套规则意味着什么?跨交换机链路上,绝大多数VLAN的数据必须以Tagged形式在Trunk链路上跑,只有PVID对应的那个VLAN会被剥掉标签。这是很多实验翻车的根源:你想着“VLAN 10和VLAN 20的帧都在Trunk上跑”,却忘了只要有一个Trunk口PVID设置不对,对端就可能把一个本应带Tag的帧当成了不带Tag的帧,结果VLAN归属全乱。
2.3 跨交换机的最小成立条件:两个VLAN必须同时存在且被链路放通
理解了Tag和PVID,跨交换机VLAN的最小成立条件就很容易列出来了。条件一:目的VLAN必须在这两台交换机上都存在并且端口划分一致,被称为“同一个VLAN”。如果你只在S1上建了VLAN 10,S2上没建,那么从S1发往S2的VLAN 10帧到了S2后,S2在VLAN 10内找不到任何端口,数据帧直接丢弃。条件二:交换机之间的链路两端都必须配置为Trunk,且允许的VLAN列表都包含要跨交换机通信的那些VLAN。任何一端没放通,帧在接收口就被丢弃。条件三:链路的两个Trunk口PVID必须一致。虽然PVID不一致也能让Tagged帧通过,但当涉及不带Tag的帧、以及管理VLAN流量时,会埋下莫名其妙的间歇性不通的隐患。
这三个条件在eNSP里都能一步一步验证。很多人做跨交换机实验时只在每台交换机上建了VLAN、划了接口,却忘了查中间链路的放通列表,最后ping不同就怀疑模拟器坏了。这个场景非常典型,下一章就按这个最小成立条件把实验完整做一遍:两台S5700、四台PC、两个VLAN,从拓扑搭建到命令行配置到验证。
3. 用eNSP搭出跨交换机VLAN实验:拓扑、配置命令与联通验证
3.1 拓扑与IP规划:两台S5700、四台PC
实验先在eNSP里搭一个最简拓扑:两台交换机,取名S1和S2,型号选S5700即可;四台PC,分别叫PC1到PC4。S1下接PC1和PC2,S2下接PC3和PC4;S1的GigabitEthernet0/0/1接PC1,GigabitEthernet0/0/2接PC2;S2的GigabitEthernet0/0/1接PC3,GigabitEthernet0/0/2接PC4;S1和S2之间用GigabitEthernet0/0/24互连,也可以选GE0/0/23,任选一个空口就行。
VLAN划分按以下规划:PC1和PC3划入VLAN 10,模拟两台在不同交换机但属于同一个二层组的设备;PC2和PC4划入VLAN 20,模拟另一组设备。IP地址按表配给PC:
| 设备 | 所属交换机 | VLAN | IP地址 | 网关 |
|---|---|---|---|---|
| PC1 | S1 | VLAN 10 | 192.168.10.10/24 | 192.168.10.1 |
| PC3 | S2 | VLAN 10 | 192.168.10.30/24 | 192.168.10.1 |
| PC2 | S1 | VLAN 20 | 192.168.20.10/24 | 192.168.20.1 |
| PC4 | S2 | VLAN 20 | 192.168.20.30/24 | 192.168.20.1 |
网关暂时不需要真正存在,只需要填一个规划值,后面第5章做VLAN间通信用得着。实验当前阶段只验证二层通信:同一个VLAN跨交换机能不能通,不同VLAN之间是不是不通。在eNSP里配置PC的IP很简单,双击PC图标,在ip配置页签里填入上述地址和掩码即可。
3.2 交换机A的配置:VLAN创建、Access接入和Trunk放通
打开S1的命令行,从用户视图进入系统视图,然后按下面顺序配置。先创建VLAN,再把连PC的接口设置成Access并划入对应VLAN,最后把连S2的接口设置成Trunk并放通所有VLAN。
system-view # 批量创建VLAN 10和VLAN 20 vlan batch 10 20 # 配置GE0/0/1为Access口,划入VLAN 10 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit # 配置GE0/0/2为Access口,划入VLAN 20 interface GigabitEthernet0/0/2 port link-type access port default vlan 20 quit # 配置GE0/0/24为Trunk口,放通VLAN 10和20 interface GigabitEthernet0/0/24 port link-type trunk port trunk pvid vlan 1 port trunk allow-pass vlan 10 20 quit这段配置的逻辑:vlan batch 10 20是一条批量建VLAN的命令,比用vlan 10和vlan 20逐条进入再退出更快,实验里这样写干净;连PC的两个口设置成Access,是因为PC不会主动给帧打VLAN标签,Access口负责给进来的帧打上PVID对应的标签,再在出去时剥掉;连S2的口设置成Trunk,因为S1和S2之间需要同时跑多个VLAN的帧,帧必须带着VLAN标签在链路上传输,这样S2才能识别帧属于哪个VLAN。
参数说明:port trunk pvid vlan 1这行是关键。它表示这个口的PVID保持默认的VLAN 1。实验里链路两端PVID一致设为1,是为了让不带Tag的帧、以及管理VLAN流量有一个统一的归属。如果两端PVID不一致,比如S1侧PVID是VLAN 10,S2侧PVID是VLAN 1,那么S1发往S2的不带Tag帧会被S2打成VLAN 1的标签,但S1这边认为那是VLAN 10的流量,两边认知错位,排错非常痛苦。port trunk allow-pass vlan 10 20指定这个口允许带VLAN 10和VLAN 20标签的帧通过。注意不要用allow-pass vlan all偷懒,实验里能通,但生产环境里all会把所有VLAN放通,违背最小放通原则,属于安全隐患。
3.3 交换机B的配置与跨交换机互通验证
S2的配置逻辑和S1完全一致,只是接口对应关系不同。GE0/0/1接PC3,划入VLAN 10;GE0/0/2接PC4,划入VLAN 20;GE0/0/24上连S1,配置Trunk,设置PVID为VLAN 1并放通VLAN 10和20。
system-view # 第S2创建VLAN 10和20 vlan batch 10 20 # GE0/0/1接PC3,划入VLAN 10 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit # GE0/0/2接PC4,划入VLAN 20 interface GigabitEthernet0/0/2 port link-type access port default vlan 20 quit # GE0/0/24接S1,配置Trunk并放通VLAN 10和20 interface GigabitEthernet0/0/24 port link-type trunk port trunk pvid vlan 1 port trunk allow-pass vlan 10 20 quit两台配置完之后,先做一个静态检查:在S1上执行display vlan summary和display port vlan,看VLAN是否创建、各端口分配是否符合预期;在S1和S2上都执行display port vlan,看Trunk口的放通列表里是否有VLAN 10和20。这里有个小习惯值得养成:display命令不会修改任何配置,随便敲,排错时大胆用。
验证分两步。第一步,验证同VLAN跨交换机互通。在PC1上打开命令行工具,执行ping 192.168.10.30,目的地址是PC3,它们在VLAN 10里但分属两台交换机。如果配置正确,ping结果应该是连续的Reply from 192.168.10.30。第二步,验证不同VLAN隔离。在PC1上执行ping 192.168.20.30,目的地址是PC4,属于VLAN 20。这时应该看到Request timed out,因为VLAN 10和VLAN 20的广播域被切开了,二层转发根本不会发生。同样,PC2 ping PC4(VLAN 20内部跨交换机)能通,PC2 ping PC3不通。
如果第一步就不通,优先去查Trunk口放通列表和PVID,而不是怀疑PC的IP配置。这类问题在下一章专门梳理。
4. eNSP跨交换机VLAN避坑:4条高频翻车点的排查记录
4.1 AR设备启动失败:错误代码40与VirtualBox兼容性
现象:刚在eNSP里拖出一台路由器或交换机,设备状态一直显示“启动中”,过一会儿直接变红,提示“错误代码40”。如果批量启动多个设备,甚至会弹出一排错误框,整个模拟器都转不动。
原因:eNSP的设备进程依赖VirtualBox提供虚拟化环境。错误代码40几乎都指向eNSP和VirtualBox版本不匹配,或者Windows系统安全软件把VirtualBox的虚拟网卡驱动拦住了。装错版本的情况特别多,比如装了VirtualBox 6.0以上的新版,eNSP却按老逻辑去找配套驱动,直接失败。
解决:先把eNSP和VirtualBox全部卸载干净,包括用户目录下的残留配置,然后按华为官方文档列出的配套组合重新安装:先装VirtualBox,再装eNSP,全程以管理员身份运行安装包。装完之后,在Windows的安全中心里把eNSP安装目录加入排除项,确保安全软件不碰VirtualBox的驱动文件。启动eNSP时右键“以管理员身份运行”,再拖设备测试。这一步解决了大部分人的“ar设备启动不了”问题。每次实验前先启动一台AR或交换机确认能正常起来,再搭拓扑,免得做完配置发现设备全是红的。
4.2 划分完VLAN跨交换机ping不通:先查Trunk放通列表
现象:PC1和PC3都是VLAN 10,IP同网段,在S1和S2上都配置了VLAN和接口,但PC1 ping PC3就是不通,eNSP里PC的命令行一直回Request timed out。
原因:最常见的不是接口划错,而是S1和S2之间那条物理链路的Trunk配置没做全。很多人习惯在每个交换机上建完VLAN后只配置面向PC的Access口,忘了把上联口配置成Trunk并放通VLAN。帧从PC1进入VLAN 10后,到S1的GE0/0/24发现这个口只允许默认VLAN 1通过,VLAN 10的帧直接被丢弃,根本到不了S2。
解决:在两台交换机上都执行display port vlan,找到GE0/0/24的条目,看它是否显示为trunk模式,以及放通列表是否包含VLAN 10和20。如果是空列表或者只有VLAN 1,说明Trunk没配或者配错了,重新执行port link-type trunk和port trunk allow-pass vlan 10 20这两条命令。排查完再ping一次,如果还不同,继续查PVID。
4.3 PVID抄错:port trunk pvid vlan 10不是“放通VLAN 10”
现象:两个Trunk口配置看起来一样,放通列表也包含VLAN 10和20,但同VLAN跨交换机通信时通时不通,或者PC1能ping通PC3,PC2却ping不同PC4,抓包看到帧的VLAN标签值总比预期大一号。
原因:把port trunk pvid vlan 10当成“把VLAN 10设置为允许通过的VLAN”来用了。这是热词区里出现频率很高的错误。pvid的作用是给这个Trunk口上接收到的无标签帧赋予一个VLAN身份,不是放通某个VLAN。如果你把S1侧Trunk口PVID设成VLAN 10,S2侧Trunk口PVID设成VLAN 20,链路两侧对“无标签帧属于哪个VLAN”的理解就完全不同。实验里只要出现要么通要么不通的间歇现象,优先怀疑这个参数。
解决:把两端Trunk口的PVID统一回VLAN 1。用命令undo port trunk pvid把PVID重置默认值,再执行port trunk pvid vlan 1。检查方法是用display port vlan查看PVID列。记住一句话:实验场景里,Trunk口的PVID老老实实保持VLAN 1,让所有VLAN都带Tag跑跨交换机链路;不要追求把PVID改成业务VLAN,那是Hybrid和特殊组网才考虑的事。
4.4 接口类型用错与VLAN号用完之后的“假通”
现象:两台交换机间同VLAN能通,但PC访问对端交换机本身的地址时不通,或者某天加新业务发现所有VLAN号都被占了,只能往4095上挤,最后链路彻底不通。
原因:接口类型用错是另一种常见翻车。把上联口配成Access并指定default vlan 10,那么VLAN 20的帧到Trunk口直接被丢,表现为部分VLAN能通、部分不通。还有一个隐蔽问题:VLAN ID总数是有限资源,有效范围只有1到4094。有同学按“每个业务一个VLAN”规划,把VLAN号当序列号从10排到4000多,配到后面发现某条链路怎么都放通不了,其实是VLAN号用满之后开始出现规划冲突。
解决:接口类型用错就回到配置上纠偏:连交换机的口必须配Trunk或Hybrid,连PC的口配Access。VLAN号用完则要反过来审视VLAN规划,常见做法是按业务域做VLAN汇总,比如一个园区用VLAN 10到50,给未来预留连续段,而不是一个终端一个VLAN。做完这步再用display vlan summary检查剩余可用VLAN数量。这一条不算eNSP的bug,是组网习惯的坑,专门写出来提醒。
5. 让隔离的VLAN在需要时互通:单臂路由与子接口配置
5.1 为什么不直接加Trunk放通:隔离与互通的边界
实验做到“同VLAN跨交换机通、不同VLAN不通”,很多人会继续追问:那如果PC1(VLAN 10)就是想访问PC4(VLAN 20)呢?答案是必须走三层转发,不能在二层直接把Trunk放通列表改成允许所有VLAN之后期望“自动通”。二层交换机上的Trunk只是放行不同VLAN的帧,至于帧到了对端之后进哪个VLAN就进哪个VLAN,它没有任何路由能力。要让VLAN 10和VLAN 20之间通信,必须有具备三层能力的设备参与,最常见的是路由器或三层交换机,并在两端配上不同VLAN的网关地址。
在eNSP里做这个实验,性价比最高的方案是“基于华为路由器的单臂路由”:一台路由器用一个物理接口分成多个子接口,每个子接口对应一个VLAN,路由器在这个物理链路上同时接收多个VLAN的Tagged帧,完成三层转发。这也和标题里“通信隔离”形成闭环:VLAN隔离做到了,但网络不是死隔离,需要通信时要有受控的通道。子接口在这里就是那个受控通道。
5.2 单臂路由最小配置:子接口、dot1q termination vid与ARP
在原有的两台交换机拓扑基础上,加一台路由器AR1,把S1的GE0/0/24从原来直连S2改到连AR1,或者另起一个GE口连AR1。为了不拆当前拓扑,常见做法是加一台AR1,用其中一条链路接到S1的GE0/0/23上。S1侧新配置一个Trunk口放通VLAN 10和20;AR1侧物理接口配置成路由接口,再创建两个子接口。
在AR1上做如下配置:
system-view # 进入物理接口并开启三层转发能力 interface GigabitEthernet0/0/0 undo portswitch quit # 创建子接口.10,对应VLAN 10的网关 interface GigabitEthernet0/0/0.10 dot1q termination vid 10 ip address 192.168.10.1 255.255.255.0 arp broadcast enable quit # 创建子接口.20,对应VLAN 20的网关 interface GigabitEthernet0/0/0.20 dot1q termination vid 20 ip address 192.168.20.1 255.255.255.0 arp broadcast enable quit这段配置的逻辑:undo portswitch把交换机的物理口切换成三层路由口,否则接口默认在二层桥接模式下,无法终结VLAN帧。dot1q termination vid 10是子接口工作的核心参数,它告诉路由器这个子接口负责处理带着VLAN 10标签的帧,收到VLAN 10的帧后剥掉标签交给三层协议栈处理;发送时再给帧打上VLAN 10的标签,从物理口发出去。arp broadcast enable这条很容易被忽视,很多单臂路由实验翻车就是没配它。Trunk口默认是不转发广播帧的,ARP请求是广播帧,如果不显式允许子接口处理广播ARP,PC发起ARP请求后网关应答不了,表现为ping网关永远不通。
对应的,S1上连AR1的GE0/0/23口配置:
system-view interface GigabitEthernet0/0/23 port link-type trunk port trunk pvid vlan 1 port trunk allow-pass vlan 10 20 quit参数说明:子接口编号.10和VLAN ID对应纯属人为约定,但必须和dot1q termination vid里写的ID一致,建议保持一致方便维护。IP地址就是每个VLAN的网关,必须和PC配置的网关字段对应。掩码用255.255.255.0,也就是/24,和PC侧保持一致。做完这些,把四台PC的网关分别填上192.168.10.1和192.168.20.1。
5.3 验证与下一层隔离:ACL跟上,把网络域隔离闭环
单臂路由配置完毕,用PC1 ping PC4的地址192.168.20.30,这次应该是通的。从PC1发的帧先被Access口打上VLAN 10标签,经Trunk口到AR1的子接口.10,路由器查路由表发现目标在192.168.20.0网段,从子接口.20出帧并打上VLAN 20标签,最终经S2转发给PC4。在AR1上可以用display ip routing-table看到两条直连路由,分别是192.168.10.0/24关联GE0/0/0.10,192.168.20.0/24关联GE0/0/0.20,只有两条直连路由的配置方式,在eNSP里已经能满足VLAN间通信。
到这里,通信隔离的完整链路就出来了:同一VLAN内部二层互通,不同VLAN通过单臂路由三层互通。现实中比这复杂得多,三层交换机上还要加VRRP、策略路由,但原理骨架就是这个。下一步的隔离加固也不是加VLAN,而是加ACL,也就是热搜词里的“网络域隔离-vlan划分与acl配置”方向。在AR1上配一条ACL规则,拒绝VLAN 10访问VLAN 20,把单臂路由的“全通”变成“按规则通”,这才算真正落地了网络域隔离。
6. 把验证做扎实:抓Tag、看PVID、守一套排错顺序
单臂路由做完,大多数人的实验就停了。但我在带人做这个实验时,一定会让他们多做一个动作:在Trunk链路的两端抓包,亲眼看看带Tag和Untagged帧长什么样。eNSP里每台设备都有抓包按钮,在S1的GE0/0/24上开启抓包,然后让PC1 ping PC3(同VLAN跨交换机)。抓包结果里能看到数据帧的VLAN字段,显示ID为10,这就是Tagged帧,它是跨交换机VLAN通信的载体。再在S1的GE0/0/1上抓包,让PC1 ping PC2(同交换机同VLAN),帧里看不到VLAN字段,因为Access口发出前已经把标签剥掉了。这个对比能帮人建立最直接的感性认知:VLAN标签不是一直存在的,它只在链路需要区分时存在。
抓包之后,还要养成“看PVID、对照display、按顺序排错”的习惯。我踩坑踩出的固定排查顺序是:先display vlan summary,确认VLAN在每台设备上都真实存在;再display port vlan,逐个确认端口类型、PVID、放通列表;最后display mac-address,查一下交换机MAC表里VLAN和端口的对应关系,如果MAC表里没有目标PC的MAC记录,说明帧根本没进到这台交换机,问题在上一跳;如果MAC表正确但ping不同,问题大概率在PVID或网关。按这个顺序走,很少会漏排查点。
印象很深的一次,我在别人搭好的实验环境里排错,PC能ping通网关,但跨交换机Ping不同对端业务地址,我盯着Trunk放通列表看了半天,最后用display mac-address发现对端PC的MAC始终不在MAC表里,才想到去查S1和S2之间那条物理链路是不是被eNSP误删了连线。解决后我养成了一个习惯:排错前先看拓扑连线,再看MAC表,然后才看VLAN配置。这个顺序帮我在后续不少次验收实验里避开了无效操作。做网络工程这篇实验,最忌讳的是连配置都没核对就开始抓包,抓包是辅助手段,不是第一排错手段。希望帮到你。
本文还有配套的精品资源,点击获取