做三层交换机综合实验之前,我一直建议学生先想清楚一个问题:两层交换机已经能把网络分成一个个VLAN了,为什么还要引入三层交换机?这个问题想通了,整个实验的配置流程就是顺水推舟的事。说实话,三层交换机综合实验是网络工程课程里承上启下的一个节点——前面的VLAN、Trunk、静态路由它全都要用,后面的DHCP、路由协议、网关冗余它又都有伏笔。这篇文章我就以华为eNSP环境为例,从原理到配置、从验证到排障,把整个实验完整走一遍,顺便聊聊那些容易被忽略的坑。
1. 实验到底在做什么:三层交换机为什么能打通不同网段
1.1 三层交换机解决的痛点
先回到一个最基础的问题:VLAN划分之后,不同VLAN之间是隔离的。隔离意味着广播被控制住了,安全性也上来了,但业务上又往往需要互通。最典型的场景就是财务部在VLAN 10,办公网在VLAN 20,财务软件跑在办公网的服务器上,两边必须能通信。
如果只用二层交换机,这个需求根本实现不了。二层交换机的转发依据是MAC地址表,MAC地址表里只有同一广播域内的对应关系,跨VLAN的帧进来之后根本不知道该往哪个口送。想让不同VLAN、不同网段通信,必须有三层路由的参与,也就是设备要能识别IP地址并做路由决策。
传统方案是外接一台路由器做单臂路由:交换机和路由器之间用一条Trunk链路连接,路由器上通过子接口划分出多个逻辑接口,每个子接口对应一个VLAN的网关。这个方案原理上没问题,但有两个致命短板。第一,所有跨VLAN流量都挤在同一条物理链路上,带宽和性能都是瓶颈;第二,路由器接口少,成本高,在VLAN数量多的大楼场景里完全不够用。
三层交换机就是冲着这个痛点来的。它把路由模块做到了交换硬件里,转发引擎同时具备二层交换和三层路由的能力,跨VLAN的流量可以直接在交换机内部完成路由,不需要绕到外部路由器,转发速度能到线速。这就是为什么现在园区网的核心层几乎清一色用三层交换机,而不是路由器。
1.2 不同网段通信真的必须三层交换机吗
这个问题网上问得特别多,答案其实是否定的。不同网段通信的本质是:源主机的数据包要交给网关,网关作为路由器查路由表,然后把包从正确的出口转发出去。只要能完成这个“查表路由”动作的设备都可以,所以普通路由器也能干这活。
但为什么三层交换机成了主流选择?关键在于性价比和接口密度。一台三层交换机有几十个千兆口,每个口都可以接终端,同时还能当VLAN网关;而路由器通常只有几个口,你把端口都用来接终端了,就没有口做上行互联了。更重要的是,三层交换机内部的路由转发由硬件ASIC芯片完成,性能远超市面上同价位路由器基于CPU的软件转发。
还有一个容易混淆的概念:三层交换机上的VLANIF接口,本质上是给VLAN这个“二层广播域”绑定一个三层逻辑接口。这个逻辑接口的IP地址,就是这个VLAN内所有PC的网关地址。PC发出的跨网段数据包,会先送到VLANIF接口对应的网关,交换机再根据路由表决定从哪里转发。理解了这条链路,后面配置起来就特别顺。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 实验环境搭建与拓扑设计
2.1 环境准备:eNSP与设备选型
这个实验我用的是华为eNSP模拟器,版本V100R003C00,设备选的是S5700系列三层交换机。选S5700的原因很实在:它支持VLANIF、静态路由、OSPF,而且模拟器里默认就带这个型号,不用额外导入设备包。你要是用S3700也能跑通大部分功能,但有些高级特性支持不全,做综合实验时容易卡壳。
PC终端直接用eNSP里的“PC”组件就行,注意PC的IP、掩码、网关都要手动填,别指望它自动获取——除非你在实验里把DHCP功能也做了,这一步我们后面会讲。模拟器版本建议用比较稳定的版本,我实测过一些较新版本在保存配置和抓包时偶尔会卡顿,影响实验节奏。
做实验前一定要养成一个习惯:先把所有设备的配置文件保存到本地备份。eNSP里在设备上执行save命令后,退出时选择保存。别嫌麻烦,配置错乱时一键恢复可比重新敲一遍命令舒服多了。
2.2 实验拓扑与IP规划
这次综合实验我设计了四台交换机的拓扑,两层级联,既有单台三层交换机的VLAN间路由,也有跨交换机跨网段的路由联动,这样能把三层交换机的大部分能力都覆盖到。
拓扑结构是:LSW1和LSW2是三层交换机,通过GigabitEthernet0/0/24互联;LSW1下挂PC1和PC2,分别属于VLAN 10和VLAN 20;LSW2下挂PC3和PC4,分别属于VLAN 30和VLAN 40。LSW1作为核心,负责VLAN 10和VLAN 20的网关;LSW2同样负责VLAN 30和VLAN 40的网关。
IP规划表如下:
| 设备 | 接口/VLAN | IP地址 | 掩码 | 网关 |
|---|---|---|---|---|
| PC1 | eth0/0/1 | 192.168.10.2 | 255.255.255.0 | 192.168.10.1 |
| PC2 | eth0/0/2 | 192.168.20.2 | 255.255.255.0 | 192.168.20.1 |
| PC3 | eth0/0/3 | 192.168.30.2 | 255.255.255.0 | 192.168.30.1 |
| PC4 | eth0/0/4 | 192.168.40.2 | 255.255.255.0 | 192.168.40.1 |
| Vlanif10 (LSW1) | 网关VLAN10 | 192.168.10.1 | 255.255.255.0 | - |
| Vlanif20 (LSW1) | 网关VLAN20 | 192.168.20.1 | 255.255.255.0 | - |
| Vlanif30 (LSW2) | 网关VLAN30 | 192.168.30.1 | 255.255.255.0 | - |
| Vlanif40 (LSW2) | 网关VLAN40 | 192.168.40.1 | 255.255.255.0 | - |
| Vlanif100 (LSW1) | 互联VLAN100 | 10.0.100.1 | 255.255.255.0 | - |
| Vlanif100 (LSW2) | 互联VLAN100 | 10.0.100.2 | 255.255.255.0 | - |
注意互联网段用的是10.0.100.0/24,单独划了一个VLAN 100,不要和业务网段混在一起。这样做的目的很明确:互联链路是三层路由的必经之路,单独规划方便查路由表,也方便后续扩展路由协议。
2.3 配置前的全局设计思路
很多人做实验失败,不是因为命令敲错,而是因为没想清楚整体架构就开始动手。我建议在配置前花十分钟把下面几件事定下来。
第一,明确每台交换机承担的角色。LSW1是左侧的网关设备,负责VLAN 10和20;LSW2是右侧的网关设备,负责VLAN 30和40。两台设备之间通过VLAN 100互联,相当于一条“路由链路”。
第二,明确哪些接口是Access,哪些是Trunk。连接PC的接口一定是Access,因为PC不识别VLAN标签;交换机互联的接口要用Trunk,因为要承载多个VLAN的流量。
第三,明确路由怎么走。PC1访问PC3,数据包先到LSW1的VLANIF10网关,LSW1查路由表发现192.168.30.0/24不在直连网段,要通过10.0.100.2这个下一跳过去。同理LSW2也要有回程路由,否则PC3回包到不了PC1。
这三件事想透了,配置顺序就很清晰:先配二层(VLAN、Access、Trunk),再配三层(VLANIF、路由),最后验证。千万别跳步。
3. 核心配置实战:从VLAN到VLANIF
3.1 第一步:交换机二层基础配置,VLAN划分与Access/Trunk
打开LSW1,先做基础配置。华为设备默认所有接口是Hybrid类型,这个类型对新手不太友好,我建议在配置端口类型时显式声明Access或Trunk,避免默认行为带来的干扰。
bash复制system-view
sysname LSW1
vlan batch 10 20 100
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/24
port link-type trunk
port trunk allow-pass vlan 10 20 100
这里每一条命令都有讲究。vlan batch是一条命令批量创建多个VLAN的快捷方式,比逐个vlan创建效率高得多。port link-type access把接口切换到Access模式,port default vlan 10把接口划入VLAN 10,这样从PC1进来的帧会被打上VLAN 10的标签,在交换机内部按VLAN 10处理。
GigabitEthernet0/0/24连接LSW2,必须配Trunk。关键点是port trunk allow-pass vlan 10 20 100这一句,它决定了Trunk链路上放行哪些VLAN的流量。如果漏了某VLAN,那个VLAN的跨交换机通信就会失败,这是我最常看到的问题。
LSW2的配置类似,只是接口和VLAN不同:
bash复制system-view
sysname LSW2
vlan batch 30 40 100
interface GigabitEthernet0/0/1
port link-type access
port default vlan 30
interface GigabitEthernet0/0/2
port link-type access
port default vlan 40
interface GigabitEthernet0/0/24
port link-type trunk
port trunk allow-pass vlan 30 40 100
配完之后,先别急着往下走,务必检查一下。在交换机上执行display vlan,看VLAN是否创建成功,端口是否划分正确;再执行display port vlan,查看接口的VLAN类型和PVID。这一步花两分钟,能省后面半小时排障时间。
3.2 第二步:三层路由配置,VLANIF接口与路由协议
二层配好之后,PC1和PC2还是不通,因为还缺网关。网关就是VLANIF接口,它把VLAN和IP地址绑定在一起。在LSW1上配置:
bash复制interface Vlanif10
ip address 192.168.10.1 255.255.255.0
interface Vlanif20
ip address 192.168.20.1 255.255.255.0
interface Vlanif100
ip address 10.0.100.1 255.255.255.0
LSW2上同样操作:
bash复制interface Vlanif30
ip address 192.168.30.1 255.255.255.0
interface Vlanif40
ip address 192.168.40.1 255.255.255.0
interface Vlanif100
ip address 10.0.100.2 255.255.255.0
到这里,单台交换机内部的VLAN间路由已经通了:PC1访问PC2,数据包到VLANIF10网关,交换机查直连路由,从VLANIF20转发出去。但PC1访问PC3还不通,因为LSW1的路由表里没有192.168.30.0/24这条路由。这时候需要配置路由协议。
用静态路由最直观:
bash复制ip route-static 192.168.30.0 255.255.255.0 10.0.100.2
ip route-static 192.168.40.0 255.255.255.0 10.0.100.2
LSW2上配置回程路由:
bash复制ip route-static 192.168.10.0 255.255.255.0 10.0.100.1
ip route-static 192.168.20.0 255.255.255.0 10.0.100.1
如果你想用OSPF也可以,华为的命令是这样:
bash复制ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 192.168.10.0 0.0.0.255
network 192.168.20.0 0.0.0.255
network 10.0.100.0 0.0.0.255
LSW2上同样配置,router-id改成2.2.2.2,网段换成自己的直连网段。OSPF的好处是后续新增网段不用手工加静态路由,协议会自动学习。综合实验里我更推荐OSPF,因为它能顺带复习路由协议的知识点。
3.3 关键原理解读:为什么VLANIF能路由
很多初学者对VLANIF的理解停留在“配个IP就行”的层面,不理解它为什么能路由。这里我展开讲一下。
VLANIF是三层逻辑接口,但它和物理三层接口有一个重要区别:物理接口是独立存在的,而VLANIF必须依附于一个已经创建的VLAN。这个VLAN里的物理接口只要有一个是Up状态,VLANIF就会跟着Up;如果VLAN里所有物理接口都Down了,VLANIF也会Down,即使你配置了IP地址。
数据转发的流程是这样的:PC1要向PC3发包,先检查目标IP 192.168.30.2和自己不在同一网段,于是把帧的目的MAC改成网关的MAC,也就是VLANIF10的MAC地址,然后发出。交换机收到帧后,发现目的MAC是自己,就剥离二层帧头,提取IP层信息,查路由表。路由表里有192.168.30.0/24的条目,下一跳是10.0.100.2,于是交换机把包从VLANIF100对应的三层接口转发出去,重新封装目的MAC为LSW2互联接口的MAC。这就是一次典型的三层转发。
所以VLANIF接口同时承担了“终点”和“起点”两个角色:对终端PC来说,它是网关,是数据包的终点;对路由过程来说,它是起始出口,数据包从它这里重新出发。这个双重身份是理解三层交换机的关键。
3.4 验证命令与结果解读
配置完成后,必须用验证命令确认,不能光靠ping通了就完事。我最常用的验证命令有这几条:
bash复制display ip interface brief
display ip routing-table
display arp
display vlan
display ip interface brief查看所有三层接口的IP和状态,重点确认VLANIF接口状态是Up;display ip routing-table查看路由表,确认直连路由和静态路由都在;display arp查看ARP表,确认交换机已经学习到了PC的MAC地址。
验证连通性时,在PC1上执行:
bash复制ping 192.168.10.2
ping 192.168.30.2
tracert 192.168.30.2
ping网关通了,说明二层没问题;ping跨网段的PC通了,说明三层路由没问题;tracert能看到路径经过了哪些网关,能精确判断数据走到哪一跳断了。
4. 进阶玩法:把实验做扎实的几个扩展
4.1 开启DHCP自动分配地址
实验里PC都是手动配置IP,但实际项目中终端数量多,不可能一个个手动配。三层交换机作为网关,往往还承担DHCP服务器的角色。在LSW1上开启DHCP功能:
bash复制dhcp enable
interface Vlanif10
dhcp select interface
dhcp server dns-list 114.114.114.114
这里有个很实用的细节:dhcp select interface是基于接口的DHCP地址池,地址池范围自动取自接口的网段和掩码。也就是说VLANIF10配了192.168.10.1/24,地址池就自动是192.168.10.2到192.168.10.254,不需要手工指定地址池范围。PC改成自动获取IP后,能正常拿到地址并且网关正确。
但要注意一个坑:如果后续你改了VLANIF接口的IP地址,DHCP地址池会自动跟着变,但已经分配给PC的租约还没到期,可能出现PC还是旧IP的情况。实验环境无所谓,生产环境改IP前先reset ip pool或者等租约过期。做综合实验时,可以把其中一台PC改成DHCP方式,验证自动获取的地址和网关都正确,这样实验报告里也能多写一笔。
4.2 双核心场景:把实验扩展到VRRP
三层交换机综合实验,很多教材做到静态路由就结束了。但实际项目中,核心层交换机往往是两台做冗余,这里就涉及VRRP(虚拟路由冗余协议)。你可以在LSW1和LSW2之间再拉一条心跳线,然后在VLANIF10上配置VRRP:
bash复制interface Vlanif10
vrrp vrid 10 virtual-ip 192.168.10.254
vrrp vrid 10 priority 120
另一台交换机上配置相同VRID的虚拟IP,优先级低一点。这样PC的网关指向虚拟IP,LSW1挂了LSW2自动接管,实现了网关层面的冗余。这个扩展把三层交换机的价值体现得淋漓尽致——它不只是路由设备,更是高可用架构的核心。
不过要提醒一句:VRRP配置前一定要保证两台交换机之间的三层互通是通的,否则VRRP报文过不去,虚拟IP起不来,反而会把实验搞复杂。建议基础实验跑通后再加VRRP,不要一上来就叠功能。
4.3 抓包观察跨VLAN转发的完整流程
eNSP支持在接口上抓包,这真的是理解三层转发最好的工具。在PC1上ping PC3,同时在LSW1的G0/0/24接口上抓包,你能看到两种类型的数据包:ICMP请求包的目的MAC是LSW2的MAC,源MAC是LSW1接口的MAC;回程包则相反。
抓包能验证一个关键点:PC1发给网关的帧里,源MAC是PC1的MAC,目的MAC是VLANIF10的MAC;但从G0/0/24出去的帧,源MAC和目的MAC都被替换了。这就是三层转发和二层转发的本质区别——二层转发不改变帧内容,三层转发每次都要重新封装。
很多学生在实验报告里写“三层交换机就是能路由的交换机”,这当然没错,但如果你能结合抓包结果写出“数据包在VLANIF接口完成MAC地址重写,TTL减一,路由查表后重新封装转发”,这个报告的质量立刻就不一样了。
5. 常见问题与排查实录
5.1 故障速查表
| 故障现象 | 可能原因 | 排查命令 | 解决方法 |
|---|---|---|---|
| PC ping不通网关 | VLANIF未配置或Down | display ip interface brief | 配置IP,检查VLAN内是否有Up的物理接口 |
| 同VLAN通,跨VLAN不通 | 三层接口未配或路由缺失 | display ip routing-table | 检查VLANIF配置和路由表 |
| 跨交换机VLAN不通 | Trunk未放行VLAN | display port vlan | 放行对应VLAN,检查allow-pass |
| VLANIF状态Down | VLAN下无Up物理接口 | display vlan | 确认Access口配置正确 |
| PC能ping通网关,ping不通远端PC | 路由缺失或下一跳错误 | display ip routing-table | 配置静态路由或OSPF,检查回程路由 |
| PC拿不到DHCP地址 | DHCP未开启或中继未配 | display dhcp server | 开启dhcp enable,检查地址池 |
这张表是排查的起点,遇到问题先定位到具体现象,再根据现象选排查命令,效率会高很多。
5.2 排查方法论:从现象倒推问题
我见过不少学生一遇到不通就急着重启设备或者删配置,这是最差的排障方式。我的习惯是:从底层到上层逐层排查。
第一步,确认物理层。PC的网口指示灯亮不亮,交换机接口状态是不是Up。eNSP里接口默认是开的,但如果是真实设备,网线松动、接口被shutdown都是常见故障。
第二步,确认二层。PC能不能ping通网关?不能的话,检查Access口划分的VLAN对不对,Trunk是否放行了对应VLAN,VLANIF接口是否配置正确。这里有个小技巧:在PC上先ping网关,如果不通,多半是二层问题;如果通了但ping不通远端,才是三层问题。
第三步,确认三层。ping网关通但ping不通远端,用tracert看数据包走到哪一跳断了。如果第一跳就通、第二跳超时,问题在中间链路或路由;如果第二跳也通但最后目标不通,问题在目标侧的路由或防火墙。
第四步,看路由表。display ip routing-table是三层排障的核心命令,确认路由存在、下一跳正确、出接口Up。别忘了检查回程路由——PC1能通PC3但PC3不能通PC1,十有八九是回程路由没配。
5.3 踩过的那些坑:华为设备特有细节
华为设备和思科有很多细节上的差异,做实验时特别容易踩坑。
第一个坑是Hybrid接口。华为交换机接口默认是Hybrid类型,和思科默认的Dynamic Desirable完全不同。Hybrid类型的接口既能打标签又能不打标签,行为比较难判断。我建议所有接口都显式配置port link-type access或port link-type trunk,明确你的意图,也方便后期排查。
第二个坑是Trunk放行列表。华为的Trunk接口默认只放行VLAN 1,如果你创建了VLAN 10但忘了在Trunk上放行,跨交换机的VLAN 10流量就断了。而且这个错误很隐蔽,因为VLAN 10内部的PC还能互相通信,只有跨交换机的通信才异常。
第三个坑是VLANIF的物理依赖。前面提过,VLANIF接口的Up/Down和VLAN内物理接口状态绑定。如果你只在交换机上创建了VLAN但没划入任何物理接口,VLANIF怎么配都是Down的,ping网关自然不通。
第四个坑是配置不回保存。eNSP里配置完必须执行save,否则关闭设备后全部丢失。这个看似老生常谈,但每次实验都有学生忘记。建议配置完核心步骤后立刻保存,别等整个实验做完再存。
还有一个关于排查的细节:改配置之前,记得先看当前配置。用display current-configuration查看整台设备的配置,用display current-configuration interface GigabitEthernet 0/0/1查看某个接口的配置。改完之后再次查看,确认生效。习惯了这个流程,你在真实项目里也不会慌。
做网络实验和别人最大的区别就在这儿:它不是一遍跑通就完事的事情,而是在反复的“配错—排查—定位—修复”中,把协议原理真正变成肌肉记忆。三层交换机综合实验的价值也不在于你敲了多少条命令,而在于遇到“不同网段无法互通”的时候,你能快速判断问题出在二层还是三层,出在本地还是对端。这套排查思路,比任何一条命令都值钱。以后工作中不管碰到核心交换机、出口路由器还是云上VPC,说到底都是同一件事:看得懂路由,抓得住故障。
