学习网络工程,或者正在备考华为认证的同学,对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、做Trunk;S5700是三层交换机,支持VLANIF和路由协议。搭建拓扑前,先确认每一台设备用哪种型号,否则后续配置到一半发现设备不支持,就得推倒重来。
2.2 地址与VLAN规划表:动手前先画出来
做任何网络实验,我都不建议直接跳进命令行开敲。地址规划这一步如果省了,后面配着配着就会发现网关写错、网段重叠、路由宣告漏网段,排查起来特别痛苦。我的习惯是在纸上或者表格里先把VLAN、网段、网关、互联地址全部列出来,这个实验我用的规划是这样的:
| VLAN | 用途 | 网段 | 网关 |
|---|---|---|---|
| VLAN 10 | 办公区 | 192.168.10.0/24 | 192.168.10.254 |
| VLAN 20 | 财务区 | 192.168.20.0/24 | 192.168.20.254 |
| VLAN 30 | 服务器区 | 192.168.30.0/24 | 192.168.30.254 |
除了业务VLAN,还需要规划和互联地址。汇聚层与核心层之间使用30位掩码的点到点地址段,比如核心到汇聚A用10.0.1.0/30,核心到汇聚B用10.0.2.0/30。为什么用30位掩码?因为点到点链路只需要两个可用IP,30位掩码刚好够用,也避免浪费地址,同时让路由表更清晰。网关地址我习惯用.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 10,PC2属于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就是该端口的默认VLAN,PC发出的不带标签的帧进来后会被打上该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。华为交换机默认是开启STP(MSTP)的,如果拓扑里没启用,并且你看到接入层和汇聚层连了多条线却依然能通信,那通常是eNSP里链路协商还未形成环路,或者你只连了单线。为保险起见,建议在汇聚层和接入层都显式开启STP:
stp 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地址,还要把与核心互通的物理接口配置成三层接口,并加入OSPF:
interface 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 10,IP地址设为192.168.10.1,掩码255.255.255.0,网关192.168.10.254;PC2划分到VLAN 20,IP地址设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放行VLAN:
interface 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配置VRRP:
interface 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上开启DHCP:
dhcp 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表提前画清楚了,后面配置和排障都会快很多;反之,直接上手敲命令,往往一半的时间都在跟各种低级笔误缠斗。做网络实验,慢就是快,想清楚再动手永远不吃亏。