真机舍不得折腾、买设备预算超支那就老老实实用模拟器把交换机组网的基础打牢。这篇文章记录的是我在华为ENSP模拟器里做交换机VLAN划分与配置的一个完整实验从拓扑规划、端口模式选择、命令配置到最后的连通性验证以及几个我实际踩过、也经常看到新手踩的坑。如果你刚开始学交换网络或者准备给部门同事做一次内部分享这份实验过程可以直接拿去复现。1. VLAN解决了什么问题以及ENSP实验环境怎么准备1.1 广播域的烦恼与VLAN的应对思路很多初学者第一次接触VLAN时只知道VLAN能隔离广播域这句话但没体会过不隔离广播域是什么感觉。我举一个我实习时真实遇到过的场景一个小办公室三十几台电脑接到同一台48口交换机上没做任何VLAN划分所有端口默认都待在VLAN 1里。平时传文件、打印没什么问题一到下午有人开始用P2P下载或者局域网游戏联机整个办公室的网络延迟飙升连网页都打不开。原因就是广播帧和组播帧在VLAN 1这个广播域里被无差别转发到了所有端口一台设备有问题全办公室陪跑。VLANVirtual Local Area Network虚拟局域网做的事情就是把一台物理交换机在逻辑上拆成多台虚拟交换机。每个VLAN是独立广播域端口划分到哪个VLAN这个端口收到的广播帧就只在同一VLAN的端口范围内传播。这样一来部门之间、业务之间的流量互相隔离网络出问题时影响面也小得多。这个思路放到ENSP模拟器里同样适用而且因为模拟器里所有设备都在虚拟环境里做实验的成本几乎为零可以随便折腾。说到华为ENSPEnterprise Network Simulation Platform它本质上是一个图形化的网络仿真工具内置了路由器、交换机、终端PC、无线设备等组件。做VLAN实验需要关注几个前置依赖ENSP本身需要WinPcap/Npcap、VirtualBox等底层组件支撑安装顺序建议是先装VirtualBox和Npcap再装ENSP主程序。如果启动设备时报AR或设备启动失败的错误多半是VirtualBox版本不兼容或者ENSP版本过旧网上很多教程里都有对应的处理步骤此处不再展开。1.2 设备选型与启动注意事项进入ENSP后新建一个工程从设备栏里拖出一台二层交换机。我习惯选S5700系列比如S5700-24TP-SI原因是它默认支持VLAN、Trunk以及基本的VLANIF三层功能做二层实验足够后续想扩展三层实验也不用换设备。终端设备选PC拖两个出来分别模拟不同VLAN里的主机。注意一个细节拖动出来的设备默认是未启动状态图标呈灰色右键设备选择启动后设备会经历一个启动过程指示灯从红到绿等状态变为稳定绿色后才能双击进入命令行窗口。有同学说点击设备的CLI窗口没反应十有八九是设备还没启动完成就操作了这一点在模拟器实验里特别常见。实验拓扑决定了我们要配置哪些端口、划分哪些VLAN所以先规划好拓扑比边做边想高效得多。2. Access与Trunk端口模式背后的转发逻辑2.1 为什么华为交换机端口要区分Access和Trunk所有交换机的VLAN配置最终都落在端口上。初学时会问为什么不能把所有端口都设置成一种模式原因在于端口连接的对象不同对VLAN标签的处理方式也不同。可以把交换机端口想象成楼宇的门卫每种端口模式就是不同的门禁策略Access端口连接的是普通员工PC、打印机、IP电话等终端设备。这些设备发出的以太网帧本身没有VLAN标签而且在它们看来也不该有标签。Access端口的职责是从终端接收无标签帧时给它打上本端口的VLAN标签向终端发送帧时把标签剥掉再送出去保证终端收到的还是标准的无标签帧。Trunk端口连接的是内部走廊交换机与交换机之间、交换机与路由器之间的链路。走廊上要同时通行多个部门的流量不能只认一个部门所以Trunk端口允许放行多个VLAN帧并且帧在穿越这条链路时要保留并识别802.1Q VLAN Tag这样才能知道每一帧属于哪个VLAN。2.2 Access端口的配置逻辑华为交换机端口默认工作在Hybrid模式需要手动改成Access。配置Access端口也就两句话system-view interface Ethernet0/0/1 port link-type access port default vlan 10进入华为CLI后先system-view进入系统视图再进入接口视图。port link-type access把接口类型改为Accessport default vlan 10指定该接口的默认VLAN也就是PVIDPort VLAN ID。对于Access端口来说PVID就是它所属的VLAN一个Access端口只能属于一个VLAN。我不建议只在命令上记住配置还要理解转发时的行为。假设Ethernet0/0/1是Access端口且PVID为10那么入方向收到PC发来的无标签帧交换机给它打上VLAN 10的标签。出方向发往PC的帧先把VLAN 10标签剥除再以普通帧形式发送。这个剥标签的动作非常关键。PC网卡不认识802.1Q标签如果交换机不剥标签就把帧发出去PC会直接丢弃该帧表现出来就是同一VLAN也Ping不通。所以Access端口和终端设备的这种无标签约定是VLAN配置里最基本的信任关系。2.3 Trunk端口的配置逻辑与命令Trunk端口通常用在交换机互联链路上。命令如下interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20第一行进入互联接口视图第二行把接口类型改为Trunk第三行是放行VLAN列表即这条Trunk链路上允许携带VLAN 10和VLAN 20标签的帧通过。Trunk端口的PVID默认是1。也就是说从Trunk口收到无标签帧时交换机会把它当作VLAN 1的帧处理。这个默认PVID可以改成其他值例如port trunk pvid vlan 10但在交换机间互联的场景下除非特殊设计一般保持默认即可。Trunk口上值得注意的行为是入方向收到无标签帧打上PVID对应的标签收到有标签帧直接保留标签进入交换矩阵。出方向遍历该帧所属的VLAN如果在allow-pass vlan列表中就保留标签从Trunk口转发出去如果不在列表中直接丢弃。2.4 PVID、Tagged与Untagged的关系备忘这张表我在做实验时经常贴在旁边方便对照角度Access端口Trunk端口常用连接对象终端设备(PC/打印机)交换机、路由器所属VLAN数量1个多个(需放行)入方向无标签帧打上PVID标签打上PVID标签(默认PVID1)出方向帧的处理剥除标签发无标签帧保留标签发有标签帧默认配置无需手动指定PVID1需手动放行这张表里最重要的一个点是Terminal设备不认识标签交换机间要靠标签识别。只要记住这两条核心原则配置时就不会本能地犯所有端口都设成AccessTrunk口忘了放行VLAN这类错误。3. 动手实验两台交换机上的VLAN划分全程3.1 实验拓扑与规划表这个实验的目标是跑通两台交换机之间的VLAN划分与跨交换机通信。拓扑设计为两台S5700交换机SW1、SW2各自接两台PC两条GE口GigabitEthernet0/0/1作为两台交换机的互联链路。规划如下设备接口连接对象VLANIP地址SW1Ethernet0/0/1PC1VLAN 10192.168.10.1/24SW1Ethernet0/0/2PC2VLAN 20192.168.20.1/24SW1GigabitEthernet0/0/1互联到SW2Trunk-SW2Ethernet0/0/1PC3VLAN 10192.168.10.2/24SW2Ethernet0/0/2PC4VLAN 20192.168.20.2/24SW2GigabitEthernet0/0/1互联到SW1Trunk-选择192.168.10.0/24和192.168.20.0/24两个网段是为了让VLAN和IP网段形成一一对应关系便于记忆和验证。PC的网关这里可以不配因为我们只做二层VLAN通信验证同VLAN内通信不需要经过网关。3.2 SW1的VLAN创建与端口划分双击SW1进入命令行依次完成命名、创建VLAN、配置端口。system-view sysname SW1 vlan batch 10 20 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 quit interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20 quit quitvlan batch 10 20用于一次性创建多个VLAN比一个个vlan 10、vlan 20进入VLAN视图再退出要快。创建完VLAN后Ethernet0/0/1划分到VLAN 10Ethernet0/0/2划分到VLAN 20。最后是互联口我特意用GigabitEthernet0/0/1而不是Ethernet口模拟器中GE口和E口在功能上没有本质差别但现实中交换机间互联通常用更高速率的接口保持这种习惯有益无害。3.3 SW2的VLAN创建与端口划分SW2的配置和SW1非常相似区别在于端口与PC的对应关系。这里我把VLAN 10和VLAN 20分别接到SW2的Ethernet0/0/1和Ethernet0/0/2互联口同样是GigabitEthernet0/0/1放行VLAN 10和20。system-view sysname SW2 vlan batch 10 20 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 quit interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20敲完命令后记得在SW2上同样要退出系统视图然后保存配置。模拟器里保存配置有直观意义ENSP默认在没有保存的情况下重启设备后配置会丢失。养成save的习惯是每个实验都该做的收尾动作。3.4 验证配置display命令看VLAN表配置完成后先别急着Ping用查看命令确认配置落到了端口上。在SW1上执行display vlan输出会列出VLAN ID和包含的端口。display port vlan则更直观地展示每个端口的类型、PVID和允许通过的VLAN。我常用display current-configuration来看完整配置文件它可以快速排查是不是哪条命令漏敲了或者端口的VLAN划分错位。曾有同事在新人实验报告里看到端口划分和需求完全相反的案例这类低级错误在真实环境中后果更严重所以一定要养成配置后查看的好习惯。3.5 Ping通与Ping不通的预期结果验证阶段直接使用PC的ping命令我列出完整的预期结果流量走向是否同VLAN预期结果PC1 → PC3同为VLAN 10Ping通PC2 → PC4同为VLAN 20Ping通PC1 → PC2VLAN 10 → VLAN 20Ping不通PC3 → PC4VLAN 10 → VLAN 20Ping不通PC1 → PC2、PC1 → PC4跨VLANPing不通同一VLAN内的PC即使跨越了两台交换机也应该能Ping通这正好说明Trunk链路正确地承载了VLAN 10和VLAN 20的帧。不同VLAN间的PC无论接在同一台还是不同台交换机上都不应该Ping通这是VLAN隔离效果的体现。如果PC1能Ping通PC3说明互联Trunk配置无误如果Ping不通就需要进入下一节的排查链路去看问题出在哪一环。4. 实验中的典型故障与完整排查链路4.1 同VLAN跨交换机Ping不通一步步找断点这个故障是VLAN实验里出现频率最高的情况。我复盘一次完整的排查链路读者可以照着重现第一步查接口物理状态。在SW1和SW2上分别执行display interface GigabitEthernet0/0/1查看端口协议状态是否为UP。如果DOWN说明链路没有建立多半是设备未启动完成或者两台交换机的互联口选错了端口。第二步查端口类型。执行display port vlan确认互联口不是Access模式。有人把互联口设置成了Access且PVID为10那VLAN 20的帧就没法穿过这条链路导致PC2到PC4不同VLAN不通——等等这里要更正一下如果互联口是Access且PVID为10实际效果是这条链路只承载VLAN 10VLAN 20会被剥掉标签无法经过最终同VLAN跨交换机的通信情况会因为VLAN不同而表现各异。核心问题是Trunk口配置里漏掉了某一VLAN的放行跨交换机的对应VLAN通信必然失败。第三步查Trunk放行列表。在互联口执行display port vlan确认出口方向allow-pass vlan中同时包含10和20。漏填是最常见的错误比如只写了port trunk allow-pass vlan 10忘了20那么VLAN 20跨交换机必然不通。第四步抓包确认标签。ENSP支持接口抓包右键SW1的GE0/0/1接口选择抓包然后用Wireshark抓取PC1 Ping PC3时的帧。可以看到VLAN 10的帧在Trunk链路上带有一个802.1Q标签标签里的VLAN ID就是10。如果能看到标签但是PC3仍未收到问题大概率出在SW2的出方向端口配置上。整个过程中最容易忽略的是PVID对等问题。假设SW1的互联Trunk口PVID被改成了10而SW2侧Trunk口PVID还是默认1当SW1向SW2发送不带标签的帧比如VLAN 10的管理帧时SW2会按PVID1来处理它两边理解不一致就会丢帧。所以互联口两侧的PVID、放行VLAN列表一定要保持一致。4.2 ENSP特有的烂尾坑设备未启动完成模拟器环境特有的问题往往耗时间。某次实验重新打开工程后我没有等SW1指示灯完全变绿就敲了命令结果如下display vlan能看到默认VLAN 1但新创建的VLAN 10、20迟迟不出现接口设置命令执行后没有任何报错但查看时端口模式还是默认HybridPing测试全部失败。排查到最后其实是设备还在启动中VLAN和接口状态都没有初始化完成命令行虽然接收了命令但底层数据库还没有就绪。处理办法只有一个关掉CLI窗口右键设备重启等状态稳定后再操作。模拟器实验看似不如真机严肃但操作时序这个习惯必须在模拟阶段就养好。4.3 把终端接口误配成Trunk的连锁反应还有一个我见过不少次的错误为了让多个VLAN都接到同一台PC把连接PC的接口配成了Trunk。这里的逻辑漏洞在于PC网卡不识别不打标签的802.1Q帧。终端侧配置Access模式、释放无标签帧是原则性问题不是哪种模式更灵活的问题。如果某台PC接入的接口被误配为Trunk且官网没有把允许VLAN列表里的帧在出方向变成无标签PC根本没法解析这些帧。表现出的现象为Ping不通或丢包率跳动。排查手段是一样的display port vlan立刻看到该物理接口的链路类型是Trunk。改回Access并指定正确VLAN后问题消失。4.4 一套固定的排查套路避免每次排障都从零开始我自己的排障习惯是上面几个步骤的固定套路写下供参考查接口UP/DOWN物理链路是否正常查端口类型Access/Trunk/Hybrid是否与连接对象匹配查VLAN划分端口所属VLAN和需求是否一致查Trunk放行跨交换机的VLAN是否都在allow-pass里查PVID互联链路两侧是否对等抓包确认看到标签才踏实。这套路在真实网络中同样适用。VLAN相关的二层故障九成都能靠这个顺序定位到具体环节。5. 从模拟器到真实网络端口模式延伸与VLAN规划思路5.1 Hybrid端口华为默认模式的价值前面提到华为端口默认是Hybrid这个模式本质上可以同时具备Access和Trunk的能力出方向可以指定某些VLAN带标签发送port hybrid tagged vlan某些VLAN不带标签发送port hybrid untagged vlan。它比较常见的应用场景是连接路由器或三层设备时既需要让终端所在VLAN以无标签方式到达路由器子接口又需要保留其他VLAN的标签。举个例子如果有一个VLAN 10接入路由器一个VLAN 20接入另一个三层设备配置大致可以这么写interface GigabitEthernet0/0/1 port link-type hybrid port hybrid pvid vlan 10 port hybrid untagged vlan 10 port hybrid tagged vlan 20这段话的含义是物理链路属于VLAN 10但同时也承载VLAN 20的带标签流量。对初学者来说先把Access和Trunk吃透Hybrid只需要了解它是华为的增强模式即可等真正接触到一台交换机既要接终端又要接路由器的组网时再回来看这段配置理解会快得多。5.2 VLAN规划的几个实用原则做模拟器实验可以随意规划VLAN但真实网络里VLAN划分通常需要考虑业务发展。我总结几条实际中常用的规划原则按部门或业务划分一个VLAN对应一个部门或一类业务例如财务、办公、视频监控各自独立便于安全隔离和故障定位一个VLAN配一个IP网段VLAN ID与网段绑定出现问题时通过IP网段就能判断VLAN归属管理VLAN与业务VLAN分开建议使用VLAN 1或者专门的管理VLAN用于设备远程管理业务流量不要和它混在一起预留VLAN ID新部门增加时不用重新规划大网在多个已规划VLAN之外预留若干区间后续扩展会舒服很多控制VLAN数量VLAN不是越多越好每个VLAN都要占用交换机的MAC地址表资源三层网关配置也需要维护无节制的划分反而增加维护成本。这些原则在ENSP实验里可能看不出直接差别但到了几十台交换机、几千个终端的网络里前期的VLAN规划直接决定后期排障效率。做实验时就养成先规划、后配置的习惯比工作了再改要轻松得多。5.3 从二层VLAN到三层VLANIF下一步实验的入口再往深走一步同一台交换机上VLAN 10和VLAN 20之间的通信当前实验中是禁止的因为交换机对二层帧只做转发判断不同VLAN之间属于不同广播域二层帧不会跨界。真正要实现跨VLAN通信需要三层设备介入口。华为S5700系列支持VLANIF接口给VLAN配置一个网关IP就能实现VLAN间的三层转发。interface Vlanif10 ip address 192.168.10.254 255.255.255.0 quit interface Vlanif20 ip address 192.168.20.254 255.255.255.0配置完成后把VLAN 10内PC的网关指向192.168.10.254VLAN 20内PC的网关指向192.168.20.254PC1就能和PC2通信了。这个实验很适合放在本实验之后继续练习因为它引入了三层转发的概念是理解VLANIF、路由和网关作用的好切入点。我在实际配置中发现不少人分不清交换机端口所属VLAN和VLANIF接口的地址之间的关系。可以这样理解端口所属VLAN决定二层数据帧能在哪个广播域里流动VLANIF决定这个广播域的三层网关是谁。只要二层VLAN划分正确三层VLANIF配置只是顺理成章的下一步。最后分享一个小技巧在ENSP里验证VLAN划分是否合理时不要只测一次Ping通就收工试着把某台PC的IP改成其他VLAN的网段例如把PC1改为192.168.20.3再观察它与PC3的通信情况。你会发现虽然它物理上连接在VLAN 10的端口但因为IP已经属于VLAN 20的网段二层仍然无法跨VLAN访问这种物理端口VLAN与IP网段错配的现象比一次正常的Ping通更能帮助你理解VLAN为什么要同时管住端口和IP两层。VLAN实验做完建议顺手把配置导出成文本存一份下次想复现或者做扩展实验时对比前后配置比重新敲一遍命令高效得多。