做了无数次VLAN划分,发现不同VLAN之间就是不通,这几乎是每个网络初学者都会撞上的墙。以往靠单臂路由解决,但带宽和性能瓶颈明显。这次实验彻底换了个思路,用三层交换机直接实现VLAN间路由,配置下来发现事情比想象中简单,但坑也比想象中多。这篇博客就把整个实验过程拆开揉碎,从原理到配置再到排查,全部分享出来。
这次实验的核心是三层交换机的VLAN间路由配置,针对的是小型企业网和园区网中最常见的场景:业务部门需要隔离,但隔离之后又要互相访问。适合刚学完VLAN基础、准备进入三层交换阶段的网络学习者,也适合正在准备网络工程师认证的考生参考。
1. 为什么三层交换机比路由器更适合做VLAN间路由
1.1 VLAN隔离与通信之间的矛盾
VLAN的本质是把一个物理交换机逻辑拆成多个广播域。划分VLAN之后,广播风暴能有效抑制,部门之间天然隔离,安全性也高了一截。但问题随之而来:两个部门如果VLAN不同,默认情况下二层流量根本不互通,连个ping包都送不过去。
传统做法是路由器单臂路由。交换机上联路由器的一个物理口,配置成Trunk,路由器上创建子接口,每个子接口对应一个VLAN的网关,再封装802.1Q。这个方案能跑,但有几个硬伤:所有跨VLAN流量必须绕到路由器转发,而路由器的端口转发性能远不如交换机的硬件转发;子接口之间共享同一个物理链路,流量一大就拥塞;配置也繁琐,每加一个VLAN就要加一个子接口。
1.2 三层交换机方案的核心理念
三层交换机的思路是交换和路由一体化。它内部既有二层交换芯片,也有三层转发引擎。当数据包在同VLAN内传输的时候走二层交换通道,速度极快;当数据包需要跨VLAN传输时,直接走三层转发引擎,而且这个三层转发是在硬件层面完成的,转发率远高于传统路由器。
这里面的关键逻辑是用SVI来充当网关。SVI全称是Switch Virtual Interface,它不是一个物理接口,而是交换机内部虚拟出来的一个三层接口,对应某个VLAN。只要给这个VLAN配置了IP地址和子网掩码,这个VLAN内的主机就把这个IP当作网关。
这样一来,每个VLAN的网关都在三层交换机上,跨VLAN流量在交换机内部就完成了路由,不需要绕道外部路由器,性能天然占优。
1.3 本实验的核心思路
实验的整体逻辑就是:在一台三层交换机上,创建两个VLAN,分别划分不同的端口,然后给两个VLAN各配一个SVI接口作为网关,最后开启交换机的路由功能。核心命令就是ip routing,这一条命令把交换机的三层路由功能解锁,之后SVI之间才能互相转发数据。
这个实验虽然看起来只有几步配置,但背后牵扯的概念密度很高:SVI的创建、交换机端口的二层属性和三层属性、Trunk端口与Access端口的区别、三层转发与二层转发的路径差异。把这些全部串起来,VLAN间路由才算真正吃透。
2. 实验拓扑与规划:动手之前先把表填好
2.1 实验环境说明
这个实验我用的是Cisco Catalyst 3560系列三层交换机,软件版本支持ip routing命令。如果没有真机,用模拟器也完全可以实现,虚拟环境的命令和真机基本一致,用来练习配置思路没有任何问题。
实验环境里还需要两台PC或两台路由器模拟终端主机。如果手头只有一台交换机,也可以用两个VLAN接口直接测试,但在拓扑里加上两台主机更直观,ping的结果也更容易理解。
2.2 拓扑设计与地址规划表
拓扑结构很简单:一台三层交换机,下面接两台PC机,PC1划分到VLAN 10,PC2划分到VLAN 20。
| 设备 | 接口 | VLAN | IP地址 | 网关 |
|---|---|---|---|---|
| 三层交换机 | VLAN 10接口 | 10 | 192.168.10.1/24 | - |
| 三层交换机 | VLAN 20接口 | 20 | 192.168.20.1/24 | - |
| PC1 | 接入交换机接口 | 10 | 192.168.10.10/24 | 192.168.10.1 |
| PC2 | 接入交换机接口 | 20 | 192.168.20.10/24 | 192.168.20.1 |
网关就是三层交换机上每个VLAN的SVI接口地址。PC的网关必须指向对应VLAN的SVI地址,这一点极易出错,很多人配完之后ping不通,最后发现是PC的网关地址指向了别的VLAN的IP。
2.3 理解端口角色的关键前提
在配置之前必须理顺一个概念:交换机的物理端口默认是二层接口,工作在Access模式或Trunk模式下。如果把端口划给某个VLAN,它就成了这个VLAN的成员端口,只能转发这个VLAN的流量。
三层交换机创建SVI不需要改变物理端口的二层属性,因为SVI是逻辑接口,跟物理接口是两码事。只有当你需要把某个物理端口直接配置成三层路由口时,才需要敲no switchport。这个区别如果搞混了,配置就会乱套。
3. 三层交换机VLAN间路由的完整配置过程
3.1 第一步:创建VLAN并划分端口
先把两个VLAN建出来。进入全局配置模式后,创建VLAN并给它们命名,方便识别。
Switch> enable Switch# configure terminal Switch(config)# vlan 10 Switch(config-vlan)# name Sales Switch(config-vlan)# exit Switch(config)# vlan 20 Switch(config-vlan)# name Finance Switch(config-vlan)# exit创建VLAN之后,把交换机上行到PC的物理端口分别划到对应的VLAN中。注意这个操作必须在接口配置模式下进行,而且端口的switchport mode access要确保设置正确。
Switch(config)# interface fastEthernet 0/1 Switch(config-if)# switchport mode access Switch(config-if)# switchport access vlan 10 Switch(config-if)# exit Switch(config)# interface fastEthernet 0/2 Switch(config-if)# switchport mode access Switch(config-if)# switchport access vlan 20 Switch(config-if)# exit执行到这里,两台PC在二层上已经被隔离了。此时从PC1去ping PC2,一定不通,因为两个VLAN是独立的广播域,二层不互通。这是实验中最容易产生的困惑点:明明端口都配好了,为什么ping不通?实际是因为三层路由还没配。
3.2 第二步:创建SVI接口并配置IP地址
现在到了整个实验的关键部分。需要在交换机内部为每个VLAN创建一个虚拟的三层接口,也就是SVI。
Switch(config)# interface vlan 10 Switch(config-if)# ip address 192.168.10.1 255.255.255.0 Switch(config-if)# no shutdown Switch(config-if)# exit Switch(config)# interface vlan 20 Switch(config-if)# ip address 192.168.20.1 255.255.255.0 Switch(config-if)# no shutdown Switch(config-if)# exitSVI接口跟物理接口一样,默认是down的,必须用no shutdown激活。很多人在模拟器里操作时会漏掉这一步,导致接口一直起不来。SVI只有在对应VLAN里至少有一个Access端口或Trunk端口处于up状态时才会显示为up,这是SVI和物理接口的显著区别之一。
这里需要解释一个底层逻辑:SVI的本质是在交换机的三层引擎里创建了一个VLAN的逻辑网关。当一个数据包从VLAN 10的PC1发往网关192.168.10.1时,交换机的三层引擎会接住这个包,然后查看目的地址192.168.20.10,发现它对应的网段路由指向VLAN 20的SVI,于是把包从VLAN 20的SVI转发出去,再通过二层交换送到PC2的物理端口。
这个过程跟你敲了几条命令没有直接关系,它完全是交换芯片和三层引擎的硬件行为,但前提是交换机的路由功能必须打开。
3.3 第三步:开启三层路由功能
配置SVI之后,如果直接测试,大概率还是不通。因为Cisco二层交换机不支持路由功能,三层交换机默认的路由功能也是关闭的。必须手动打开。
Switch(config)# ip routing Switch(config)# exit这条命令被称为三层交换机的总开关,它启用了交换机的三层路由引擎。没有这条命令,SVI接口之间不会转发任何跨网段的数据包。ip routing是区分二层交换机和三层交换机的分水岭,也是整个实验中最容易被忽略的一步。
验证一下当前的路由表:
Switch# show ip route正常情况下,路由表里会出现两条直连路由:
- 192.168.10.0/24 通过 Vlan10 直连
- 192.168.20.0/24 通过 Vlan20 直连
路由表里有这两条直连路由,说明三层转发路径已经打通了一半。剩下的就是测试两台PC能否互相访问。
3.4 第四步:验证实验结果
在PC1上用ping命令测试到PC2的连通性:
PC1> ping 192.168.20.10如果配置全部正确,应该能看到四个Reply。这个结果证明三层交换机已经成功在VLAN 10和VLAN 20之间做了路由转发。
也可以在三层交换机上直接ping两台PC的IP来验证SVI的可用性:
Switch# ping 192.168.10.10 Switch# ping 192.168.20.10如果这两个ping都通,说明是PC的网关配置或防火墙导致的问题;如果其中一个不通,就要按下一节的排查思路逐层检查了。
4. 实验中容易踩的坑与排查方法
4.1 现象一:同一VLAN能通,跨VLAN不通
这种表现说明二层配置没有问题,问题大概率出在三层。检查顺序:
先用show ip route看看路由表里有没有两条直连路由。如果VLAN 20的网段不在路由表里,说明这个VLAN的SVI没配好或者SVI的no shutdown没敲,也可能这个VLAN里头没有任何up的物理端口。
再检查ip routing开了没有。很多人配完SVI之后忘了敲这一句,结果路由表里孤零零只有一条直连路由,跨VLAN的包根本不知道该往哪儿转。
4.2 现象二:SVI接口始终是down/administratively down
SVI的up状态依赖对应VLAN里的物理端口。如果VLAN 10里没有任何Access端口处于up状态,那么VLAN 10这个SVI就算配置了IP,也会显示为down。
解决办法很直接:确认端口已经用switchport access vlan 10划入VLAN 10,并且物理链路本身是连通的。在模拟器里,把PC用直连线插到交换机的fa0/1口,只要PC网卡是up的,对应端口状态就会变成up。
4.3 现象三:配置完成后PC还是ping不通网关
PC无法ping通网关,先排除配置错误,再排查硬件链路。看一眼PC的IP地址、子网掩码、网关配置是不是跟规划表完全一致。最容易出的错是网关写成了另一台PC的IP,或者子网掩码敲成了255.255.255.0写成255.255.0.0,这些低级错误在实验中最常见。
4.4 常见问题速查表
| 问题现象 | 可能原因 | 排查命令/处理方式 |
|---|---|---|
| 跨VLAN ping不通,同VLAN能通 | ip routing未开启 | show ip route检查路由表,然后用ip routing开启 |
| 路由表中缺少VLAN网段 | SVI未配置或未激活 | 用show interface vlan 10查看状态,确认no shutdown |
| SVI显示为down | 对应VLAN无up的物理端口 | 检查Access端口划分和物理链路 |
| PC ping不通网关,同VLAN主机也ping不通 | PC的IP/掩码/网关配置错误 | ipconfig查看PC配置,逐一核对 |
| 接口显示为err-disabled | 端口安全或环路导致 | shutdown再no shutdown恢复;检查拓扑是否有环 |
| 配置保存后重启配置丢失 | 未保存配置 | 使用copy running-config startup-config |
5. 三层方案与单臂路由方案的对比总结
做VLAN间路由,其实有三条路可以走:传统路由器单臂路由、三层交换机SVI、三层交换机路由口。各有各的适用场景。
单臂路由的优势是路由器本身有丰富的ACL和NAT能力,安全策略配置灵活,适合VLAN数量少、跨VLAN流量不大的环境。缺点是性能受限于路由器单端口带宽,而且每加一个VLAN就要加一个子接口,配置管理和后续维护都麻烦。
三层交换机SVI适合VLAN数量多、转发流量大的场景。交换机本身拥有二层线速交换能力,三层转发也通过硬件完成,性能远超路由器。而且SVI配置可扩展性好,每多一个VLAN只需要多加一条SVI配置,不需要改物理连接。
三层交换机路由口的方案适合连接两个三层网络,比如交换机上联核心路由器,这时可以把物理口改成三层口,直接配IP,相当于把交换机当成一台路由器用。缺点是一个物理口只能配一个IP,不像SVI可以一个VLAN对应一个。
从实验角度讲,SVI方案是最值得掌握的,因为它在实际网络中最常用也最实用。
6. 实验心得
这个实验做完之后,最大的感受是三层交换机的配置并不复杂,真正难的是把二层和三层的工作机制搞明白。SVI为什么能当网关、ip routing开启的是什么、路由表里的直连路由怎么来的,这几个问题一旦想通了,VLAN间路由的配置就变成了一件水到渠成的事。
踩过的坑里,最值得提醒的就是别跳过验证步骤直接看结论。每次改动配置之后,用show running-config、show ip route、show vlan brief逐一确认,比在PC端反复ping更高效。还有一个细节:做完实验之后一定要执行copy running-config startup-config,在模拟器里尤其重要,否则重启之后又得从头敲一遍。
扩展思路上,做完这个实验可以继续尝试给三层交换机配置DHCP服务,让每个VLAN动态分配IP地址,这其实是同一个网络需求的延伸。再进一步,还可以在同实验拓扑上跑一个动态路由协议,比如RIP或OSPF,把三层交换机的路由功能继续玩透。当初我学VLAN间路由的时候,只顾着让两台PC能ping通就结束了,后来才知道真正工作里还要考虑冗余链路、链路聚合、ACL控制策略,这些后续实验加进来,整个网络架构才算立起来。