
1. 项目背景VLAN划分之后东西怎么互通做网络的人几乎都绕不过一个场景——公司部门多了办公区、研发区、服务器区需要隔离于是你用VLAN把广播域切开了。隔离是隔离了但麻烦也来了研发要访问服务器区的数据库办公电脑要打开内网OA这些请求全都跨了VLAN而VLAN天生是隔离的二层根本不通。项目标题里的“三层交换机实现VLAN间路由”解决的就是这个事。它用一台三层交换机既承担VLAN的二层转发又承担跨VLAN的三层路由把原本需要“路由器交换机”两套设备的活儿合并到一台设备里完成。相比传统方案它更省设备、更省链路、延迟更低是目前园区网、企业接入层以上最主流的部署方式。这篇文章适合谁看刚接手公司网络运维、正在准备网络认证、或者单纯想搞明白“为什么VLAN间能通了”的读者。我不会堆命令让你抄而是把原理、配置、排查一条线串起来保你看完能自己动手、自己排错。先明确几个前提文中配置以常见的三层交换机为对象命令风格贴近主流厂商通用语法具体型号会有拼写差异但思路完全一致。拓扑上我们规划一个最典型的场景三层交换机做核心下挂两台二层接入交换机划分三个业务VLAN实现三个网段之间互通。2. 核心原理拆解三层交换机是如何“既二层又三层”的2.1 为什么路由器做VLAN间路由不划算在解释三层交换机的优势之前先回顾一下路由器方案。传统的VLAN间路由有两条路一条是“路由器二层交换机”的经典架构每个VLAN拉一根物理线接到路由器接口路由器有多少接口就能路由多少VLAN。这种做法最大的问题是物理接口消耗快——三个VLAN占三个口十个VLAN就得十个口扩展性极差。另一条是单臂路由所有VLAN共用一根Trunk线接到路由器路由器上用子接口如 eth0.10、eth0.20终结各个VLAN然后配置路由。一条Trunk链路承载所有VLAN流量省钱省口但瓶颈非常明显所有跨VLAN流量都汇聚在这一条物理链路上带宽被共享路由器处理每个报文都要走“收包—查路由—重写MAC—发包”的软件流程转发性能有限一旦Trunk链路或路由器接口故障所有VLAN间通信全部中断单点故障严重。实测过单臂路由环境的读者应该有感受流量一上来CPU占用飙高延迟也跟着抖。原因在于路由器本质上是一个“软件转发设备”它的强项是丰富的路由协议和策略控制而不是线速转发。这种情况下三层交换机的出现几乎是必然选择。2.2 交换虚拟接口SVI的实质三层交换机和普通二层交换机最核心的差异就是它支持创建交换虚拟接口Switch Virtual Interface简称SVI。SVI是一个逻辑接口对应一个VLAN。创建了SVI之后这台交换机就有了一个属于该VLAN的IP地址这个IP就是该VLAN内主机的网关。比如你划分了VLAN 10网段是192.168.10.0/24给VLAN 10创建SVI并配置IP为192.168.10.254那么VLAN 10里的所有主机网关都指向192.168.10.254即可。当VLAN 10的主机要访问VLAN 20的主机时报文的目标MAC是网关的MAC——也就是SVI 20的MAC——三层交换机收到后直接查路由表把报文转到VLAN 20对应的SVI接口再交给目的主机。这里有个初学者容易困惑的点SVI接口对应的是整个VLAN而不是VLAN里的某一台主机。它相当于三层交换机在VLAN内部安插的一个“路由端口”。同一个VLAN内部的转发走二层跨VLAN的转发走三层一条路径上两种转发模式自然切换这就是三层交换机最核心的设计理念。2.3 一次路由多次交换很多人以为“三层交换机”就是在二层交换机上加了路由功能这个理解不够准确。真正让它区别于“路由器交换机缝在一起”的关键是它在硬件层面实现了路由转发的加速。三层交换机的转发流程可以概括为“一次路由多次交换”第一个跨VLAN的报文到达后三层引擎完成完整的三层路由查找确定出接口和下一跳信息这个结果被写入硬件转发表通常叫FIB表或邻接表后续所有去往相同目的网段的报文直接在硬件层面查表转发硬件查表的速度远高于软件路由所以三层交换机可以实现接近二层交换机的线速转发。这个设计让三层交换机在价格远低于同档次路由器的情况下获得了远超路由器的实际转发性能。这也是为什么在园区网核心、汇聚层你几乎看不到用路由器做VLAN间路由全是三层交换机一统天下。关于“一次路由多次交换”还有一句要提醒它指的是同一目的网段的数据流。如果你是跨不同目的的多条流每条流的首包仍然要走一次软件路由来建立缓存。所以实际项目中路由表规模和流量特征对三层交换机的性能仍然有影响不能拿它当无脑的神器用。3. 实操配置让三个VLAN互通的一次完整实施3.1 网络拓扑与IP规划动手之前先把规划定清楚。我们的模拟项目X定义为一个小型园区网络结构如下核心设备一台三层交换机型号按主流厂商通用框架来下联两个接入交换机接入交换机A承接办公区终端划分VLAN 10和VLAN 20接入交换机B承接服务器区终端划分VLAN 30三层交换机与接入交换机之间用Trunk链路连接所有VLAN都允许通过。IP规划VLAN网段网关SVI地址用途VLAN 10192.168.10.0/24192.168.10.254办公区终端VLAN 20192.168.20.0/24192.168.20.254研发区终端VLAN 30192.168.30.0/24192.168.30.254服务器区终端三层交换机上的互联地址规划如下上行口暂时不涉及模拟项目只做VLAN间路由不接外网如果需要上联出口路由器习惯上配置为三层接口或单独用一个VLAN承载互联地址这里不展开避免干扰主线。3.2 第一台接入交换机的配置接入交换机A上需要创建VLAN 10、VLAN 20并把连接终端的端口划为Access口连接核心的端口划为Trunk口。基础VLAN创建部分如下vlan batch 10 20如果设备不支持批量创建就分两条命令分别创建vlan 10 vlan 20把连接PC1办公区的端口划分到VLAN 10。假设PC1接在GE0/0/1口配置命令类似interface GigabitEthernet0/0/1 port link-type access port default vlan 10把连接PC2研发区的端口划分到VLAN 20interface GigabitEthernet0/0/2 port link-type access port default vlan 20连接核心交换机的那条链路我们假设接在GE0/0/24口配置为Trunk并放行VLAN 10和VLAN 20interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20这里有个非常关键但新人容易漏的点Trunk口的默认行为因设备而异。有些设备默认放行所有VLAN有些默认只放行VLAN 1。如果你不确定就显式写允许列表不要依赖默认值。实测中因为“默认允许VLAN列表”理解不一致导致VLAN不同的问题占了跨交换机排障场景的三成以上。3.3 第二台接入交换机的配置接入交换机B只负责服务器区VLAN 30单独一个vlan 30服务器端口接在GE0/0/1划为Access口interface GigabitEthernet0/0/1 port link-type access port default vlan 30上联口GE0/0/24配置Trunk放行VLAN 30interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 30两台接入交换机此时已经准备好了接下来是三层交换机的主场。3.4 三层交换机的核心配置与SVI创建三层交换机上做三件事创建VLAN、给VLAN配置SVI地址、把下行链路配置成Trunk放行对应VLAN。首先创建三个VLANvlan batch 10 20 30然后创建SVI接口并配置IP。不同厂商命令不同但逻辑一致都是进入Vlanif接口或VLAN接口配置IP地址interface Vlanif10 ip address 192.168.10.254 255.255.255.0interface Vlanif20 ip address 192.168.20.254 255.255.255.0interface Vlanif30 ip address 192.168.30.254 255.255.255.0再配置两条下行Trunk。假设接入交换机A接在三层交换机的GE0/0/1口配置如下interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20接入交换机B接在GE0/0/2口interface GigabitEthernet0/0/2 port link-type trunk port trunk allow-pass vlan 30到这里整个VLAN间路由的物理和逻辑通路就已经打通了。3.5 验证连通性配置完成后不要急着用终端去ping先在交换机上做基础验证。查看SVI接口状态和IP分配情况display ip interface brief正常你会看到Vlanif10、Vlanif20、Vlanif30三个接口的IP都在状态是up。如果某个接口状态显示down先检查对应VLAN是否创建、Trunk是否放行。然后从三层交换机直接ping各VLAN的网关确认底层三层通畅。再从VLAN 10的PC1去ping VLAN 30的服务器地址。正常情况下源PC发出报文目标MAC为网关MAC三层交换机查路由表找到Vlanif30接口转发报文服务器回包同样经过三层交换机整个链路就通了。如果这里通了但PC1 ping不通VLAN 20的PC2先检查PC2的网关配置是不是192.168.20.254再检查目标PC的防火墙是否拦截了ping报文。Windows默认放行pingLinux某些发行版默认不开ICMP回应这一点在跨VLAN测试时经常造成误判。3.6 静态路由的补充说明如果你的网络只有一台三层交换机所有VLAN都在本机终结SVI配置完成后不需要额外写任何路由因为直连路由自动生成。但如果后续加了第二台三层交换机、或者上联了出口路由器情况就变了目标网段不在本机的SVI网段内必须在核心设备上补充静态路由或运行动态路由协议。举例来说上联出口路由器的网段是192.168.254.0/30需要访问外网就得写一条默认路由指向对端互联地址ip route-static 0.0.0.0 0.0.0.0 192.168.254.1跨三层交换机之间如果VLAN网段很多逐条写静态路由会非常痛苦此时建议启用OSPF或等价路由协议。但这是另一个话题本文点到为止。4. 常见问题与排查技巧实录4.1 VLAN间ping不通逐个环节排除我在实际维护中最常碰到的排障场景就是“VLAN间Ping不通”。遇到这种问题我习惯按自下而上的顺序查第一步查物理链路。查看端口状态是否up物理层有没有 down。端口down就查网线、光模块、对端设备是否供电正常。这一层问题最容易解决也最容易被忽略。第二步查VLAN划分。在接入交换机上查看端口的PVID和允许VLAN列表。常见错误是把Access口的PVID配错或者Trunk口忘记放行对应VLAN。可以查VLAN信息确定端口归属display vlan第三步查SVI状态。三层交换机上查看Vlanif接口是否upIP地址是否配置正确。接口down往往是因为VLAN内没有任何up的二层端口或者未创建对应VLAN。第四步查网关配置。终端上的网关IP、掩码、本机IP三者必须匹配。这里有个很典型的错误终端IP配了192.168.10.100掩码255.255.255.0网关却填了192.168.20.254数据包出了门就找不到北必须严格对照规划表检查。4.2 常见错误不同类型端口、PVID与VLAN列表的不匹配跨交换机VLAN互通最容易错的地方在Trunk口。有一类新手特别容易踩的坑Trunk口上配置了允许VLAN列表但忘了配置PVID。Trunk口默认PVID是VLAN 1如果对端设备在VLAN 10发来不带Tag的帧本端会把帧当成VLAN 1处理导致无法互通。解决思路是明确你整个链路中哪些帧是带Tag的、哪些是不带Tag的。Access口发出的帧不带TagTrunk口发出的帧除了PVID对应的VLAN以外都带Tag。理解这一点很多配置层面的“灵异事件”都能解释清楚。4.3 广播风暴与环路风险VLAN间路由配置完成后网络稳定性测试要跟上。尤其是接入层交换机如果启用了STP生成树协议而三层交换机没有启用或者根桥选择不合理环路风险会被放大。实话说很多小型项目为了省事直接关了STP这在纯二层无环拓扑下没问题但如果你有冗余链路就千万别关否则一个广播风暴能把整台三层交换机的CPU打满。我还遇到过一种情况交换机端口同时配置了Access和Trunk的混合用途某台设备既连接终端又连接另一台交换机造成VLAN信息混乱。这类结构性问题端口角色必须明确不要一端口多角色否则后期故障极难排查。4.4 排查命令速查表排查目标推荐命令关注点接口状态与VLAN归属display port vlan端口模式、PVID、允许VLAN列表Trunk放行情况display interface trunk各VLAN是否通过、PVID是否正确SVI接口与IPdisplay ip interface brief接口up/down、IP分配路由表查询display ip routing-table直连路由是否生成、有无缺路由ARP解析display arp网关MAC、主机MAC是否正常学习抓包定位终端抓包 / 端口镜像报文是否到达、网关是否回包4.5 安全补充VLAN间ACL实现VLAN间路由后管理上还有一个细节——并不是所有VLAN之间都应该无条件互通。办公区访问服务器区的数据库业务合理但研发区访问财务系统可能就不合理。此时可以在三层交换机上配置ACL做VLAN间访问控制。常见做法是在SVI接口的入方向或出方向应用ACL规则限制特定网段之间的流量。举个例子禁止VLAN 10访问VLAN 30的管理端口acl number 3000 rule 5 deny tcp source 192.168.10.0 0.0.0.255 destination 192.168.30.0 0.0.0.255 destination-port eq 23 rule 10 permit ip然后在Vlanif30接口的入方向应用interface Vlanif30 traffic-filter inbound acl 3000这个思路在各厂商设备上都大同小异。安全策略建议在项目初始就规划好别等上线后再补救。否则每次加规则都要重新评审流量影响非常被动。5. 项目本质解读三层交换机的核心价值与选型思考5.1 为什么说它解决了网络的核心痛点回到项目标题本身“通过三层交换机实现VLAN间路由”这个描述本质上是在解决企业网络建设中三个核心痛点第一个痛点是设备成本。传统方案下一个多VLAN网络需要一台路由器加多台交换机而三层交换机一台设备同时具备路由和交换能力设备数量直接减半。设备少了运维成本跟着降低故障点也少了。第二个痛点是性能瓶颈。单臂路由模式下所有跨VLAN流量都挤在一条链路上而三层交换机每个VLAN的SVI接口都可以独享背板带宽流量模型更加合理。第三个痛点是扩展性。三层交换机上新增一个VLAN只需要创建一个VLAN和一个SVI接口不涉及物理线路变化。对比单臂路由每扩展一个VLAN都要在路由器上新增子接口并重新配置Trunk封装复杂度高出一截。5.2 三层交换机的适用边界三层交换机并非万能它也有明显的短板。了解短板才能选对设备。第一三层交换机虽然能跑OSPF、BGP等动态路由协议但路由能力相比同价位的专业路由器要弱一些。如果网络规模巨大、路由条目数量达到数万级三层交换机的硬件转发表会很快耗尽此时必须换成高端路由器或更高规格的核心交换机。第二三层交换机对NAT的支持能力普遍有限。小型办公环境如果你需要做地址转换上外网通常还是需要一台出口路由器或防火墙来做NAT而不是让三层交换机硬扛。第三三层交换机在策略控制方面不如防火墙精细。如果你需要基于应用层的访问控制、入侵检测、病毒防护这些东西不是三层交换机的强项应该在网络边界部署独立安全设备。5.3 从三层交换机开始延伸的网络设计思路基于这个项目往后延伸你会慢慢接触到更完整的网络架构。三层交换机在分层模型中通常扮演汇聚层或核心层的角色接入层二层交换机负责终端接入和VLAN划分汇聚层三层交换机负责VLAN间路由、策略控制、流量汇聚核心层更高性能的三层交换机或路由器负责高速转发和跨区域路由。在小型网络中核心和汇聚可以由同一台三层交换机承担。中大型网络中则要物理分离每一层各司其职。我处理过一个模拟项目X的改造原先网络用的是单臂路由器方案接入终端超过200台之后路由器CPU长期高负载跨VLAN延迟动不动跳到上百毫秒。后来把这台路由器撤下换成一台三层交换机做核心VLAN间延迟直接降到1毫秒以内整体体验完全两个档次。这个案例是最好的实践注脚。6. 实操总结与个人经验补充整个项目写下来其实核心内容就三块理解VLAN间路由的需求背景、搞懂SVI和硬件转发原理、能独立完成交换机和三层交换机的配置。原理清楚了配置只是体力活原理模糊配置就全靠试错。我个人的建议是如果你正在学习这块内容别急着在模拟器里刷命令先在一张纸上把拓扑图画清楚IP规划表写完整再动手敲配置。网络这行所有的坑八成以上都出在规划不清晰而不是命令敲错。另外提醒一点上真机之前一定要确认设备型号和系统版本对应的命令语法。不同厂商、甚至同一厂商不同系列命令都有差异。我见过有人拿着某型号配置文档去另一型号上敲结果接口命令都不存在折腾半天发现是文档版本不对。养成先看system-view模式下的“”帮助和版本说明的习惯能省很多无谓的时间。如果你按照本文的步骤完成了配置并成功实现了三个VLAN互通那么恭喜你已经掌握了园区网络里最核心的一环。后续可以继续研究动态路由、VRRP冗余、DHCP中继、QoS这些进阶话题它们都是在三层交换机这片地基上盖房子。地基扎实了房子想盖多高都好说。