这本计算机网络实验报告,我拖到最后一周才开始动笔。前面几个实验都是围绕二层交换机的VLAN划分、Trunk配置,说白了就是“把网络隔开”。到了实验八,名字一出来,我就知道重点变了——三层交换机的VLAN配置,要做的是“把隔开的网络再打通”。
做完这个实验,我的感受是:VLAN的创建和端口划分都只是热身,真正卡住大多数人的,是对SVI接口和三层转发原理的理解,以及一长串看似正确却死活ping不通的排查过程。这篇博文我按实验报告的完整流程来写,目标读者是正在做校园网实验、对VLAN已经有基础但还不太理解“三层”意义的朋友。如果你用的是某高校实验室的H3C或华为模拟器,甚至真机,这套步骤基本可以直接照着做。
1. 从二层隔离到三层互通:这个实验到底在解决什么问题
1.1 实验目标速览
实验八的核心目标有三个,听起来都很短,但每个都对应一个必须掌握的技能点:
- 掌握在三层交换机上创建VLAN、将端口划分到指定VLAN的方法;
- 理解SVI(Switch Virtual Interface,交换虚拟接口)的概念,并能为VLAN配置IP地址充当网关,实现VLAN间的三层转发;
- 能通过ping命令、查看MAC地址表、IP路由表等方式,验证和解释跨VLAN通信的转发路径。
如果你到现在还没想通“为什么二层交换机划分VLAN后不能互通,而三层交换机配完IP就能互通”,这个实验做完会非常直观。它的全部价值就在于把“VLAN隔离”和“三层路由转发”这两个知识点串成一条线。
1.2 二层交换机与三层交换机的分工差异
我在做实验前一直有个模糊的印象:三层交换机是不是就是“能配IP的交换机”?这么说对也不完全对。二层交换机的核心是MAC地址表,它根据源MAC学习、根据目的MAC转发。当两个端口在不同VLAN时,二层交换机根本不会把广播帧从别的VLAN转发出去,因为每个VLAN在交换机内部就是一个独立的广播域。所以跨VLAN的帧到达交换机时,设备压根不知道要往哪儿送,通信自然就断了。
三层交换机则多了一个路由模块,它可以同时维护MAC地址表和IP路由表。接到一个跨VLAN的报文后,它会像路由器一样查IP路由表,找到目的网段的出接口,再改写MAC地址后转发出去。
用生活化的例子类比:二层交换机就像一栋楼的各层门禁,各楼层之间互不相通;三层交换机则是在每一层门口加了一个总服务台,服务台知道每个房间的位置,能把信件跨楼层送到正确的房间。SVI就是那个服务台的地址。
真正的关键点在于:三层交换机的转发通常由硬件芯片完成,不是像普通路由器那样靠CPU软件处理,所以速度远比“交换机再接一台路由器”的方案快。“一次路由,多次交换”就是这么来的。
1.3 实验环境与设备准备
这个实验在真机和模拟器上都能复现。我在学校机房里用的是H3C和华为设备混合的桌面级交换机,命令行风格基本一致;在宿舍自己练习时用的是模拟器,照样能跑通。你需要的设备资源如下:
- 三层交换机1台;
- PC(或个人电脑)3台,分别模拟三个部门的终端;
- 网线若干,或者模拟器里的直连线。
软件方面,如果你用模拟器,需要提前导入交换机镜像,并建立一个空白拓扑。我强烈建议你先在模拟器上完整跑一遍,再上真机操作,因为真机上敲错一个端口号,你的拔线和重连成本会比较高。
2. 网络拓扑与IP规划:先画图再敲命令
2.1 基础拓扑结构
这次实验我采用的是最经典的一台三层交换机接三台PC的拓扑。三层交换机上三个端口分别连接PC1、PC2、PC3。其中,PC1划入VLAN 10,PC2划入VLAN 20,PC3划入VLAN 30。三个VLAN分别模拟三个不同部门,对应三个独立的IP网段。
拓扑画出来非常简单,但你不要小看这一步。我见过很多同学一上来就直接敲命令,敲到一半发现接口编号记错了,或者IP网段和VLAN对应关系混乱。先花两分钟画一张手绘图,把接口编号、VLAN编号、IP网段一个一个标清楚,后面所有配置都是照着这张图抄,基本不会出错。
2.2 IP规划表
我用的IP规划如下表所示,你可以直接抄用,也可以换成自己的网段,但要保证所有PC的网段、VLAN接口的IP网段、网关地址三者一致:
| VLAN | 网段 | 交换机端口 | PC IP地址 | 网关(SVI接口IP) |
|---|---|---|---|---|
| VLAN 10 | 192.168.10.0/24 | GigabitEthernet1/0/1 | 192.168.10.1 | 192.168.10.254 |
| VLAN 20 | 192.168.20.0/24 | GigabitEthernet1/0/2 | 192.168.20.1 | 192.168.20.254 |
| VLAN 30 | 192.168.30.0/24 | GigabitEthernet1/0/3 | 192.168.30.1 | 192.168.30.254 |
注意这里的网关地址不是外接路由器,而是三层交换机上每个VLAN对应的SVI接口地址。也就是说,PC1要访问其他网段,报文的目的MAC就应该是192.168.10.254这个网关地址对应的MAC,而这一层关系是由交换机的SVI接口提供的。
2.3 为什么要把网关放在交换机上,而不是再接一台路由器
有些同学会问:既然需要路由,为什么不直接在三层交换机下边再挂一台路由器,用单臂路由的方式解决?这个思路在理论上可行,但它不是三层交换机方案的核心价值。
单臂路由需要把三层交换机与路由器之间用Trunk链路连接,所有跨VLAN流量都要先上送到路由器,处理完再回来。这个过程不仅逻辑链路复杂,而且性能受限于路由器CPU和外接链路带宽。而SVI方案把网关收敛在三层交换机内部,VLAN间流量在交换机内部直接完成路由转发,不需要引出设备,速度更快,管理也更集中。
这也在提醒我们:三层交换机的角色并不是替代路由器,而是在大型园区网内部负责“VLAN间高速路由”,它是二层的交换能力和三层路由能力的结合体。
3. 先做二层:VLAN创建、端口划分与隔离验证
3.1 在交换机上创建VLAN
配置的第一步,是在交换机上创建三个VLAN。以H3C/华为命令行风格为例,进入系统视图后逐条执行:
system-view [H3C] vlan 10 [H3C-vlan10] name VLAN10 [H3C-vlan10] quit [H3C] vlan 20 [H3C-vlan20] name VLAN20 [H3C-vlan20] quit [H3C] vlan 30 [H3C-vlan30] name VLAN30 [H3C-vlan30] quitname是给VLAN起一个易读的名字,虽然不影响功能,但在后续排查时能让你一眼看出每个VLAN的用途,我建议都写上。
这里有个容易忽略的点:VLAN 1是交换机默认自带的VLAN,管理VLAN和一些默认流量也在里面,不需要也不能删除。我们实验要用的是10、20、30这三个VLAN。
3.2 把端口划分到指定VLAN
端口划分我用的是Access模式,一个Access端口只能属于一个VLAN,正常情况下只允许这一个VLAN的流量通过。对于连接终端的端口来说,这是最标准的做法。
[H3C] interface GigabitEthernet1/0/1 [H3C-GigabitEthernet1/0/1] port link-type access [H3C-GigabitEthernet1/0/1] port access vlan 10 [H3C-GigabitEthernet1/0/1] quit [H3C] interface GigabitEthernet1/0/2 [H3C-GigabitEthernet1/0/2] port link-type access [H3C-GigabitEthernet1/0/2] port access vlan 20 [H3C-GigabitEthernet1/0/2] quit [H3C] interface GigabitEthernet1/0/3 [H3C-GigabitEthernet1/0/3] port link-type access [H3C-GigabitEthernet1/0/3] port access vlan 30 [H3C-GigabitEthernet1/0/3] quit命令细节上注意:华为模拟器和部分华为真机用port default vlan 10而不是port access vlan 10,这个差异会让你在参考不同教材时产生困惑。其实两条命令做的事是一样的,把端口默认VLAN改成10。关键是前面的port link-type access一定要敲,否则端口可能是默认的Hybrid模式,转发行为会有微妙区别。
如果不小心把PC接错了端口,可以用display vlan查看所有VLAN和端口归属,及时纠正。
3.3 二层隔离验证:先看“不通”再求“通”
很多同学喜欢把VLAN和SVI一次配完,然后直接ping。我建议你多做一个步骤,把VLAN和端口配好之后,先不要配SVI,用三层交换机纯当二层设备用,先验证隔离关系。
具体做两件事:
第一,在同一VLAN内测试连通性。把PC1和另一台临时连接在GigabitEthernet1/0/4端口并划入VLAN10的PC相连,ping一下,正常应该通,因为同一广播域内MAC转发没问题。
第二,跨VLAN测试连通性。PC1 ping PC2,也就是192.168.20.1,这时候会超时或显示请求超时。原因很简单,PC1发出ARP请求想找192.168.20.1的MAC,但这个广播帧只会广播到VLAN10内部的端口,交换机不会把它转发到VLAN20的端口。所以两个VLAN之间天然是隔离的。
这个“不通”是重要的验证节点。你只有亲眼看到二层隔离天然存在,后面配置SVI后“变通”的效果才会特别清晰。
3.4 查看端口与VLAN的对应关系
用下面的命令可以确认二层配置是否正确:
[H3C] display vlan [H3C] display interface briefdisplay vlan会列出每个VLAN包含的端口;display interface brief可以看到每个端口的状态是UP还是DOWN、端口模式是什么。如果端口显示DOWN,首先检查是不是网线没插好,或者模拟器里连线连错了接口。
4. 创建SVI接口:让三层转发真正跑起来
4.1 为每个VLAN配置虚拟接口IP
现在进入整个实验最核心的一步:给VLAN创建SVI接口,并配置IP地址,这个IP就是该VLAN内所有PC的网关。
在H3C/华为环境下,SVI接口叫Vlan-interface,进入后配置IP即可:
[H3C] interface Vlan-interface 10 [H3C-Vlan-interface10] ip address 192.168.10.254 255.255.255.0 [H3C-Vlan-interface10] quit [H3C] interface Vlan-interface 20 [H3C-Vlan-interface20] ip address 192.168.20.254 255.255.255.0 [H3C-Vlan-interface20] quit [H3C] interface Vlan-interface 30 [H3C-Vlan-interface30] ip address 192.168.30.254 255.255.255.0 [H3C-Vlan-interface30] quit我上面写法是完整掩码形式,很多教材和视频里会写ip address 192.168.10.254 24,两种写法完全等价,后者更短。你如果是在华为设备上,命令风格可能是:
interface Vlanif10 ip address 192.168.10.254 24Vlan-interface10和Vlanif10只是命名不同,VLANif是华为风格,Vlan-interface是H3C风格。理解这一点,你到哪个厂商的设备上都不会蒙。
4.2 三层路由表会自动生成直连路由
配置完SVI接口IP后,你不需要手动写任何静态路由。因为交换机创建了这些三层接口并配上IP,就会自动在IP路由表中生成对应网段的直连路由。
可以用display ip routing-table来验证,正常情况下你会看到三条路由,目的网段分别是192.168.10.0/24、192.168.20.0/24、192.168.30.0/24,下一跳都是直连接口。
这个细节容易被人忽略,但恰恰是理解三层转发的入口:路由表的生成并不一定需要“配置路由”,接口本身up且分配了IP,就相当于告诉交换机“这个网段我直接认识,从我这里出得去”。
4.3 思科设备的差别:别忘开启IP路由
如果你所在学校用的是思科模拟器或思科真机,配置思路上完全相同,但命令风格完全不一样,我列个对照表:
| 操作 | 华为/H3C | 思科 |
|---|---|---|
| 开启三层路由 | 默认开启 | 需要全局配置ip routing |
| 创建VLAN | vlan 10 | vlan 10 |
| 端口划入VLAN | port link-type access+port access vlan 10 | switchport mode access+switchport access vlan 10 |
| 创建SVI接口 | interface Vlan-interface 10 | interface vlan 10 |
| 配置接口IP | ip address 192.168.10.254 24 | ip address 192.168.10.254 255.255.255.0 |
| 激活接口 | 默认激活 | 还需要no shutdown |
思科交换机的默认状态最容易让新手翻车:就算你配好了SVI接口和IP,如果忘了在全局视图下敲ip routing,交换机依然不会转发VLAN间的路由流量。华为/H3C设备默认支持三层转发,反而容易让人以为“没配路由就是不通”是其他问题。所以在不同厂商设备间切换时要格外留意这些隐性开关。
4.4 确认SVI接口状态是UP
SVI接口和物理接口不太一样,它的状态取决于两件事:一是对应VLAN里至少有一个物理端口处于UP状态,二是这个接口没有被手动shutdown。
如果你发现配置完IP之后,display interface Vlan-interface10显示接口down,多半是对应VLAN下没有活动的物理端口。回到实验拓扑里检查一下,PC1是否真的连在了GigabitEthernet1/0/1上,且这个端口已经划入了VLAN 10。
5. 连通性测试与结果分析:用数据说话
5.1 Ping测试记录
配置完成后,我在三台PC上分别做了ping测试,测试结果记录如下:
| 测试项 | 源地址 | 目的地址 | 预期结果 | 实际结果 |
|---|---|---|---|---|
| 同VLAN内通信 | 192.168.10.1 | 192.168.10.254(网关) | 通 | 通 |
| 同VLAN内通信 | 192.168.10.1 | 192.168.10.1(本机) | 通 | 通 |
| 跨VLAN通信 | 192.168.10.1 | 192.168.20.1 | 通 | 通 |
| 跨VLAN通信 | 192.168.20.1 | 192.168.30.1 | 通 | 通 |
| 跨VLAN通信 | 192.168.30.1 | 192.168.10.1 | 通 | 通 |
在这里特别提醒:PC端也需要提前配置好IP、掩码和网关。PC的网关必须填对应VLAN的SVI接口地址,例如VLAN 20的PC2,网关就必须是192.168.20.254,而不是192.168.10.254。这个低级错误在实验中出现频率非常高,属于“配置全对但结果全错”的经典原因。
跨VLAN ping通后,可以再观察一下TTL值。PC1 ping PC2时,数据包经过三层交换机的路由转发,TTL会减少1。如果你原来的TTL是128,ping通后看到的回应TTL就是127,这也能从侧面证明流量确实经过了三层转发,而不是在同一广播域里直接通信。
5.2 查看MAC地址表与ARP表
三层交换机干的是“既转发二层帧,也要做三层路由”的活,所以我推荐在验证连通后同时查看MAC地址表和ARP表,理解接口在转发过程中扮演的双重身份。
查看命令如下:
[H3C] display mac-address [H3C] display arp在display mac-address的输出里,你能看到每个VLAN对应的MAC地址条目。PC1发往PC2的数据帧到达交换机后,交换机首先根据目的MAC判断是否是发给自己的,如果是发给SVI接口的MAC,就交给三层模块处理;处理完发现是发往192.168.20.1,再查ARP表获得PC2的MAC,重新封装为二层帧从VLAN20的端口转发出去。
用display arp能看到三层模块已经学习到了三台PC的IP与MAC映射关系。这就是“路由一次,交换多次”背后的机制:第一次跨VLAN通信时,交换机会做一次ARP解析,后面再有流量就直接查表转发,效率很高。
5.3 观察第一跳与默认网关的作用
如果你在PC上执行:
tracert 192.168.20.1在Windows系统下会看到第一个跳点就是192.168.10.254,也就是SVI接口的地址,第二个跳点才会是192.168.20.1。
这个结果非常清楚地说明了:对PC1来说,它根本不知道目标主机在哪里,它只知道把数据包交给默认网关,剩下的事全部由三层交换机来完成。SVI接口承担了网关的所有功能,而用户侧的PC配置和普通局域网相比没有区别。
5.4 扩展场景:如果下面还接了二层交换机
实验指导书的进阶部分往往会要求你把拓扑扩成“三层交换机+二层交换机”两层结构。这时候二层交换机只负责下联PC和划分VLAN,三层交换机负责VLAN间路由。二层交换机与三层交换机之间的链路必须配置为Trunk,并放行所有相关VLAN。
二层交换机侧配置示例:
[SW2] interface GigabitEthernet1/0/24 [SW2-GigabitEthernet1/0/24] port link-type trunk [SW2-GigabitEthernet1/0/24] port trunk permit vlan all三层交换机侧接二层交换机的上联口同样要配置Trunk。这时候SVI接口的配置与单台三层交换机完全一致。这个扩展实验的坑主要在Trunk的PVID设置上,默认PVID是1,如果两边PVID不一致且没有正确放行,就会出现“看到VLAN但通不了”的诡异情况。
6. 排错实验:VLAN通了但Ping不通,问题出在哪一行命令
6.1 从物理层到三层,一套完整的排查链路
做实验时没有一次成功才是常态。我在做这个实验时,第一轮就踩了坑,于是梳理了一套排查链路,现在分享给你,顺序一定不要乱:
- 先看物理层:
display interface brief,确认三个端口状态都是UP; - 再看VLAN成员关系:
display vlan,确认端口确实在对应的VLAN下; - 看三层接口:
display ip interface brief,确认每个Vlan-interface都有了IP且状态UP; - 看ARP表:
display arp,确认交换机是否学到了PC的MAC; - 看PC终端:查看IP、掩码、网关是否配置正确;
- ping测试:从同VLAN到跨VLAN逐步增加测试范围,定位在哪一环节断了。
这套排查链路的核心思想是“从底层往上查”,先确保链路和端口没问题,再查VLAN归属,最后才怀疑路由和网关。很多同学一上来就重配命令,结果问题根本没在配置上,而是网线没插紧。
6.2 经典坑位一:端口模式不对等于白配
我遇到过的情况是,端口划分命令敲下去了,VLAN 10也显示了端口GigabitEthernet1/0/1,但PC1就是ping不通同VLAN的其他主机。后来发现,这个端口实际是Hybrid模式,帧从端口进入时虽然带上了VLAN 10的标签,但由于Hybrid端口的untagged规则,处理方式和Access完全不同。
解决办法很简单:在把端口划入VLAN之前,先强制设置端口模式为Access,再执行port access vlan 10。这是两层操作,缺一不可。
华为设备有些端口默认是Hybrid,H3C很多端口默认是Access,所以不同厂商默认行为不同。你不能想当然认为“命令行敲进去就成功了”,要用display interface GigabitEthernet1/0/1查看端口的链路类型。
6.3 经典坑位二:网关和ARP请求的连锁反应
如果PC1 ping PC2不通,但在三层交换机上ping PC2是通的,问题大概率出在PC1的网关上。
我实测发现,当PC1的网关被误填成192.168.20.254时,PC1发出的数据包会直接投递给错误网关。三层交换机收到这个包,发现目的地址跟自己没有直连关系,只能把它当普通IP报文再发出去,这个报文最终可能被丢弃或发到别的网段,PC2自然收不到。
正确的排查方法是:在PC1上执行ipconfig确认网关,再ping一次网关。如果网关本身就不通,后面的跨VLAN通信讨论都没有意义。先保证“PC到网关”这一跳是通的,再做跨VLAN测试。
6.4 经典坑位三:SVI接口状态Down
这个坑在模拟器上尤其常见。SVI接口看似配置了IP,但状态始终是DOWN。用display interface Vlan-interface 10查看,会发现接口被标记为down或管理down。
常见原因有两个:一是SVI接口被手动shutdown了,需要执行undo shutdown打开;二是该VLAN下没有处于UP状态的物理端口,SVI接口就会自动down。如果是第二种情况,你即使把IP删掉重配也没用,必须先去确认物理端口状态和VLAN划分。
我在某台真机上还发现了一个容易被忽略的细节:三层交换机上可能存在一个物理端口没有配置任何VLAN,默认全部在VLAN1里,而VLAN1并没有创建SVI接口。此时你不小心把这个端口当作普通口去接设备,管理地址都通了,但业务VLAN的SVI却显示down,因为真正承载业务的端口可能被你shutdown了。
6.5 跨厂商经验:先读文档,再看默认值
做排错时,我养成了一个习惯:每换一台设备,先把“默认VLAN”“默认端口模式”“三层路由是否默认开启”这几个默认值确认一遍。
不同厂商之间差异比想象中大得多:华为S系列交换机端口默认是Hybrid,H3C部分系列默认是Access,思科交换机默认端口是switchport模式但需要开启ip routing,等等。如果你把某一套命令和思维方式固化下来,换个环境极容易全面翻车。
所以最好的做法,不是死记命令,而是掌握三个核心概念:VLAN是隔离,SVI是网关,路由表是转发依据。把这三个概念和每条命令对应起来,厂商差异只是表达形式不同而已。
做完整套实验,我对三层交换机的理解比之前清晰了很多:它并不是简单地把“交换”和“路由”两个功能塞在一台设备里,而是通过SVI把二层隔离和三层寻址统一在一个转发模型里。回头看那些ping不通的夜晚,基本都输在“对原理的模糊”上,而不是敲命令的手速上。如果你也在做同一个实验,建议你先静下心把拓扑图、IP规划表、VLAN规划表画清楚,再动手,你会少走很多弯路。