做实验八那天,我们实验室三台二层交换机和一台路由器放在桌上,同组的人还在按前几次实验的路子配单臂路由,我直接把三层交换机抬上来了。实验指导书上写的是“三层交换机的VLAN配置”,很多人误以为就是把VLAN建好、端口分好就行,实际上这个实验真正要解决的,是VLAN间通信怎么在三层交换机内部完成转发。这个点搞透了,后面学路由、ACL、组播都会顺畅很多。
这个实验适合计算机网络课程学到交换机章节的同学,尤其是刚接触华为或思科设备、对VLAN概念一知半解、还没搞清楚二层交换和三层路由怎么结合的人。如果你已经会配二层VLAN,但一遇到“跨VLAN访问”就不知道怎么下手,这篇文章就是给你写的。
1. 实验思路与核心原理拆解
1.1 为什么叫“三层交换机”?它解决的是什么问题
先说一个我在实验课上反复强调的点:二层交换机只能处理数据帧的MAC地址,它不关心IP。两台电脑接在同一台二层交换机上,只要配置了同网段的IP,彼此就能通,但如果划分成了两个VLAN,二层交换机默认不会把数据从一个VLAN转发到另一个VLAN。原因很简单,VLAN就是广播域隔离,交换机在二层层面把帧挡在VLAN边界。
那VLAN间要通信怎么办?最简单的是外接一台路由器,每个VLAN出一个物理接口接到路由器上,这就是“多臂路由”,缺点是接口浪费太多,VLAN一多根本接不过来。后来流行“单臂路由”,路由器只用一个物理口,在接口下划分子接口并封装802.1Q标签,VLAN 10的报文带10的标签、VLAN 20的带20的标签,路由器看到标签就知道是哪个VLAN的数据,再根据路由表转发。
三层交换机的思路完全不同。它把路由器的转发引擎和交换机的线速转发结合到一起,在硬件里同时维护MAC地址表和路由表。收到跨VLAN的报文后,它会查路由表决定出接口,再在出接口对应的VLAN里查ARP、做二层封装,整个过程不用把报文送出去给外部路由器处理。
实验指导书里这个实验的精髓就在这里——不是“配VLAN”,而是“配VLAN并让VLAN间通信”。用三层交换机做这件事,好处是转发快、配置简单、拓扑干净,实际园区网里基本都是这个做法。
1.2 三层交换机的两种工作模式:路由口与SVI
三层交换机提供两种三层接口:一种是把物理口直接配成三层口(undo portswitch),相当于路由器的物理口,配个IP就能用;另一种是创建VLANIF逻辑接口,也就是常说的SVI(Switch Virtual Interface)。
实验里用的基本都是SVI。VLANIF接口并不是真实存在的物理口,它只是“这个VLAN对应的三层网关接口”。比如VLAN 10里有PC-1、PC-2,它们的网关都指向VLANIF 10的IP,交换机就能在VLANIF 10上响应ARP请求、做IP转发。这个过程很关键:配置VLANIF接口时,IP地址、子网掩码定了,但VLAN必须在全局存在,并且至少有一个access口加入VLAN或者有trunk放行,这个VLANIF才会真正生效。
我遇到过不少人配完VLANIF后发现接口状态是down,查了半天,最后发现VLAN 30下根本没有物理端口,VLANIF 30起不来。三层交换机不比路由器,路由器的物理口是独立存在的,而SVI必须“附着”在一个有端口的VLAN上。这个坑在实验指导书里不会写,但真机上一定会遇到。
1.3 方案选型:为什么不用路由器代替三层交换机
有人会问,实验目标既然是VLAN间通信,直接用路由器加单臂路由不行吗?行,但实验指导书特意安排这个实验,是在告诉你生产环境的做法。以我们学校实验资源来说,用的华为eNSP模拟器,里面有AR系列路由器和S5700系列交换机,两种都能跑通跨VLAN通信,但后者更贴近园区网实际。
我建议你在这个实验里还是老老实实按三层交换机的思路做。理由有三:第一,你以后去企业面试,网络岗问“VLAN间通信有哪几种方式”,三层交换机SVI是最高频答案;第二,单臂路由依赖路由器CPU转发,性能瓶颈明显,而三层交换机走硬件转发,学这个更符合实际;第三,配置命令的落点完全不同,单臂路由要在物理口的子接口上封装dot1q,而三层交换机只需要在VLANIF上配IP,理解这种差异本身就是收获。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 实验拓扑与VLAN规划
2.1 物理拓扑:一台三层交换机也能跑通全流程
很多同学一开始被“三层交换机的VLAN配置”这个标题吓住,以为必须弄一堆交换机。其实核心实验用一台三层交换机就够了。指导书上设计的拓扑通常是:两台PC分别接在交换机的两个不同端口上,分属VLAN 10和VLAN 20,三层交换机启用VLANIF 10和VLANIF 20,PC网关指向对应VLANIF的IP,这样两台PC就能跨VLAN通信。
我在实验课上给学生的拓扑稍微扩展了一点:三层交换机LSW1,下接两台二层交换机和两台PC。LSW1与LSW2、LSW3之间跑trunk链路,LSW2接PC-1属于VLAN 10,LSW3接PC-2属于VLAN 20,PC-3和PC-4直接接在LSW1上也分属VLAN 10、VLAN 20。这样拓扑里既能看到三层设备上的VLAN配置,也能看到二层交换机上的access、trunk配置,一次实验把两层内容全串起来。
2.2 VLAN与IP地址分配
规划表我一般让学生按下面的格式做,实验报告里也建议放这张表,评阅老师看这个就能快速判断你有没有真正做规划。
| 设备 | 接口 | VLAN | IP地址 | 网关 |
|---|---|---|---|---|
| PC-1 | 接入LSW2 | VLAN 10 | 192.168.10.10/24 | 192.168.10.254 |
| PC-2 | 接入LSW3 | VLAN 20 | 192.168.20.20/24 | 192.168.20.254 |
| PC-3 | 接入LSW1 | VLAN 10 | 192.168.10.30/24 | 192.168.10.254 |
| PC-4 | 接入LSW1 | VLAN 20 | 192.168.20.40/24 | 192.168.20.254 |
| LSW1 VLANIF 10 | 逻辑接口 | VLAN 10 | 192.168.10.254/24 | 无 |
| LSW1 VLANIF 20 | 逻辑接口 | VLAN 20 | 192.168.20.254/24 | 无 |
选IP地址时有个小讲究:网关地址用.254而不是.1。很多教材习惯用.1做网关,但实验里无所谓,真正影响的是掩码必须一致、网关必须能ping通。统一用.254有个好处——当VLAN里设备多了,PC地址从.10开始递增,不会和网关混淆,报告看起来也清爽。
2.3 端口角色规划:access口和trunk口的分工
端口角色是最容易出错的地方。规则其实很简单:连接PC、打印机、摄像头这类终端设备的端口,用access口,端口加入那个VLAN就只属于那个VLAN;交换机与交换机之间互连的端口,用trunk口,trunk口负责传输多个VLAN的数据。
理论上是这样,但真做的时候经常有人把两台交换机的互连口也配成access。比如LSW1和LSW2之间用GigabitEthernet 0/0/1相连,LSW1侧把g0/0/1配成access VLAN 10,LSW2侧也配成access VLAN 10,这样VLAN 10确实能通,但VLAN 20的数据想过就过不去了。你如果以后想在这个拓扑上再加VLAN,就得重新改二层,非常麻烦。所以交换机互连链路必须用trunk,这条经验无论实验还是实际工程都成立。
3. 配置实操:从零到全通
3.1 配置前的准备:取消设备报错与重命名
打开eNSP或者真机命令行,第一件事不是建VLAN,而是先把设备报错提示关闭。默认情况下华为设备在用户视图下敲错命令会一直往下弹提示,影响看输出。用undo terminal monitor关掉日志弹出,再用system-view进入系统视图,然后给设备起个名字,方便多台设备联调时区分。命名建议和拓扑保持一致,比如LSW1、SW-Core这种,别用默认的“Huawei”,不然抓包和查看日志时根本分不清当前在哪台设备上操作。
这里还要强调一下视图切换的逻辑。华为设备的命令行分用户视图、系统视图、接口视图、VLAN视图,配置前一定要看清当前位置。很多新手报错是因为在接口视图下敲了系统视图的命令,或者在系统视图下直接配接口参数。命令可以补全,视图必须自己盯住。
3.2 在核心交换机上创建VLAN并划分access端口
在LSW1(三层交换机)上创建VLAN 10和VLAN 20,然后将下行接PC-3、PC-4的端口划入对应VLAN。命令行如下:
bash复制system-view
sysname LSW1
undo terminal monitor
vlan batch 10 20
interface GigabitEthernet0/0/3
port link-type access
port default vlan 10
interface GigabitEthernet0/0/4
port link-type access
port default vlan 20
vlan batch可以一次建多个VLAN,比vlan 10、vlan 20一条条建省事。port link-type access是把端口设为access模式,port default vlan是把该端口的默认VLAN修改为目标VLAN。这里有一个容易忽略的知识点:access口的默认VLAN就是它所属的VLAN,数据帧从access口出去时不带802.1Q标签,因为终端设备根本不认识标签。
3.3 配置trunk链路并放行VLAN
接下来配置LSW1与LSW2、LSW3之间的trunk链路。以LSW1连接LSW2的接口GigabitEthernet0/0/1为例:
bash复制interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10 20
注意,华为交换机trunk口的默认放行列表是所有VLAN,这个容易让人踩坑。你在eNSP里新建交换机,两台直连,不配trunk、只配access,VLAN也能通,就是因为默认所有端口都放行所有VLAN。但生产环境一般会改成“只放行必要的VLAN”,也就是port trunk allow-pass vlan 10 20,这样既清晰又安全。LSW2、LSW3上同样要配置对应的trunk口,并且放行VLAN 10和20。
有人会问,那trunk口的PVID要不要改?默认PVID是VLAN 1,如果trunk链路两边交换机上存在VLAN 1的管理地址,就可能出现意外通信。实验里不需要改PVID,但如果你在真机上排查“为什么trunk口一直在收发VLAN 1的广播”,就要有这个意识。后面的常见问题里我再细说。
3.4 配置VLANIF接口实现三层网关
这是整个实验的“题眼”。在系统视图下分别创建VLANIF 10和VLANIF 20,配置IP地址作为各VLAN的网关。命令如下:
bash复制interface Vlanif10
ip address 192.168.10.254 255.255.255.0
interface Vlanif20
ip address 192.168.20.254 255.255.255.0
VLANIF接口配置完成后,交换机就拥有了这两个网段的网关地址。PC把网关指向这里,发往其他网段的数据包会先到网关,再由交换机查路由表后转发。还有一点容易漏:三层交换机上还需要检查IP路由表。这个实验只有直连网段,路由表里会自动出现192.168.10.0/24和192.168.20.0/24两条直连路由,不用手动写静态路由。如果你的实验拓扑扩展成了多台三层设备互联,那才需要配置静态路由或动态路由协议,但实验八不做这个要求。
3.5 在二层交换机上的配置
LSW2和LSW3是纯二层设备,配置相对简单。以LSW2为例:
bash复制system-view
sysname LSW2
undo terminal monitor
vlan batch 10 20
interface GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10 20
interface GigabitEthernet0/0/2
port link-type access
port default vlan 10
记住一个原则:二层交换机上不需要配IP(管理地址除外),也不需要配VLANIF。设备的眼神全部在数据平面的标签上——access口决定进入的帧打什么标签,trunk口决定携带哪些标签转发。LSW2上g0/0/2连PC-1,该端口属于VLAN 10,从PC-1进来的数据就打上VLAN 10的标签,进入交换机会被限制在VLAN 10内部处理;如果目标MAC或目标IP在VLAN 20,帧要经过trunk口送到LSW1,由LSW1的三层模块做路由和重新封装。
3.6 配置PC并做全连通性测试
PC配置相对固定:IP地址按规划表填,网关指向对应VLANIF地址。在eNSP里直接在PC上配即可,真机环境就设Windows静态IP。全部配置完成后,在PC-1上ping PC-2(192.168.20.20),能通就说明整个链路从二层接入、trunk传递、三层网关转发全部正常。
我在检查学生实验时还会加两个额外测试:第一,在PC-1上ping网关192.168.10.254,如果通,说明VLAN 10的二层链路没问题;第二,在LSW1上用display ip routing-table查看路由表,确认两条直连路由都在。分层验证的好处是能快速定位故障是出在二层还是三层,一次性ping PC-2不通时,你根本不知道是access口配错了、trunk没放行,还是VLANIF没起来。
3.7 完整配置归档
给出LSW1上经过验证的完整配置,方便你对照检查:
bash复制system-view
sysname LSW1
undo terminal monitor
vlan batch 10 20
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 GigabitEthernet0/0/1
port link-type trunk
port trunk allow-pass vlan 10 20
interface GigabitEthernet0/0/2
port link-type trunk
port trunk allow-pass vlan 10 20
interface GigabitEthernet0/0/3
port link-type access
port default vlan 10
interface GigabitEthernet0/0/4
port link-type access
port default vlan 20
return
这份配置里VLANIF的配置放在物理接口前面,实际命令行顺序无所谓,但写报告时建议按“全局VLAN → VLANIF → 物理接口 → 保存”的顺序组织,读起来逻辑更顺。最后记得在用户视图执行save,模拟器重启后配置才不丢。
4. 常见问题与排查技巧实录
4.1 VLAN间ping不通?按这个顺序排查
我见过至少二十个学生卡在“PC-1 ping不通PC-2”上,基本可以按下面顺序快速定位:
第一步,在PC上ping自己的网关。不通,说明二层链路有问题,检查本机网卡、交换机端口状态和access配置。display port vlan能看到端口当前PVID和允许通过的VLAN,非常直观。第二步,在LSW1上ping PC-1的IP。能通说明VLAN 10的二层转发和三层的ARP解析都正常。第三步,从PC-1 ping对端PC-2的IP,如果还不同,多半是trunk或对端VLAN的access配置问题。用display trunkport查看trunk放行VLAN列表,比对着拓扑一个个端口查要快得多。
这个排查顺序本质上就是把网络分成二层链路、网关、三层路由三段,逐段用ping来隔离故障。真实网络排障也是这套逻辑,养成先分层再动手的习惯,比背命令管用。
4.2 trunk放行和PVID的坑
华为设备的坑有一点特别容易踩:trunk口的默认放行VLAN是all,很多人为了“安全”精简成allow-pass vlan 10 20后,发现某些VLAN通了,某些没通。原因往往是只在一端做了精简,另一端还是默认全放行,或者两端放行列表不一致。记住一个规则:trunk链路两端的allow-pass列表必须两边都配,且保持一致。检查时分别在两端display port vlan,对比接口状态和允许的VLAN ID。
PVID是另一个容易忽视的坑。trunk口默认PVID是1,如果交换机上有VLAN 1的管理地址,两边互连口都是trunk,管理地址又同网段,就可能出现莫名其妙的拓扑发现包或ARP包。实验里不会暴露问题,但你在真机上用display logbuffer看到大量VLAN 1报文时,就要检查是不是有设备通过trunk在传递管理流量。遇到这种情况,可以按需修改PVID,但改了之后要确保802.1Q标签逻辑没乱,不建议新手乱动。
4.3 eNSP模拟器特有的“奇怪”现象
模拟器毕竟不是真机,有几个特有现象你可能会遇到。第一,LSP和ARP表项不同步。有时候配置都对了,ping第一包还是超时,第二包才通,这是因为ARP表项和MAC地址表需要时间刷新,不用慌,多ping两次。第二,PC的网关配错不报错。eNSP里PC端和交换机端如果网关地址不在同一网段,PC配置界面根本不会提示,只有ping测试才能暴露,所以配置时要反复核对地址规划表。
华为eNSP里还有一个特殊操作:模拟器里默认就存在VLAN 1,如果你在创建VLAN时不小心把VLAN 1删了,再创建回来,某些版本的模拟器会有显示异常,刷新一下或重启设备才能恢复。这些都属于模拟器环境的小毛病,不影响你理解原理,但会干扰实验心态,提前有预期就不容易被带偏。
4.4 让实验报告拿高分的验证记录习惯
这条写给需要交实验报告的同学。评阅老师不想看你贴一大段配置命令,他更想看到的是“你有验证过配置生效”。建议在报告里放三类证据:一是拓扑图和规划表,二是PC互ping成功的截图,三是display vlan、display ip routing-table、display port vlan的关键输出截取。
我一般让学生额外做一步:在PC-1上ping -c 4 192.168.20.20后,再在LSW1上用display arp | include 192.168.20.20,如果能查到对应的ARP表项,说明三层交换机已经学习到了对端PC的MAC地址,可以证明转发路径完整。这个操作在指导书里没有,但放进报告里会让实验结果更有说服力。
4.5 这个实验后续还能怎么扩展
实验八跑通之后,别急着关机。你可以用同一台三层交换机做几个小扩展练习:第一,多加一个VLAN 30,并在LSW1上继续配置VLANIF 30,验证新增VLAN不影响已有业务;第二,在LSW1上配置静态路由指向模拟的出口路由器,模拟一个跨三层设备访问的场景;第三,用display mac-address观察MAC地址表变化,对比二层转发和三层转发的差异。这些扩展不是实验要求,但能把三层交换机的行为理解得更加立体。
我自己做实验时还有个习惯,就是故意把一个trunk口的放行列表改成不包含VLAN 20,然后去抓包看ping不通时的ARP请求到底走到哪一步,返回的“Destination Host Unreachable”出现在哪个网段。这种“故障注入式”的学习方法效率极高,你亲自把网络弄坏再修好,记性远比你照着配置敲一遍深刻得多。实验平台允许的情况下,强烈建议试试。
