如果你正在做计算机网络课程里的三层交换机VLAN配置实验,多半会有这样熟悉的一幕:前面几个实验把VLAN划分、Access接口、Trunk链路玩得很溜了,到了实验八,发现命令行确实还是那些命令行,可实验性质完全变了——不再只是拆广播域,而是要让不同VLAN之间真正通起来。这篇文章不打算把实验指导书复读一遍,而是把实验八里的每一步掰开揉碎,讲讲三层交换机在这个实验里到底承担什么角色、配置命令背后的逻辑是什么,以及那些在验收时最容易翻车的细节。
1. 为什么实验八要用三层交换机:VLAN划分之后留下的通信问题
1.1 二层交换机的局限:广播隔离的代价
先回到实验七的场景。你用一台二层交换机把办公室里的电脑分成了VLAN 10和VLAN 20,测试的时候很爽——同一个VLAN内的PC能互相ping通,不同VLAN之间的PC怎么都ping不通。这个结果不是你配置错了,而是VLAN的定义本身就是这样:VLAN是一个二层广播域,它的作用就是隔离。
二层交换机在转发数据帧时,只看MAC地址表,而MAC地址表的每个表项都绑定了VLAN信息。PC1发一个广播帧出去,交换机只会在PC1所属的VLAN端口集合里复制转发,VLAN 20的端口根本收不到这个帧。这就是广播隔离。
但问题随之而来。实际网络里,不同部门之间总得通信吧?财务的电脑要访问服务器的数据,办公区的终端要上互联网,这些流量往往要跨越至少两个VLAN,靠二层交换机本身是做不到的。二层交换机的转发决策里没有IP地址的位置,它压根不解析网络层,自然也不知道该把跨VLAN的包往哪里扔。所以,实验八引入三层交换机,核心目的只有一个:在不破坏VLAN隔离的前提下,让不同VLAN之间能够互相通信。
1.2 三层交换机与三种VLAN间通信方案对比
让VLAN间通信不是只有三层交换机一条路,但你得知道为什么最后都会选它。
第一种方案是“单臂路由”,也就是Router on a Stick。把路由器的一个物理接口用Trunk方式和交换机相连,然后在路由器上把这个物理接口拆成若干子接口,给每个子接口封装802.1Q标签,分别配置不同VLAN的网关IP。这样VLAN 10的PC发往VLAN 20的包,会先发给路由器子接口,路由器再交给对应VLAN的子接口转发出去。这个方案能通,但瓶颈很明显:所有跨VLAN流量都挤在一根物理链路上,而且路由器转发靠CPU,性能上不去。
第二种方案是“每VLAN一根物理线”,每个VLAN接一个路由器接口。接口浪费严重,一个企业几十个VLAN就得配几十个路由器接口,现实里几乎没有这么干的。
第三种方案就是三层交换机加SVI。交换机内部为每个VLAN创建一个虚拟的三层接口,这个接口可以配置IP并作为该VLAN的网关。跨VLAN的数据包在交换机内部完成路由转发,由硬件ASIC处理,转发速度和二层交换基本一致。这也是校园网、企业园区网里最主流的做法。
1.3 实验拓扑与IP规划:动手前的一张表
我按实验指导书里最常见的拓扑来拆解,画成文字描述就是:一台三层交换机作为核心,下挂PC,同时通过Trunk链路连接一台二层接入交换机,接入交换机再挂PC。这样既能验证三层交换机的VLAN间路由功能,也能让Trunk链路真正派上用场。
| 设备 | 接口 | 所属VLAN | IP地址 | 网关 |
|---|---|---|---|---|
| PC1 | SW-L3 F0/1 | VLAN 10 | 192.168.10.10/24 | 192.168.10.1 |
| PC2 | SW-L3 F0/2 | VLAN 20 | 192.168.20.10/24 | 192.168.20.1 |
| PC3 | SW2 F0/1 | VLAN 10 | 192.168.10.20/24 | 192.168.10.1 |
| PC4 | SW2 F0/2 | VLAN 20 | 192.168.20.20/24 | 192.168.20.1 |
| SW-L3 G0/1 | 与SW2 G0/1相连 | Trunk,放行VLAN 10、20 | — | — |
| SW-L3 SVI VLAN 10 | — | — | 192.168.10.1/24 | — |
| SW-L3 SVI VLAN 20 | — | — | 192.168.20.1/24 | — |
设备选型上,如果你用的是Packet Tracer模拟器,三层交换机一定要选3560或更高级的型号,不要拿2950/2960硬扛。如果实验室里是真实设备,思科3560、华为S5700、锐捷S5750这类三层交换机都是可以的。关键判断标准就一条:设备是否支持全局命令ip routing,支持的就是三层交换机,不支持的就是二层交换机。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 动手前必须吃透的三个机制:Access/Trunk、SVI、路由表
2.1 Access口、Trunk口与VLAN标签的工作流程
很多同学配置VLAN时能敲对命令,但如果被问到“Access口和Trunk口发出的帧到底有什么区别”,往往会卡壳。这个必须搞清楚,因为实验八比实验七多的就是跨设备、跨VLAN转发,标签问题一错,整条链路的包都跟着乱。
Access口是接入口,只属于一个VLAN,发出的数据帧不带VLAN标签。PC这种终端设备根本不认识802.1Q标签,你要是给PC发一个带标签的帧,PC网卡大概率直接丢弃。所以PC接交换机的口,必须配成Access口,并指定属于哪个VLAN。
Trunk口是中继口,允许一个或多个VLAN的帧通过。交换机与交换机之间的链路要承载多个VLAN的流量,就必须用Trunk口,并在数据帧里插入VLAN标签,告诉对端这个帧属于哪个VLAN。打个比方,Access口像小区里的门牌号,每个房间只有一个地址;Trunk口像高速收费站,每个车道对应一个VLAN,车辆过站时自动识别归属,防止走错道。
2.2 SVI为什么能当网关用
SVI的全称是Switch Virtual Interface,交换虚拟接口。它是交换机内部的一个虚拟三层接口,和某个具体的VLAN绑定。创建SVI并配置IP地址后,它就像交换机里接了一条虚拟网线,另一头连着对应VLAN的网络。
当PC1要访问PC2时,PC1检查目标IP是192.168.20.10,和自己不在同一网段,于是把数据包交给默认网关192.168.10.1。这个网关地址就是SVI VLAN 10的IP,PC1通过ARP查询得到的是SVI接口的MAC地址,数据包到达三层交换机后,交换机通过SVI VLAN 10接收、查路由表、再通过SVI VLAN 20转发出去。整个过程对PC来说是透明的,它只是把包交给了网关,网关也就是SVI接口在负责路由。
理解这一点对排错至关重要。如果SVI没有配置IP,或者SVI处于shutdown状态,PC的网关就是不通的,所有跨VLAN通信都无从谈起。
2.3 三层交换机路由表怎么来的:直连路由与ip routing的关系
三层交换机的路由表和路由器类似,路由表中要有目标网络的路由项,才能正确转发跨网段的包。创建SVI并配置IP地址之后,交换机会自动在路由表中生成对应的直连路由,比如192.168.10.0/24直连、192.168.20.0/24直连。
但这里有一个非常隐蔽的坑:思科的Catalyst交换机,默认情况下IPv4单播路由功能是关闭的。你就算配好了所有SVI的IP,路由表里也可能只有C标识的直连路由,却不会真正执行路由转发。必须进入全局配置模式,敲下ip routing这个命令,才能开启三层交换机的路由功能。
华为设备没有这个全局开关,VLANIF接口配置完IP后默认就能路由,区别就在这一行命令上。我在下一章配置时会特意把这条命令单拎出来讲,因为这个东西一旦漏了,实验八基本就卡死在跨VLAN这一步。
3. 配置逐条走一遍:从清空交换机到跨VLAN全通
3.1 初始化与基础配置:谁都不想继承上一组的配置
实验室的真机往往带着上一组同学留下的配置,不做清理直接开配,很容易出现VLAN冲突、接口模式不对、IP地址重复一堆状况。真机上如果不需要保留配置,建议先清除并重载设备:
bash复制enable
erase startup-config
delete flash:vlan.dat
reload
vlan.dat是VLAN信息库文件,delete是同样需要执行的。模拟器里新建设备默认是干净状态,但如果你复用了之前的实验文件,也建议重置设备再开始。
清理完成后,先给设备改名,配置SSH或console登录密码,这些基础工作虽然不入实验报告,但能避免后面多台交换机同时在console口时搞混。我习惯先从三层交换机开始配,因为它承载了本次实验最核心的功能。
3.2 三层交换机核心配置:VLAN、SVI、ip routing
我以思科IOS命令行示例,这些都是实验中最常用的配置。先创建VLAN:
bash复制enable
configure terminal
hostname SW-L3
vlan 10
name VLAN10_Finance
exit
vlan 20
name VLAN20_Engineering
exit
把下挂PC的接口划入对应VLAN:
bash复制interface f0/1
switchport mode access
switchport access vlan 10
exit
interface f0/2
switchport mode access
switchport access vlan 20
exit
和接入交换机相连的接口,配置为Trunk并放行VLAN 10、20:
bash复制interface g0/1
switchport mode trunk
switchport trunk allowed vlan 10,20
exit
然后进入全局配置模式,敲最关键的命令:
bash复制ip routing
创建两个SVI并配置网关IP:
bash复制interface vlan 10
ip address 192.168.10.1 255.255.255.0
no shutdown
exit
interface vlan 20
ip address 192.168.20.1 255.255.255.0
no shutdown
exit
最后保存配置:
bash复制end
write memory
注意几个细节。第一,ip routing必须在全局配置模式下,如果在接口模式下敲会报错。第二,SVI接口默认可能是shutdown状态,必须no shutdown,否则这个VLAN的网关在路由表里不会生效。第三,switchport trunk allowed vlan可以用10,20的形式,也可以加add关键字增量添加,新手最容易犯的错是把allowed列表写成all,虽然也能通,但实验报告里追问起来你会解释不清为什么要放行所有VLAN。
3.3 接入交换机配置:Access划分与Trunk上联
接入交换机承担的角色比较简单,把下联PC划分到对应VLAN,把上联接口配置为Trunk。仍然以思科命令为例:
bash复制enable
configure terminal
hostname SW2
vlan 10
name VLAN10_Finance
exit
vlan 20
name VLAN20_Engineering
exit
interface g0/1
switchport mode trunk
switchport trunk allowed vlan 10,20
exit
interface f0/1
switchport mode access
switchport access vlan 10
exit
interface f0/2
switchport mode access
switchport access vlan 20
exit
end
write memory
二层交换机不需要配置ip routing,也不需要创建SVI接口地址,它的任务就是按VLAN划分并转发二层帧。这个实验里二层交换机更像一个扩展接入端口的“配线架”,真正要出彩的是三层交换机的路由转发能力。
3.4 华为/锐捷设备的等价命令速查
很多学校实验室用的是华为或锐捷设备,命令行和思科不完全一样。我把核心等价命令整理成一张表,方便你对照抄作业。
| 操作 | 思科IOS | 华为VRP | 锐捷RGOS |
|---|---|---|---|
| 批量创建VLAN | vlan 10 后逐条,或 vlan 10,20 | vlan batch 10 20 | vlan range 10-20 或逐条 |
| 接口划入VLAN | switchport mode access + switchport access vlan 10 | port link-type access + port default vlan 10 | switchport access vlan 10 |
| Trunk放行VLAN | switchport mode trunk + switchport trunk allowed vlan 10,20 | port link-type trunk + port trunk allow-pass vlan 10 20 | switchport mode trunk + switchport trunk allowed vlan add 10,20 |
| 配置VLAN网关IP | interface vlan 10 + ip address 192.168.10.1 255.255.255.0 | interface vlanif 10 + ip address 192.168.10.1 24 | interface vlan 10 + ip address 192.168.10.1 255.255.255.0 |
| 启用IP路由 | ip routing | 默认开启 | 默认开启 |
| 保存配置 | write memory / copy running-config startup-config | save | write |
华为设备的VLANIF接口和思科SVI是一个概念,叫法不同而已。锐捷的风格更接近思科,很多命令可以直接套用。我见过不少同学在家里用模拟器练的是思科,到实验室面对华为设备就发怵,其实原理通了,命令只是换了个包装。
4. 验证不只看ping:show命令组合拳定位一切问题
4.1 从物理层到三层的验证路径
配置完成后,第一件事不是急着拿PC去ping,而是先在交换机上用show命令确认各级状态。我建议按从低到高的顺序来:
第一步,看VLAN是否存在:
bash复制show vlan brief
这个命令会显示所有VLAN及端口所属关系。如果VLAN 10和VLAN 20看不到,或者接口没有正确划分,二层的根基就不对。
第二步,看Trunk是否正常协商:
bash复制show interfaces trunk
重点看两行:Port一列是哪个接口,以及Allowed VLAN列表里是否包含10和20。如果Trunk对端不匹配,这里会显示Trunk接口状态为down或者desirable不匹配。
第三步,看SVI接口up/up:
bash复制show ip interface brief
正常输出里,Vlan10和Vlan20应该显示up/up。如果你看到Vlan10是up/down,通常是SVI没有执行no shutdown;如果显示down/down,可能是这个VLAN里没有任何物理接口处于up状态。
第四步,看路由表:
bash复制show ip route
这是我每次实验都要求组员必须截图的核心输出。正常情况能看见两条直连路由:
bash复制C 192.168.10.0/24 is directly connected, Vlan10
C 192.168.20.0/24 is directly connected, Vlan20
如果只有接口up但没有路由项,立刻检查全局配置里有没有ip routing。
4.2 ping通和ping不通分别说明什么
网络层验证最简单的方法是PC互ping,但你要会解读结果:
- PC1 ping PC3通:说明SW-L3与SW2之间的Trunk链路正常,VLAN 10在跨设备下是通的,二层链路没问题。
- PC1 ping PC2通:说明三层交换机的VLAN间路由生效了,SVI网关可到达。
- PC1 ping PC4通:说明跨VLAN的流量能穿过Trunk链路再到三层交换机转发,完整路径没有问题。
反过来,如果PC1 ping PC2返回Destination host unreachable,通常是PC1发现网关192.168.10.1不可达,重点查SVI状态;如果返回Request timed out,说明数据包发出去了但没收到回应,问题可能出在PC2的网关配置或SVI VLAN 20的配置上。
还需要提醒一点,PC侧的ARP缓存可能导致换IP或改网关后ping不通,出现诡异现象时先清理ARP缓存。Windows下命令是:
bash复制arp -d
ipconfig /renew
4.3 截图留痕与验证数据记录技巧
实验报告往往需要提供验证截图,我不是让你只截一个ping通的画面就收工。更专业的做法是建立“验证矩阵”,把每一步验证命令和结果整理在一起:
| 验证对象 | 命令/操作 | 期望结果 | 实际结果 |
|---|---|---|---|
| VLAN划分 | show vlan brief | VLAN 10、20存在且端口正确 | 正常/异常 |
| Trunk协商 | show interfaces trunk | G0/1为trunk,allowed vlans 10,20 | 正常/异常 |
| SVI状态 | show ip interface brief | Vlan10、Vlan20均为up/up | 正常/异常 |
| 路由表 | show ip route | 存在两类C直连路由 | 正常/异常 |
| 同VLAN跨设备 | PC1 ping PC3 | 通 | 正常/异常 |
| 跨VLAN访问 | PC1 ping PC2 | 通 | 正常/异常 |
| 跨VLAN全链路 | PC1 ping PC4 | 通 | 正常/异常 |
这个矩阵放进实验报告,老师一眼就能看出你不仅把实验跑通了,还懂怎么系统地验证。我会在第六章再展开实验报告的写法。
5. 实验八翻车高发区:五个典型故障与完整排查链路
5.1 故障一:同VLAN通、跨VLAN不通——十有八九是ip routing忘了敲
这是我见过重复率最高的翻车点。现象非常典型:PC1能ping通PC3,说明Trunk链路和VLAN划分都没问题;但是PC1 ping PC2就是不通。很多同学开始在PC端反复设置IP,在交换机上删了配、配了删,浪费半小时之后才想起来——三层交换机压根没开启路由功能。
排查链路是这样走的:
- 在SW-L3上执行
show ip route,如果发现路由表里空荡荡,连直连路由都没有,说明SVI状态可能有问题,先看show ip interface brief。 - 如果SVI都是up/up,但路由表中只有接口状态,没有路由条目,基本可以判定
ip routing没有执行。 - 进入全局配置模式,敲
ip routing,再回到特权模式看show ip route,此时应该能看到C标识的直连路由。
真机上如果全局模式下ip routing命令不识别,说明这台设备根本是二层交换机,这就是另一个话题了,见5.4。
5.2 故障二:Trunk接口问题:PVID与Allowed VLAN不匹配
现象是PC1和PC3明明都属于VLAN 10,一个接在三层交换机上,一个接在接入交换机上,却ping不通。Trunk链路出问题时,同VLAN跨设备就通不了,这是排查的突破口。
先看两边的Trunk状态:
bash复制show interfaces trunk
大多数问题出在几个地方:一是两端的Trunk协商不一致,一边是trunk,另一边是dynamic auto,协商结果可能不会是trunk。解决方案是两端都明确配置switchport mode trunk,不要依赖DTP自动协商。二是switchport trunk allowed vlan列表漏了VLAN 10或20,只放行了all之外的自定义列表。三是两端Trunk的native VLAN不同,如果改了native vlan,两端必须保持一致,否则VLAN 1的流量会错乱。
排查时不要只看一台交换机,要两台同时执行show命令对比,逐项核对Trunk的状态、放行VLAN列表、native VLAN。
5.3 故障三:PC端网关/掩码错误:最容易被忽略的三分钟
别笑,这个问题在实验课上的出现率极高。PC1的IP写成了192.168.10.10/16,或者网关写成了192.168.20.1,这类低级错误会让前三十分钟的配置全部白费。
排查链路很简单,在PC上用ipconfig(Windows)或ifconfig a(Linux)查看IP配置,对照实验规划表逐项检查:
- IP地址是否属于该VLAN的网段
- 子网掩码是否为255.255.255.0
- 默认网关是否等于对应SVI的IP
如果PC网关配的是平时常用的IP而恰好实验里给的是另一段,也会出现“奇怪的”不同VLAN间时而通时而不通的现象,这多半是ARP表缓存了旧网关。先清ARP,再重新ping,确保是干净环境。
5.4 故障四:二层设备伪装三层:2960上配SVI的血泪教训
有些同学在Packet Tracer里随手选了一台2950-24,然后发现可以创建interface vlan 10,能配IP,但配置完后PC1 ping PC2始终不通,show ip route也没有任何路由条目。原因很简单:二层交换机的SVI只用于远程管理,没有硬件路由转发的功能,它不会为SVI生成参与路由转发的直连路由表项。
如果你用的是真实的三层交换机,情况会好很多,命令提示符下会区分是否支持ip routing。所以做实验前先确认设备选型,模拟器里就用3560、3750,别在设备型号上给自己挖坑。
另外还要提醒一个进阶问题:即使是三层交换机,如果接口被配置成了三层路由口(即no switchport后再配IP),这个接口就不属于任何VLAN了,SVI也不会在这个接口上生效。实验里我们通常把接口保持为二层交换口,再利用SVI做跨VLAN路由,不要搞混。
5.5 排查问题的标准顺序:不靠猜,靠命令
整个实验八的排错,我总结出一个顺序,你按这个来基本不会毫无头绪:
| 顺序 | 排查对象 | 使用命令 | 常见修复 |
|---|---|---|---|
| 1 | PC IP/掩码/网关 | ipconfig / ifconfig | 改PC配置 |
| 2 | 物理链路状态 | show interfaces status | 接线错误、接口shutdown |
| 3 | VLAN划分 | show vlan brief | 修正Access口所属VLAN |
| 4 | Trunk协商 | show interfaces trunk | 两端mode trunk、allowed vlan正确 |
| 5 | SVI状态 | show ip interface brief | no shutdown SVI |
| 6 | 路由功能 | show ip route | 确认有ip routing,确认直连路由存在 |
| 7 | ARP转发 | show arp | 确认能学到PC的MAC |
这个顺序非常实用。先把最低层级的检查完,再进入下一层,避免在高层问题里盲目试错。真正的网络工程师排错也是这样一层层往下剥的。
6. 实验报告别只会贴截图:加分项与后续进阶方向
6.1 实验报告的核心内容安排
实验报告如果只是把命令和ping通的截图贴上去,那最多算验证记录,不算理解。我建议在报告里补两个东西,会让整个报告立刻有层次。
一是画出数据包的完整转发路径。例如PC1访问PC4,数据包从PC1发到SW-L3的F0/1,进入VLAN 10,通过SVI VLAN 10交给交换机的路由引擎,查询路由表发现有192.168.20.0/24的直连路由,于是通过交换矩阵送到SVI VLAN 20,再从G0/1口以Trunk方式携带VLAN 20标签转发给SW2,SW2去掉标签后从F0/2交给PC4。这段描述写成文字,远比“ping通”更有说服力。
二是把配置命令逐条注释。不要简单复制配置粘贴,而是用表格列出每条命令的作用和实验中的实际效果,例如:
| 配置命令 | 作用 | 在实验中的效果 |
|---|---|---|
| vlan 10 / name VLAN10_Finance | 创建业务VLAN并命名 | 形成独立广播域 |
| switchport access vlan 10 | 将接口划入VLAN 10 | PC1加入VLAN 10 |
| switchport mode trunk | 设置中继链路 | 实现跨交换机同VLAN互通 |
| ip routing | 开启三层路由 | 使SVI执行跨VLAN转发 |
| interface vlan 10 / ip address ... | 创建SVI并配置网关 | 作为VLAN 10的默认网关 |
6.2 进阶实验:DHCP中继、ACL、VRRP与三层链路聚合
实验八跑通只是三层交换机的开胃菜,真正在网络里发挥作用的是这几个进阶组合。
第一个是DHCP中继。网段被VLAN隔离后,每个VLAN不可能都放一台DHCP服务器,三层交换机可以把某个VLAN收到的DHCP广播请求,通过IP单播中继到远程DHCP服务器。在思科SVI下配置ip helper-address即可完成。这个实验能让你重新理解广播域隔离对应用层协议的影响。
第二个是VLAN间的ACL。三层交换机可以基于IP在三层接口上用ACL限制流量,比如财务VLAN只有白天可以访问服务器,其他VLAN禁止访问财务段。这个实现起来不复杂,但能让你把安全策略和VLAN隔离结合起来。
第三个是网关冗余协议,如VRRP或HSRP。生产网络里,一台三层交换机当网关,单点故障会毁掉整个网络,所以配两台三层交换机,用虚拟IP做网关冗余。这个实验会让你看到实际网络中对可靠性是怎么考量的。
第四个是三层链路聚合。把多条物理链路绑成一个Eth-Trunk,既增加带宽又提高可靠性,跨VLAN路由也走聚合链路,比单条Trunk更有真实感。
6.3 从实验到真实组网:三层交换机在校园网里的位置
实验指导书里的一个小拓扑,其实是真实园区网的缩影。校园网的典型结构是“核心层-汇聚层-接入层”三层架构:接入层交换机负责把终端划分进VLAN,汇聚层交换机负责汇聚多条接入链路并处理VLAN间路由,核心层交换机负责高速转发和出口路由。
你在实验八里扮演的角色,站在了真实网络中“汇聚层/核心层”的位置。为什么要用三层交换机而不是路由器去连接每个VLAN,也是生产环境逼出来的选择——VLAN数量多、跨VLAN流量大,需要的就是硬件转发的三层交换机。
做完这个实验之后,我建议你再用GNS3或EVE-NG搭一个更完整的拓扑,把DHCP服务器、DNS服务器、外网边界路由器都加进来,体验从普通PC到服务器的真实跨VLAN访问流程。Packet Tracer赢在简单,但GNS3对三层交换机的支持更接近真机。
我在带实验的时候经常对同学说,三层交换机的配置命令真的不难,难的在于你心里要有整条数据路径。只要你在配置之前能把一个数据包从PC1到PC4的完整转发流程写出来,实验八基本不会翻车。反过来说,如果你只背命令不看路径,就算这次实验过了,到综合实验或者面试动手题时,迟早会在这上面栽跟头。
