做网络实验久了你会发现真正难的不是某个命令怎么写而是搞清楚为什么需要这个命令。VLAN间路由配置就是典型例子。很多初学者会困惑VLAN不是已经把广播域隔离了吗为什么还要路由VLAN之间明明物理上连着同一台交换机为什么PC就是ping不通这些问题恰恰是三层交换机存在的意义所在。这篇内容聚焦三层交换机实现VLAN间路由配置这条主线我会从概念拆解、拓扑设计、完整配置命令、到最后的排错实录把整个链路讲透。不管你是准备网络考试、做课程实验还是在公司里实际规划办公网都能拿这套方法直接落地。全程以思科设备为例模拟器就能复现。1. 为什么突然聊三层交换机VLAN间路由1.1 VLAN隔离之后通信需求从哪来VLAN的核心价值是隔离广播域。一个二层广播帧只在同一个VLAN内部传播这样既减少了广播风暴的影响范围也便于按部门、按功能划分网络。比如财务部的PC在VLAN 10办公区的PC在VLAN 20两边互不干扰。但隔离不是目的业务才是。实际场景里财务应用要访问ERP服务器、办公PC要连接共享打印机数据不可能永远困在各自的VLAN里。两个VLAN之间要通信就必须有路由——也就是根据IP地址做跨网段转发。这就是VLAN间路由Inter-VLAN Routing的由来。它解决的核心问题是同一台交换机上不同VLAN的终端如何互相访问。实现方式有两种主流方案一是单臂路由二是三层交换机SVI。我强调一下理解为什么需要路由比背命令重要得多。很多人配置做完ping不通第一反应是怀疑命令敲错了其实问题往往出在没搞懂VLAN间路由的本质二层靠VLAN隔离三层靠IP路由打通。两者缺一不可。1.2 单臂路由与三层交换机的取舍单臂路由的经典做法是二层交换机把所有VLAN的流量通过一条trunk链路送到路由器的一个物理接口路由器上配置多个子接口Router-on-a-Stick每个子接口对应一个VLAN网关从而完成路由转发。这个方案在实验和考试里非常常见但放到真实生产环境就有些吃力。所有VLAN之间的流量都要挤在一条链路上进出路由器既要处理二层封装拆封又要做三层路由查找CPU压力大吞吐量也受限。流量一旦变大瓶颈非常明显。三层交换机方案则把路由能力直接做进了交换机硬件里。它不需要额外拉一根线到路由器只需要在交换机上创建VLAN对应的SVISwitch Virtual Interface交换机虚拟接口为每个SVI配置IP地址作为该VLAN的网关再开启IP路由功能即可。对比两者的核心差异对比维度单臂路由三层交换机SVI转发性能依赖路由器CPU瓶颈明显由硬件ASIC芯片转发性能高得多链路占用单条trunk承载跨VLAN流量直接内部交换无外部链路压力配置复杂度子接口802.1Q封装SVI配置简单逻辑清晰适用场景小规模实验、临时网络中大型局域网核心层所以现在企业园区网的核心层几乎清一色采用三层交换机做VLAN间路由。实验环境里两种都值得做一遍但生产环境首选三层交换机。1.3 这篇内容适合谁如果你正在备考网络认证、在学校做网络课程设计、或者刚接触企业网络规划这篇内容可以直接当操作手册用。涉及的设备型号不用太纠结我以常见的Cisco 2960二层交换机和Cisco 3560三层交换机为例模拟器里选相近设备都行。命令行的思路在所有支持SVI的交换机上都是通用的。2. 实验拓扑设计与设备选型准备2.1 拓扑怎么搭一台三层交换机加一台二层交换机先说拓扑。不用搭得太复杂一台三层交换机、一台二层交换机、几台PC就足够把VLAN间路由的完整流程跑通。我用的是一个模拟某小型办公网的拓扑三层交换机3560作为核心同时也承担VLAN间路由职责。二层交换机2960作为接入层连接各个终端的PC。二层交换机通过一条GigabitEthernet链路比如Gi0/1向上连接三层交换机的Gi0/1口。VLAN 10分配给办公区PCVLAN 20分配给财务区PC。三层交换机上分别配置VLAN 10和VLAN 20的SVI接口地址192.168.10.1和192.168.20.1。终端侧规划如下设备所属VLANIP地址网关说明PC-AVLAN 10192.168.10.10/24192.168.10.1办公区终端PC-BVLAN 20192.168.20.10/24192.168.20.1财务区终端注意终端的网关必须指向对应VLAN的SVI IP这是很多人漏配的重点。二层交换机与三层交换机之间的链路要配置成trunk模式承载VLAN 10和VLAN 20的流量同时通过。三层交换机接PC的接口不需要因为PC直接接在二层交换机上。模拟器里我用的是Cisco Packet Tracer设备选型时注意2960是纯二层交换机没有SVI路由能力所以不能拿它当三层设备用。3560要选支持高级IP Services镜像的型号否则可能没有SVI相关功能。2.2 设备配置前的梳理动手配置之前先把两个关键点想清楚封装协议和路由功能。二层交换机与三层交换机之间的trunk链路需要封装802.1Q标准协议。Cisco早期有私有的ISL封装但现在的主流设备全部默认dot1q模拟器环境里直接启用dot1q即可。如果封装不匹配trunk链路会起不来VLAN流量全部丢光。三层交换机还需要开启IP路由功能。命令是ip routing。很多初学者配置完SVI地址发现ping不通就是因为这个全局命令没敲。SVI三层接口配置了IP之后默认处于down状态除了要no shutdown之外还需要有激活条件——后面我会详细讲。另外提一句三层交换机的每一个物理接口默认也是二层接口switchport如果要当作路由口接路由器或直接配置IP需要执行no switchport。但本次实验里三层交换机与二层交换机之间走的是trunk二层链路所以不需要动接口模式按默认二层配置即可。3. 基础VLAN配置把二层那一摊先捋顺3.1 在二层交换机上创建VLAN并划分端口在二层交换机上先创建VLAN并给它命名。命名不是必需的但养成好习惯方便后期维护。Switchenable Switch#configure terminal Switch(config)#vlan 10 Switch(config-vlan)#name Office Switch(config-vlan)#exit Switch(config)#vlan 20 Switch(config-vlan)#name Finance Switch(config-vlan)#exit然后划分端口。假设PC-A接在Fa0/1口PC-B接在Fa0/2口Switch(config)#interface FastEthernet0/1 Switch(config-if)#switchport mode access Switch(config-if)#switchport access vlan 10 Switch(config-if)#exit Switch(config)#interface FastEthernet0/2 Switch(config-if)#switchport mode access Switch(config-if)#switchport access vlan 20 Switch(config-if)#exit这里有个容易踩的坑switchport mode access这条命令最好先执行再设置switchport access vlan。如果端口原本是trunk模式或动态模式直接设access vlan有时会有意外行为。模拟器里虽然不一定出问题但真实设备上顺序写清楚更稳妥。3.2 配置trunk链路二层交换机上连三层交换机二层交换机的Gi0/1口用于上联三层交换机需要配置成trunkSwitch(config)#interface GigabitEthernet0/1 Switch(config-if)#switchport mode trunk Switch(config-if)#switchport trunk encapsulation dot1q在Packet Tracer中switchport trunk encapsulation dot1q这条命令在2960上可能不受支持或默认就是dot1q。真实设备上如果看到switchport mode trunk报错提示封装格式问题就先手动指定dot1q。这一点不同IOS版本表现不一样不必死记关键是理解这个动作的含义。三层交换机侧同样要把Gi0/1配置为trunk否则两边VLAN信息无法共享Switch-3560enable Switch-3560#configure terminal Switch-3560(config)#interface GigabitEthernet0/1 Switch-3560(config-if)#switchport mode trunk Switch-3560(config-if)#switchport trunk encapsulation dot1q配置完可以用show interfaces trunk检查trunk状态正常情况下能看到Gi0/1处于trunking模式并且VLAN列表里包含VLAN 10和20。如果VLAN列表里空空如也最常见的原因是VLAN没有在交换机上创建。3.3 二层链路验证接通线缆只是第一步二层基础配完以后先不要急着给三层交换机配SVI先做一轮链路验证。用show vlan brief在二层交换机上看VLAN信息Switch#show vlan brief VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1 default active Fa0/3, Fa0/4, ... 10 Office active Fa0/1 20 Finance active Fa0/2 1002 fddi-default act/unsup 1003 token-ring-default act/unsup 1004 fddinet-default act/unsup 1005 trnet-default act/unsup再在二层交换机和三层交换机上分别看trunk状态。两端都处于trunkingVLAN列表包含所需VLAN才算把二层基础打牢。此时同VLAN内的PC应该能互相ping通例如PC-A能ping通同一VLAN 10的另一台终端。如果同VLAN都ping不通问题基本都在二层先别碰三层配置。4. 三层交换机SVI配置核心步骤4.1 SVI到底是什么SVI全称Switch Virtual Interface中文常译作交换机虚拟接口。可以把它理解成交换机为某个VLAN创建的虚拟网卡交换机在这个VLAN里拥有一个IP地址成为该VLAN内所有终端的网关。终端要跨VLAN通信把数据包发给网关也就是SVI地址再由三层交换机负责路由转发。一个VLAN对应一个SVISVI的IP网段就是这个VLAN的网关网段。创建SVI的前提是该VLAN已经存在否则你进入不了对应的interface vlan视图。SVI创建后处于down状态直到该VLAN内至少有一个up的二层端口或trunk链路承载该VLAN它才会变为up。这里有个特别重要的细节SVI的up/down状态与VLAN的活跃程度绑定。如果某个VLAN没有任何接口属于它创建SVI后它的状态通常会是 down/downIP虽然配了但永远ping不通。这在排错时是高频坑点。4.2 三层交换机完整配置步骤在三层交换机上执行如下配置。假设已经创建好VLAN 10和VLAN 20trunk链路也已配置完成Switch-3560enable Switch-3560#configure terminal Switch-3560(config)#ip routing Switch-3560(config)#interface vlan 10 Switch-3560(config-if)#ip address 192.168.10.1 255.255.255.0 Switch-3560(config-if)#no shutdown Switch-3560(config-if)#exit Switch-3560(config)#interface vlan 20 Switch-3560(config-if)#ip address 192.168.20.1 255.255.255.0 Switch-3560(config-if)#no shutdown Switch-3560(config-if)#exit Switch-3560(config)#exit Switch-3560#write memory逐个命令解释ip routing开启三层交换机的路由功能。默认状态下三层交换机只做二层交换不开这条命令SVI只相当于一个带IP的二层接口不会做跨VLAN路由。interface vlan 10进入VLAN 10对应的SVI接口视图。前提是VLAN 10已经创建。ip address 192.168.10.1 255.255.255.0为SVI配置IP地址和掩码作为VLAN 10终端的网关。no shutdown有些设备默认SVI不自动激活。手工执行一次更保险。write memory保存配置避免模拟器或真机重启后配置丢失。注意在配置SVI的过程中如果interface vlan 10提示不存在说明VLAN还没创建先回到全局配置模式创建VLAN再回来。4.3 路由表VLAN间路由的转发依据配置完成后最好看一眼三层交换机的路由表这是理解SVI路由的关键一步Switch-3560#show ip route输出里应该能直接看到两条直连路由C 192.168.10.0/24 is directly connected, Vlan10 C 192.168.20.0/24 is directly connected, Vlan20C代表直连路由Connected。三层交换机把SVI接口所在的网段当作直连网段写进路由表。PC-A要访问PC-B数据包先到网关192.168.10.1三层交换机查路由表发现192.168.20.0/24直连在Vlan20于是从Vlan20 SVI转发出去。这就是整个VLAN间路由的转发原理。理解这一步很重要。很多人在排查三层交换机VLAN间路由问题时第一反应就是去看访问控制列表或端口配置其实最该先看的是路由表。直连路由在说明三层接口与VLAN的关联是正常的。5. 验证与排错ping通只是开始5.1 从PC出发逐层验证的排查方法配置完成开始验证。先做一次最基础的连通性测试在PC-A上ping PC-B的IP地址192.168.20.10。如果能通恭喜你VLAN间路由全部打通。如果ping不通别急着一路乱试按下面的顺序逐层排查第一步验证网关连通性。在PC-A上ping自己的网关192.168.10.1。如果网关都ping不通问题集中在三层交换机SVI配置。检查SVI状态是否为upshow interfaces vlan 10可以查看详细状态。如果SVI显示down说明VLAN 10在二层没有活跃端口或trunk没有正确承载VLAN 10。第二步验证trunk链路。如果网关能通但跨VLAN不通检查三层交换机与二层交换机之间的trunk。两端都要show interfaces trunk确认VLAN列表里包含VLAN 10和20。trunk只允许了部分VLAN跨VLAN通信必断。第三步验证PC的网关配置。很多人把PC的网关填错比如VLAN 10的PC填了192.168.20.1数据包出去找不到正确网关自然通信失败。实验环境里这一步用ipconfig检查一下就行。第四步验证路由表。三层交换机上show ip route确认两条直连路由都在。如果缺某条说明对应VLAN的SVI没配好或VLAN不活跃。5.2 常见问题速查表把我在这个实验里见到的高频问题整理成了表格方便对照排查现象可能原因排查手段SVI接口down/downVLAN无活跃二层端口trunk未承载该VLANshow vlan brief; show interfaces trunk网关ping不通SVI未配置IPno shutdown未执行VLAN未创建show interfaces vlan 10; show running-config同VLAN能通跨VLAN不通ip routing未开启PC网关配置错误show ip route; ipconfigtrunk接口errdisable封装不匹配端口模式配置冲突show interfaces status; 两端核对配置配置完路由器/交换机重启后失效未保存配置write memory 或 copy running-config startup-config这里面最容易忽略的就是ip routing这条命令。Packet Tracer里面有些三层交换机型号默认也没开路由功能你不主动敲它就一直只做二层转发。5.3 我踩过的几个坑第一个坑SVI配好IP之后忘了给端口做no shutdown。在真实设备上SVI接口刚创建时不一定自动up有些IOS版本需要手动启用。模拟器里有时能通纯属环境宽松绝不能当成理所当然。第二个坑trunk链路忘配。只给二层交换机配了trunk三层交换机侧还是access模式结果VLAN 10和VLAN 20的流量根本到不了三层交换机SVI地址连ping都不通。查trunk状态时一定要两端一起看只查一边很容易被看起来正常骗过去。第三个坑PC终端配置静态IP时忘了把掩码从255.255.255.0改成对应网段的。有一次我照着192.168.10.0/24的规划结果PC掩码填了255.255.255.128网关192.168.10.1根本不在同一网段导致网关不可达。这类基础错误最浪费排查时间建议先做设备配置审计再怀疑协议问题。6. 扩展思考三层交换机的更多可能性6.1 从VLAN间路由到ACL访问控制VLAN间路由打通之后很多场景会接着提一个需求某些VLAN之间要限制访问。比如VLAN 20财务区只允许办公区访问服务器端口不允许办公区访问其他财务终端。三层交换机上可以通过ACL访问控制列表配合SVI接口实现这个需求。思路是把ACL应用在VLAN的SVI接口的inbound或outbound方向对跨VLAN流量做过滤。举例来说Switch-3560(config)#ip access-list extended OFFICE_TO_FIN Switch-3560(config-ext-nacl)#permit tcp 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255 eq 443 Switch-3560(config-ext-nacl)#deny ip 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255 Switch-3560(config-ext-nacl)#exit Switch-3560(config)#interface vlan 20 Switch-3560(config-if)#ip access-group OFFICE_TO_FIN in这样VLAN 20的SVI入口方向上就只放行了从办公网到财务网443端口的流量。这个思路在实际网络规划中非常实用但要注意ACL执行顺序是上到下匹配permit必须写在deny前面否则全被deny干掉。6.2 关于SVI的进一步认识SVI不仅用于VLAN间路由还能承担很多职责配置DHCP中继、作为三层网关启用VRRP/HSRP做冗余、绑定ACL做安全过滤。理解SVI的工作机制实际上就抓住了三层交换机的一大半核心功能。如果以后要接触真正的园区网核心设备你会发现SVI数量可能多达几十上百个对应的VLAN划分也更复杂。但基本原理就是本文实验做的这些VLAN对应三层接口三层接口之间通过路由表转发。另外一个值得做的扩展实验是三层交换机直接接路由器上联外网。这时三层交换机作为内网网关和核心内部VLAN间路由靠SVI去往外网的流量则通过一条默认路由指向路由器。这个形态非常接近小型企业的标准出口架构。6.3 实验后的收尾建议实验做完建议故意把配置清掉重做一遍不看笔记试着从头到尾把命令敲出来。第一遍照着敲第二遍凭理解敲两遍下来VLAN间路由的整个流程会牢牢记在脑子里。这个方法比反复看文档有效得多。另外建议在模拟器里尝试改变拓扑和IP规划比如把VLAN改成10、11、12三个观察多VLAN间的路由行为。只在两个VLAN上做实验很多细节不容易暴露出来。多VLAN的拓扑会让你更直观地理解每个VLAN一个网关网段的含义。我个人在实际配置中的体会是三层交换机配置VLAN间路由这件事难点从来不在命令本身而在于对二层与三层协作机制的理解。trunk链路负责把VLAN信息传到三层交换机SVI负责把VLAN与IP网段关联ip routing负责让交换机真正干路由的活。三个环节环环相扣哪一个没到位最终都表现为ping不通。把这个链路想清楚不管换什么设备、什么模拟器配置思路都不会变。