
学习网络工程或者正在备考华为认证的同学对eNSP这个名字一定不陌生。它能在电脑上完整模拟出一家企业网络的运行环境而其中的企业三层架构实验更是几乎人人必练的经典项目。这个实验表面上只是搭几张拓扑、敲几段配置但它背后对应着真实企业园区网的骨架——接入层、汇聚层、核心层每一层该放什么设备、做什么事情、为什么这样设计都浓缩在这个实验里。这篇博文我按自己实际做实验的路径来写从设计思路、地址规划、逐层配置到问题排查尽量把每一步的“为什么”也说清楚希望能让你看完之后不光会敲命令还能理解这套架构背后的逻辑。1. 先说结论三层架构到底是什么为什么实验都照这个搭1.1 哪些场景用得上三层架构很多刚入门的同学会有个困惑我就几台电脑连个交换机为什么要搞三层直接一台路由器当网关几台二层交换机连用户不也能上网吗能但那是家庭网络或者小型办公室的玩法。企业网络一旦上了规模用户几百上千部门众多业务系统分离单靠一台路由器做网关、一台交换机接入性能和可靠性都撑不住。这里可以用一个城市交通的类比。城市越大路网越需要分级社区里的小路负责把车从家门口引导出来主干道负责快速穿过城区城市环线或者高架则负责整个城市与外界的连接。企业三层架构正好对应这个分级思想。接入层像社区小路负责把终端设备接入网络汇聚层像主干道承载VLAN间路由、策略控制这些“交通管理”工作核心层像环线高架只管高速转发不掺和太多复杂策略。这样分级之后每一层的职责单一、边界清晰出了问题也容易定位——接入层断了影响一个楼层汇聚层断了影响一片区域核心层则是最后一道防线。三层架构在企业园区网中几乎无处不在比如一栋办公楼里各个楼层的接入交换机、楼层汇聚交换机、机房核心交换机网络出口再通过防火墙和运营商相连。你做这个实验实际上就是把真实园区网缩放到eNSP里用模拟器重新演一遍。1.2 各层职责划分与设备选型参考从设备功能上说三层架构各层做的事情完全不同需要先理清楚层级主要职责典型设备实验中的接口能力接入层提供终端接入端口划分VLAN控制端口安全二层交换机如S3700普通千兆/百兆口支持VLAN、Trunk汇聚层VLAN间路由、网关终结、策略控制、冗余备份三层交换机如S5700支持VLANIF、STP、Eth-Trunk、OSPF、VRRP核心层高速转发不同区域之间的流量连接汇聚与出口高端三层交换机eNSP中通常也用S5700代替支持三层路由、动态路由协议、链路聚合从这张表能看出实验里的设备选择和真实环境基本对应。eNSP中常用的是S5700因为它是三层交换机除了二层功能外还能配VLANIF接口、跑OSPF一台设备身兼数职。很多教程喜欢用S3700做接入、S5700做汇聚我在实验中也采用这个组合这样能自然区分二层与三层能力的边界。可能有人会纠结既然汇聚层要用三层交换机做VLAN间路由为什么不直接在核心层上做网关这个问题我刚开始也有。其实取决于网络规模。小型网络把网关放在核心层也没问题减少一跳效率高但一旦汇聚层需要独立控制策略、分流流量或者不同汇聚区需要做不同的安全边界网关下沉到汇聚层就更合理。真实园区网中网关放汇聚层是比较主流的设计因为核心层越简单越可靠这也是为什么实验通常把VLANIF配在汇聚层而不是核心层。2. 实验前的准备工作拓扑规划与VLAN/IP规划2.1 eNSP版本选择与设备类型确认eNSP本身是华为官方提供的免费模拟器版本选择上我建议直接用官网能下载到的最新版本。旧版本最大的问题是有些命令不兼容比如部分老版本对S5700的VLANIF配置支持不完整或者接口类型识别有误。我自己最初用过一个老版本配置链路聚合时总提示接口不存在换了新版本就一切正常。所以如果实验敲命令怎么都报错先看看是不是模拟器版本太旧。设备类型在eNSP左侧工具栏里就能选路由器Router、交换机Switch、终端PC等。需要注意的是eNSP里的交换机型号并不是任选的主要提供S3700和S5700两种常用型号。S3700是二层交换机无法配置VLANIF但可以创建VLAN、做TrunkS5700是三层交换机支持VLANIF和路由协议。搭建拓扑前先确认每一台设备用哪种型号否则后续配置到一半发现设备不支持就得推倒重来。2.2 地址与VLAN规划表动手前先画出来做任何网络实验我都不建议直接跳进命令行开敲。地址规划这一步如果省了后面配着配着就会发现网关写错、网段重叠、路由宣告漏网段排查起来特别痛苦。我的习惯是在纸上或者表格里先把VLAN、网段、网关、互联地址全部列出来这个实验我用的规划是这样的VLAN用途网段网关VLAN 10办公区192.168.10.0/24192.168.10.254VLAN 20财务区192.168.20.0/24192.168.20.254VLAN 30服务器区192.168.30.0/24192.168.30.254除了业务VLAN还需要规划和互联地址。汇聚层与核心层之间使用30位掩码的点到点地址段比如核心到汇聚A用10.0.1.0/30核心到汇聚B用10.0.2.0/30。为什么用30位掩码因为点到点链路只需要两个可用IP30位掩码刚好够用也避免浪费地址同时让路由表更清晰。网关地址我习惯用.254而不是.1没有特别强制的理由只是和企业网里常见习惯保持一致后期如果某些地址段要分配给服务器或者管理设备.1开头的位置可以留作它用。2.3 搭建拓扑时的连接细节在eNSP里搭拓扑最需要注意的就是接口选择。接入层交换机连接PC用的是普通接口GigabitEthernet0/0/1、GigabitEthernet0/0/2这种接入层上连汇聚层我建议用两条链路做冗余后面可以配置链路聚合但第一次做实验为了把原理跑通也可以先用单链路后面再升级成双链路。汇聚层到核心层之间也是类似至少单链路有条件就双链路。连接线缆时还要注意PC和交换机之间用直连线Copper交换机与交换机之间也用直连线但如果eNSP里设备启动后端口显示红点基本就是线缆类型插错了。我之前遇到过把交换机互联口插成了交叉线结果设备始终无法协商后来在eNSP里发现交换机的端口默认支持自适应但偶尔也有识别问题重新选择Copper线连接就好了。拓扑搭完后先全部启动设备等待端口变绿再进行配置这能避免很多后面“接口起不来”的假故障。3. 核心配置实操从接入层到核心层逐级完成3.1 先给接入层配好VLAN与Trunk链路接入层的任务是让终端能正确进入对应VLAN同时把VLAN信息传递给上联汇聚层。以一台接了两台PC的接入交换机LSW1为例PC1属于VLAN 10PC2属于VLAN 20上联口是GigabitEthernet0/0/3。配置命令如下system-view sysname LSW1 vlan batch 10 20 30 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 interface GigabitEthernet0/0/2 port link-type access port default vlan 20 interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass vlan 10 20 30这里有几个细节要特别说明。交换机接口默认工作在二层模式默认链路类型是Hybrid华为设备的Hybrid口和Cisco的Access/Trunk不是一回事很多新手第一次配华为设备会在这个地方懵掉。我用的是最常见的做法下连接口直接配成access上连口配成trunk。配置access口时VLAN就是该端口的默认VLANPC发出的不带标签的帧进来后会被打上该VLAN标签trunk口则负责让多个VLAN的流量带着标签穿过链路到达汇聚层。还容易遗漏的一点是port trunk allow-pass vlan。华为设备的Trunk口默认只放行VLAN 1如果你创建了VLAN 10、20、30却没有放行汇聚层根本收不到这些VLAN的帧。我最初做实验时只配了port link-type trunk没有写allow-pass结果PC怎么配置都不通检查了很久才发现是这个原因。所以这个命令必须写完整有多个VLAN就写成vlan 10 20 30这个命令在华为设备上会自动创建对应VLAN并放行。3.2 汇聚层VLANIF网关和STP防环汇聚层在这个实验里承担的角色很重它既要终结接入层送来的VLAN流量提供终端网关又要和核心层通信。我用S5700模拟汇聚交换机统一命名为SW1和SW2两台都可以实现网关冗余的效果但第一次实验可以先用一台汇聚交换机把主链路跑通。关键配置如下system-view sysname SW1 vlan batch 10 20 30 interface Vlanif10 ip address 192.168.10.254 255.255.255.0 interface Vlanif20 ip address 192.168.20.254 255.255.255.0 interface Vlanif30 ip address 192.168.30.254 255.255.255.0 interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20 30 interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 10 20 30VLANIF是什么简单理解它就是给VLAN配置了一个三层接口拥有IP地址。因为交换机工作在二层时只能转发帧终端想要通信就必须有网关而网关不可能挂在物理接口上否则VLAN的意义就没了。VLANIF接口正是用来充当该VLAN内所有终端的网关。配置完成后VLAN 10的终端如果需要访问VLAN 20的终端数据包就会先到VLANIF10网关再由汇聚层做路由转发到目标VLAN。接下来需要处理环路问题。接入层如果采用双链路连接汇聚层拓扑中必然会形成物理环路二层广播帧会在环路里不断循环严重时直接导致网络瘫痪。解决办法是启用STP。华为交换机默认是开启STPMSTP的如果拓扑里没启用并且你看到接入层和汇聚层连了多条线却依然能通信那通常是eNSP里链路协商还未形成环路或者你只连了单线。为保险起见建议在汇聚层和接入层都显式开启STPstp mode mstp stp enable开启STP之后交换机之间会通过BPDU交换选举根桥和阻塞端口。在一个实验拓扑里通常让两台汇聚交换机中优先级高的一台作为根桥接入交换机上连汇聚的两条链路会自动阻塞其中一条。很多初学者看到端口状态变成了Discarding会以为网络坏了其实这是STP在正常工作不必慌张。3.3 核心层与汇聚层的三层互联与路由协议选择核心层的首要任务是高速转发所以这一层的配置反而不应该复杂。我的设计是核心交换机直接和汇聚交换机用三层接口互联也就是把两者之间的物理端口配成三层接口并分配IP地址然后在汇聚和核心之间运行OSPF动态路由协议让各业务网段的路由自动互相学习。核心交换机配置示例system-view sysname CORE interface GigabitEthernet0/0/1 ip address 10.0.1.1 255.255.255.252 interface GigabitEthernet0/0/2 ip address 10.0.2.1 255.255.255.252 ospf 1 router-id 10.0.1.1 area 0 network 10.0.1.0 0.0.0.3 network 10.0.2.0 0.0.0.3汇聚交换机上除了VLANIF地址还要把与核心互通的物理接口配置成三层接口并加入OSPFinterface GigabitEthernet0/0/24 ip address 10.0.1.2 255.255.255.252 ospf 1 router-id 10.0.1.2 area 0 network 10.0.1.0 0.0.0.3 network 192.168.10.0 0.0.0.255 network 192.168.20.0 0.0.0.255 network 192.168.30.0 0.0.0.255这里我需要单独说明一下OSPF反掩码的写法。反掩码是0.0.0.255时表示匹配192.168.10.0/24这个网段如果直接用10.0.1.0 0.0.0.3则表示匹配10.0.1.0/30这个点对点链路。写成反掩码时0.0.0.255和255.255.255.0正好是互补关系这是新手的普遍难点。简单记网络号正常写通配符位中0表示必须匹配1表示可忽略所以0.0.0.255就是前三段必须匹配最后一段任意。配置完成后可以用display ospf peer查看邻居关系是否达到Full状态。这个命令的输出里State字段如果是Full说明邻居建立成功如果是Init或者ExStart说明Hello报文协商有问题多半是区域ID不一致或者地址网段反掩码写错。邻居正常后核心交换机上应该能看到192.168.x.0这些网段的路由条目汇聚交换机上则能看到10.0.1.0/30、10.0.2.0/30的路由。3.4 PC终端配置与三层连通性验证到这里设备配置基本完成接下来就要用PC验证整个链路。eNSP的PC可以直接在图形界面上配置IP地址不需要进入命令行。我习惯把PC1划分到VLAN 10IP地址设为192.168.10.1掩码255.255.255.0网关192.168.10.254PC2划分到VLAN 20IP地址设192.168.20.1网关192.168.20.254。验证思路建议从底层往上层走。先在PC1上ping自己的网关192.168.10.254通了说明接入层、汇聚层的VLAN链路没问题然后ping PC2的地址192.168.20.1通了说明汇聚层VLAN间路由和OSPF都正常最后如果你在核心层或者出口还有设备可以再跨核心ping测试。这种逐层验证的方式能帮你快速把故障控制在一个小范围内而不至于全网一起排查。需要注意eNSP里PC默认是能够响应ping的但有些版本安装后需要手动把PC的防火墙关闭否则ping包发出去对方不回应。这个坑在Windows系统上特别常见因为PC终端实际是系统自带的虚拟网卡防火墙拦截了ICMP。遇到PC之间ping不通但设备接口状态都正常时先去终端上打开防火墙入站规则或者直接关闭防火墙再试。4. 十分钟排查三层架构实验中的高频故障与解决4.1 PC能ping通网关却ping不通跨网段PC这是我做实验时踩过最多的一种情况。PC1能通自己网关说明接入层和汇聚层之间的VLAN链路是通的但跨VLAN不通问题通常出在汇聚层的路由功能或者OSPF宣告上。检查顺序很固定先看汇聚交换机上有没有去往目标网段的路由表项display ip routing-table如果只有直连网段而没有目标网段那一定是OSPF没有宣告完整。另一个高频原因是在汇聚交换机上忘记宣告VLANIF网段只宣告了与核心互联的10.0.1.0/30。这样核心侧学不到192.168.10.0/24自然无法转发跨VLAN流量。解决办法就是回到OSPF配置里把每个VLANIF网段都宣告进去。记住这行network 192.168.10.0 0.0.0.255的作用是告诉OSPF“我这个网段存在请让全网都知道”。4.2 Trunk链路放行不全导致VLAN丢失如果PC ping网关都不通优先检查接入层交换机。我处理这类问题通常会做三件事display vlan查看VLAN是否创建成功display port vlan查看端口状态确认下连接口是不是access且default vlan正确上连口是不是trunk且allow-pass里包含了PC所属VLAN。如果VLAN在接入层存在但Trunk没放行汇聚层是收不到这个VLAN的广播帧的表现就是网关偶尔能ping通、过一会又丢包或者干脆不通。有时候Trunk放行命令写对了但交换机的接口模式被误配成了access这时候帧进入端口时会被强制打上access口的PVID导致VLAN标签变成别的值。解决方法是把上连口改成trunk并重新指定放行VLAN同时注意不要残留access配置。check配置时display current-configuration interface GigabitEthernet0/0/3能直接看到该端口生效的完整命令比翻全局配置快得多。4.3 两台汇聚同时存在STP端口反复切换导致的“假断网”加入冗余汇聚后容易遇到一个现象PC偶尔ping不通交换机上看STP端口状态在Forwarding和Discarding之间反复跳。这种情况通常是STP根桥选举不稳定造成的。在只有两台汇聚时哪台优先级高谁就是根桥但如果优先级配错或者没配交换机可能会选择桥ID最小的那台而接入层交换机自身也可能参与竞争导致拓扑震荡。解决思路很明确手动指定根桥。在汇聚设备上把其中一台设为根桥另一台设为备份根桥stp root primary另一台stp root secondary这样STP收敛会稳定很多。另外如果接入层到汇聚层是两条物理链路本来就是为了冗余建议用Eth-Trunk把两条链路聚合成一条逻辑链路既能提升带宽又能消除STP在这个位置的环路干扰。Eth-Trunk配置会在下一节展开它在三层架构实验里的价值非常大。4.4 eNSP设备启动缓慢接口报红这个问题和配置关系不大但非常影响实验心情。eNSP里设备启动后接口长期黄色或者红色常见原因有三个电脑虚拟化支持没打开运行内存不足以及杀毒软件拦截了eNSP进程。我自己的做法是先在BIOS里确认CPU虚拟化开启然后关闭第三方安全软件的实时防护最后把eNSP程序加入白名单。如果还不行尝试重启所有设备而不是只重启出问题的那一台因为eNSP在设备状态异常时经常需要全部重建链路。5. 进阶玩法这个实验还能怎么升级5.1 Eth-Trunk链路聚合让双链路真正发挥作用前面提到接入层到汇聚层如果拉了两根线直接跑STP会阻塞一根带宽并没有翻倍。想同时获得冗余和带宽就要用链路聚合。在华为设备上叫Eth-Trunk它可以把多个物理端口绑定成一个逻辑端口对上层来说这个逻辑端口就像一根更宽的链路。配置起来并不复杂。在接入交换机上创建一个Eth-Trunk逻辑接口把两条物理上连口都加入其中再在Eth-Trunk接口上配置Trunk放行VLANinterface Eth-Trunk1 port link-type trunk port trunk allow-pass vlan 10 20 30 interface GigabitEthernet0/0/3 eth-trunk 1 interface GigabitEthernet0/0/4 eth-trunk 1汇聚侧也要做同样的配置。这里有个关键细节两端Eth-Trunk的编号不需要一样但成员口的链路类型、速率、双工模式必须一致否则链路聚合协商不成功端口会一直处于Down状态。配置完后用display eth-trunk 1查看成员口的协商状态正常情况下是Selected如果显示Unselected就要检查物理口配置是否一致。加上了Eth-Trunk之后接入层到汇聚层不再存在物理环路STP可以把这一对链路当成一条逻辑链路来对待配置上更干净。这个操作在真实企业网里非常常用所以实验值得升级。5.2 VRRP网关冗余汇聚层挂了也不影响终端在真实企业网里汇聚层如果只有一台交换机那么它一旦宕机整个区域的终端都会失去网关属于单点故障。虽然核心层设计得再可靠也救不了汇聚层这一跳。解决思路是配置两台汇聚交换机通过VRRP虚拟出一个网关地址终端默认网关始终指向这个虚拟IP正常情况下流量走主设备主设备故障时备份设备自动接替转发。在汇聚交换机SW1和SW2上对每个VLAN配置VRRPinterface Vlanif10 vrrp vrid 10 virtual-ip 192.168.10.254 vrrp vrid 10 priority 120这里的priority默认是100值越大优先级越高。SW2上同样配置vrid 10的virtual-ip但不调priority保持100这样SW1成为VLAN 10的主用网关SW2成为备份。与之相对如果你希望两台设备分担不同VLAN的流量可以在VLAN 20上把优先级高的角色反过来让SW2作为VLAN 20的主网关。这就是所谓的主备负载分担组合企业里也常见。配置完成后PC的网关仍然填192.168.10.254不需要做任何修改。我用一台PC长ping验证过手动关闭SW1的VLANIF10接口或者直接shutdown SW1与接入层的链路ping丢几个包后就能恢复这就是VRRP在起作用。这个实验可以让整个三层架构更接近生产环境。5.3 DHCP自动分配IP从手工配地址走向自动化前面的实验都是手工给PC配置静态IP真实企业网基本不会这么干几百台终端一台台配置根本不可行。通常在汇聚层启用DHCP服务让终端自动获取IP时还可以同时下发网关和DNS。汇聚交换机SW1上开启DHCPdhcp enable interface Vlanif10 dhcp select interface dhcp server dns-list 223.5.5.5dhcp select interface表示从VLANIF10这个接口所在的网段分配地址接口地址就是网关。PC端改成自动获取然后打开命令行用ipconfig查看是否能拿到192.168.10.0/24网段的地址。这个配置在实验里特别直观你会看到终端接入后自动获得地址整个网络像“活”了一样。做这一步时要注意如果汇聚交换机的该VLANIF接口地址和DHCP地址池冲突终端可能获取不到地址或者重复分配。所以规划阶段就要确保DHCP地址池范围不包含网关地址用excluded-ip-address排除也是个好习惯。DHCP的报文是广播帧当汇聚层和终端不在同一个二层域时还需要配置DHCP Relay不过在本实验的汇聚即网关场景下直接用dhcp select interface就够了。写在最后的几句经验这个实验我前前后后做过不止一遍每次做都会有新的理解。第一次做完能通就觉得很了不起等到后来配置冗余链路、加上VRRP和链路聚合之后才真正体会到三层架构的价值不在“有三层”而在每一层都承担了自己该承担的事并且留有冗余手段去对抗故障。如果你现在正在做这个实验我的建议是不要只满足于“能ping通”把每一条配置命令为什么要存在搞清楚然后尝试把拓扑升级成双机冗余版本那才是实际企业环境里真正需要的能力。整套配置过程中我个人最想强调的还是规划先行。地址表、VLAN表提前画清楚了后面配置和排障都会快很多反之直接上手敲命令往往一半的时间都在跟各种低级笔误缠斗。做网络实验慢就是快想清楚再动手永远不吃亏。