1. 项目整体设计与思路拆解
1.1 为什么学eNSP首选从VLAN配置开始
很多刚接触网络的人会问:想做交换机实验,工具那么多,为什么偏偏是eNSP?又为什么一定要从VLAN配置切入?
先说eNSP。它是华为官方推出的免费网络仿真平台,里面可以拖出路由器、交换机、PC、无线设备,甚至还能接云和真实网卡。最大的好处是零成本、可随时重置,不用像以前那样扛两台真机到实验室,插线插到眼花,搞错了还得去机房重启。对于网络初学者、准备考华为认证的人、或者刚接手公司内网维护的运维来说,这是一块非常合适的“练功场”。
而VLAN配置,则是所有交换机实验里性价比最高的一课。VLAN(Virtual Local Area Network,虚拟局域网)是二层网络最基础也最核心的隔离手段,几乎决定了后续所有上层应用能不能正常工作。你在eNSP里把VLAN玩明白了,后面学VLAN间路由、生成树、链路聚合、甚至防火墙策略,都会顺手很多。反过来,如果一开始就把Access、Trunk、PVID这些概念混成一锅粥,后面排查网络不通时会吃大亏。
我的建议是:不要一上来就堆十几个命令、抄一堆配置,最后发现Ping不通也不知道从哪里查起。先把“为什么要这样设计”想清楚,再动设备。这篇文章会从一个三台交换机加若干PC的小拓扑说起,把VLAN配置从规划、实施到验证完整过一遍。
1.2 网络拓扑与VLAN规划的提前准备
VLAN配置不是拿起设备就敲命令,而是要先规划。规划得好,配置就是体力活;规划不好,后面全是返工。
以我常用的实验拓扑为例:三台交换机,SW1作为汇聚或核心角色,SW2和SW3作为接入交换机。PC1、PC2接在SW2上,PC3、PC4接在SW3上。规划的VLAN分两个:VLAN 10给办公业务网段,VLAN 20给监控或服务器网段。
为什么要分两个VLAN?因为在实际网络里,办公流量和监控流量往往需要逻辑隔离。办公区广播多、设备多,监控数据要求相对独立的带宽与安全性,把它们放在同一个广播域里,一旦某个终端中毒疯狂发广播包,整个二层网络都会受牵连。通过VLAN隔离后,广播域被切开,二层流量互不可见,即使同一台交换机下的设备,只要VLAN不同也不能直接通信。
规划时的划分原则:
- VLAN 10:业务终端,IP规划为192.168.10.0/24,网关192.168.10.1
- VLAN 20:监控终端或服务器,IP规划为192.168.20.0/24,网关192.168.20.1
- SW2和SW3是纯二层接入,负责把终端按端口划入对应VLAN
- SW1负责汇聚,同时承载VLAN间路由(后面做VLAN间通信时会用到)
这样的结构对应了很多中小企业的典型组网:接入交换机在楼层或区域,汇聚交换机在机房,终端就近接入。规划做完,再动手建拓扑,脑子里就有了一张画好的蓝图,配置时不容易乱。
2. Access端口特性与接入配置实操
2.1 Access端口为什么适合接终端
交换机端口的工作模式,最常见的就两种:Access和Trunk,华为设备上还有个Hybrid模式。新手最容易混淆的就是这两者。
Access端口的中文叫法很多,有人叫“接入模式”,有人叫“普通模式”。它的特点是:端口只能属于一个VLAN,发出的帧不带VLAN标签(Tag),收到的帧如果带Tag则丢弃。换句话说,Access口像一个只认一个部门的工作人员,从PC来的普通数据帧进入交换机时,交换机会给它打上这个端口所属VLAN的标签,然后在交换机内部转发;从交换机发往PC时,会把标签剥掉再发出去,PC完全感知不到VLAN的存在。
为什么适合接终端设备?因为PC网卡默认发的都是无标签帧,它压根不知道自己属于哪个VLAN。Access口通过“端口放进的VLAN”替PC完成了归类。比如PC1接在SW2的G0/0/1口,这个口划分到VLAN 10,那么PC1的数据进入交换机就被当成VLAN 10的流量处理。
如果这里选错,误把接PC的口配置成Trunk或者Hybrid,会发生什么?最常见的结果就是:PC能获取IP但Ping不通网关,或者完全不通,因为Trunk口默认发出的帧可能带Tag,而PC网卡收到带Tag的帧后往往直接丢弃。所以接PC的端口,正确选择就是Access。
2.2 接入层Access端口配置与验证
实验拓扑建好后,配置顺序建议是:先建VLAN,再配置端口,最后验证。按我刚才的规划,SW2和SW3是接入层,先看SW2的配置。
打开SW2的命令行,逐条敲入:
system-view [Huawei] sysname SW2 [SW2] vlan batch 10 20 [SW2] interface GigabitEthernet0/0/1 [SW2-GigabitEthernet0/0/1] port link-type access [SW2-GigabitEthernet0/0/1] port default vlan 10 [SW2-GigabitEthernet0/0/1] quit [SW2] interface GigabitEthernet0/0/2 [SW2-GigabitEthernet0/0/2] port link-type access [SW2-GigabitEthernet0/0/2] port default vlan 20 [SW2-GigabitEthernet0/0/2] quit这几条命令逐一说一下:
system-view:进入系统视图,相当于从“查看模式”切到“配置模式”。sysname SW2:给交换机改个名字,方便多设备时区分,排错时不至于看着一屏幕的“Huawei”发呆。vlan batch 10 20:批量创建两个VLAN。如果VLAN多,这个命令比一条条vlan 10回车再vlan 20高效得多。interface GigabitEthernet0/0/1:进入端口视图。port link-type access:把端口模式设置为Access。port default vlan 10:把该Access端口划到VLAN 10。
SW3的配置类似,只需要把PC3和PC4对应的端口分别划到VLAN 10和VLAN 20即可,命令不再重复。
配置完后,可以用display port vlan查看端口与VLAN的对应关系。如果显示Port对应的VLAN ID正确,说明Access部分配置成功。此时在同一台交换机上,PC1和PC3虽然都接在SW2上,但由于一个在VLAN 10、一个在VLAN 20,二层是隔离的,互Ping肯定不通,这是正常的,不要当成故障。
3. Trunk端口、PVID与跨交换机VLAN透传
3.1 Trunk端口的作用和PVID理解
接入层配置完成后,SW2下面只有它自己管辖的几个端口属于VLAN 10和VLAN 20,但如果PC1(接SW2)想访问PC3(接SW3)同属VLAN 10的资源,SW2和SW3之间的链路就必须允许VLAN 10的流量通过。这时候就要用到Trunk端口。
Trunk端口被称为“干道端口”或“中继端口”,它的核心能力是允许多个VLAN的流量通过同一条物理链路。大家可以把它想象成一条城市主干道,路上不只有一辆车,而是各种“VLAN车牌”的车都能跑,只要在路口设置了对应放行规则,车就能通过。
但Trunk端口有一个容易踩坑的点:PVID(Port VLAN ID,端口默认VLAN ID)。Trunk口上有一个native VLAN的概念,默认情况下native VLAN是VLAN 1,这个VLAN的帧通过Trunk口时,不打标签直接透传。如果PC或交换机之间有特殊需求,比如语音流量和业务流量共用一个端口,native VLAN设置不当就会引发“明明配置了allow-pass vlan,但还是不通”的问题。
实际操作中需要记住一个原则:Trunk口发送帧时,只有与PVID相同且属于native VLAN的那个VLAN的帧不打标签,其他VLAN的帧都要打上对应的VLAN Tag再转发。所以在配置Trunk口时,除了要指定允许哪些VLAN通过,一般还要关注PVID是否与当前业务规划一致。
3.2 多交换机Trunk配置与抓包验证
现在配置SW2连接SW1的上行口,以及SW3连接SW1的上行口。以SW2到SW1的链路为例,假设用两端都是G0/0/24口:
[SW2] interface GigabitEthernet0/0/24 [SW2-GigabitEthernet0/0/24] port link-type trunk [SW2-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 20 [SW2-GigabitEthernet0/0/24] quitSW3的G0/0/24口做相同配置。SW1的G0/0/23和G0/0/24口也做相同配置。注意:Trunk口要成对配置,且允许的VLAN列表要一致。如果只配了SW2没配SW1,或者两边允许的VLAN不一致,数据帧在链路上被丢弃或无法转发,故障现象就是跨交换机的同VLAN主机Ping不通。
到这里,同VLAN跨交换机的二层通信链路就打通了。此时PC1(VLAN 10,接SW2)和PC3(VLAN 10,接SW3)之间应该能Ping通。如果Ping不通,优先排查Trunk口是否放行了VLAN 10,以及两端PVID是否一致。
关于验证,这里可以引入一个常用工具:Wireshark。用eNSP自带的抓包功能或者把交换机端口镜像到抓包口,抓Trunk链路上的数据帧,能清楚看到带有802.1Q头的帧,里面包含VLAN ID。实际工作中排查VLAN透传问题时,抓包是最有说服力的手段,比翻配置核对效率高得多。我曾经遇到一个案例,A、B两台交换机之间配了Trunk,也放了VLAN 100,但业务就是不通。最后抓包发现,交换机A发出的帧带着VLAN 100标签,而交换机B收到后却按VLAN 1来处理,原因是B侧端口的PVID被改成了1而放行列表里又默认允许了VLAN 1,帧被错误剥离了标签。这种问题只看配置很难一眼看穿,抓包一抓就现形。
4. VLAN间通信与三层配置进阶
4.1 为什么二层VLAN隔离后依然需要网关
配置完VLAN和Trunk后,整个二层网络里,不同VLAN的主机是不能直接通信的,这是VLAN隔离的初衷。但现实网络中,不同部门、不同业务的终端往往需要互相访问,比如办公网的PC要访问监控网里的录像服务器。怎么办?这时就需要三层路由。
VLAN间通信的几种常见方案:
- 单臂路由:在路由器上创建子接口,分别封装VLAN Tag,每条VLAN一个网关地址。
- 三层交换机VLANIF接口:在三层交换机上创建VLANIF接口,配置IP地址作为网关,由交换机内部路由模块转发。
- 传统路由器加物理接口:一个VLAN一个物理接口,路由器上配置独立网关,这种方式扩展性差,现实中很少用。
在eNSP实验环境中,最推荐也最常用的是三层交换机VLANIF方式。因为真实企业网络大量采用这种方式,配置简单、转发性能也好。如果只是学习原理,单臂路由也可以做,但三条VLAN就要三个子接口,配置相对繁琐。
有人会问:既然VLAN隔离了,我为什么还要让它们通信?这不是自相矛盾吗?其实不矛盾。VLAN隔离的是二层广播域和不受控的直接访问,而三层路由是由网络管理员掌控的“闸门”。你可以决定哪些VLAN之间能通、哪些不能通,还可以在防火墙上做更细的访问控制。隔离是手段,可控的互通才是目标。
4.2 三层交换机VLANIF配置实操
在三层交换机SW1上配置VLANIF接口,让VLAN 10和VLAN 20可以互相通信:
[SW1] vlan batch 10 20 [SW1] interface Vlanif 10 [SW1-Vlanif10] ip address 192.168.10.1 24 [SW1-Vlanif10] quit [SW1] interface Vlanif 20 [SW1-Vlanif20] ip address 192.168.20.1 24 [SW1-Vlanif20] quit此时把PC1的网关设置为192.168.10.1,PC2的网关设置为192.168.20.1,PC1去Ping PC2(跨网段)时,数据会先发到网关,由SW1内部的三层转发模块完成路由,再通过Trunk口转发到目标VLAN。这就是VLAN间通信的完整过程。
配置完VLANIF后,要注意一个容易忽略的点:PC的默认网关必须和VLANIF地址在同一网段,否则数据帧根本不会发到交换机。很多新手在eNSP里配完路由,发现还是Ping不通,检查半天,最后发现PC的IP配置里网关填错了或没填。
另外,如果用的是普通路由器而不是三层交换机,需要采用单臂路由方式。子接口配置示例:
[R1] interface GigabitEthernet0/0/0.10 [R1-GigabitEthernet0/0/0.10] dot1q termination vid 10 [R1-GigabitEthernet0/0/0.10] ip address 192.168.10.1 24 [R1-GigabitEthernet0/0/0.10] arp broadcast enable [R1-GigabitEthernet0/0/0.10] quit注意这里的arp broadcast enable,如果不敲,子接口收不到ARP广播,可能导致终端无法解析网关MAC地址,连通性异常。这个坑我在刚开始学的时候踩过,现在每次配子接口都会习惯性加一句。
5. 常见问题与故障排查实录
5.1 eNSP设备启动失败与AR1报错40
很多人在做实验时遇到的第一道坎,不是配置命令,而是eNSP的设备启动不起来,尤其是AR路由器启动失败,报错代码40。
“AR1启动失败40”这个问题,网上问的人很多,原因是多方面的。最常见的是eNSP依赖的VirtualBox版本不匹配,或者虚拟化服务没有正常启动。我的处理顺序是:
- 先确认设备列表中AR设备的CPU和内存占用是否被其他程序抢占,关掉杀毒软件或安全卫士再试。
- 检查VirtualBox的版本,eNSP和VirtualBox版本有兼容匹配表,不是越新越好。
- 如果AR启动失败报40,优先重置一下eNSP的设备,关掉eNSP和VirtualBox,在任务管理器里把VBoxSVC进程结束掉再重新打开。
- 实在不行,卸载重装,但卸载时要把注册表残留也清理干净。
至于交换机设备,有时也会出现启动慢或一直在“启动中”的状态。这通常不是配置问题,而是设备模拟进程初始化较慢。可以在启动后稍等一会儿,或者先关闭其他不必要的设备再重新启动。如果还不行,检查一下电脑的硬件虚拟化是否开启,BIOS里的VT-x/AMD-V选项必须处于开启状态。
5.2 VLAN配置常见错误与排查命令速查
VLAN配置和通信实验做到后面,出问题最多的场景无非就那几类。我自己整理了一个排查清单,每次遇到“Ping不通”的问题,就按顺序过一遍:
| 故障现象 | 排查思路 | 常用命令 |
|---|---|---|
| 同交换机同VLAN主机Ping不通 | 检查PC的IP是否同一网段,检查端口所属VLAN是否正确 | display port vlan |
| 同交换机不同VLAN主机Ping不通 | 这是正常现象,若需要通信需配置三层网关 | display vlan |
| 跨交换机同VLAN主机Ping不通 | 检查两台交换机Trunk口是否放行对应VLAN,PVID是否一致 | display port vlan / display interface trunk |
| 跨交换机不同VLAN主机Ping不通 | 检查三层交换机VLANIF是否配置正确,PC网关是否设置 | display ip interface brief |
| 配置了Trunk后PC不能上网 | 检查接入端口是否误设为Trunk或Hybrid,Trunk口是否放行所有必要VLAN | display interface GigabitEthernet0/0/x |
| 交换机上配置不生效 | 检查是否有忘记quit退出到正确视图,或命令拼写错误 | display current-configuration |
再分享一个我在排障时觉得最有效的小技巧:display current-configuration和display vlan配合使用。前者看全局配置,后者看VLAN下的端口成员关系,一眼就能看出哪些端口被划到了哪些VLAN里。如果发现某个端口本来想放VLAN 10,结果被上一次实验遗留配置放到了VLAN 20,直接在端口视图下重新执行port default vlan 10即可。
还有一个细节很多人忽略:在华为交换机上,把端口从Access切换到Trunk后,之前配置的port default vlan会被清除,必须重新用port trunk allow-pass vlan指定放行列表。如果只改了link-type没重新放行VLAN,端口看起来是Trunk了,实际上一个业务VLAN都没放过去。
6. 实操总结与个人心得
如果非要用一句话总结这次eNSP交换机VLAN配置的核心经验,我会说:VLAN的难点不在命令,而在于理解数据帧在交换网络里怎么打标签、怎么转发。命令背下来三天就忘了,但只要把Access、Trunk、PVID、VLANIF这几个概念真正理解透,无论换到锐捷、思科还是其他厂商的设备,配置思路都是相通的,只差命令关键字不同罢了。
最后再分享两个小建议。
第一个建议是,做实验时一定要养成随时保存配置和截图的好习惯。eNSP里的设备是会话级的,关掉工程再打开,配置可能就丢了。我在做综合实验时习惯每完成一个阶段就用save命令保存配置,以防某个设备崩溃后整个拓扑从头再来。
第二个建议是,不要只盯着Ping通就收工。一个合格的网络工程师,应该用display命令多看几层:看看MAC地址表、看看ARP表、抓个包看看Tag对不对。这些额外动作虽然不起眼,但养成了习惯,对你今后排真实网络故障的帮助是巨大的。
你完全可以在这个实验基础上继续加内容,比如把三台交换机拓扑里的SW1换成路由器做单臂路由,或者给交换网络加上STP、链路聚合,再或者引入Wireshark做更细致的抓包分析。eNSP这个平台的价值就在于你可以随意折腾,出错成本为零,学到的东西却都是可以带到真实网络环境里用的。