做了无数次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 10PC2划分到VLAN 20。设备接口VLANIP地址网关三层交换机VLAN 10接口10192.168.10.1/24-三层交换机VLAN 20接口20192.168.20.1/24-PC1接入交换机接口10192.168.10.10/24192.168.10.1PC2接入交换机接口20192.168.20.10/24192.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 downSVI的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 shutdownSVI显示为down对应VLAN无up的物理端口检查Access端口划分和物理链路PC ping不通网关同VLAN主机也ping不通PC的IP/掩码/网关配置错误ipconfig查看PC配置逐一核对接口显示为err-disabled端口安全或环路导致shutdown再no shutdown恢复检查拓扑是否有环配置保存后重启配置丢失未保存配置使用copy running-config startup-config5. 三层方案与单臂路由方案的对比总结做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控制策略这些后续实验加进来整个网络架构才算立起来。