ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

VLAN间路由实战:从单臂路由到三层交换机SVI配置与排障

VLAN间路由实战:从单臂路由到三层交换机SVI配置与排障 这是《网络工程师笔记》系列的第五篇定位很明确初级网络工程师的实操进阶。前四篇我们一直在二层圈子里打转——广播域、交换机端口类型、VLAN划分、生成树那些事本质上都是“怎么把一个局域网切得更干净”。但从这一篇开始我们要迈过一道分水岭VLAN切完之后不同部门怎么互相访问办公室的同事为什么死活访问不了隔壁VLAN里的打印机这个问题的标准答案就是VLAN间路由。这篇笔记不玩虚的直接围绕单臂路由和三层交换机SVI两种打通VLAN的方法展开会带上完整配置、验证命令、对比选型以及我实际排障时走过的完整链路。适合刚接触路由功能、想把三层网络真正跑起来的Junior工程师也适合做网络运维但一直靠“重启解决一切”的朋友。1. 为什么二层隔离之后反而需要三层转发VLAN间路由的本质1.1 广播域隔离带来的副作用我们先回到一个朴素的问题VLAN到底为了解决什么最直接的答案是隔离广播域。如果没有VLAN交换机上所有端口都在同一个广播域里一台设备发送ARP广播整个网络的设备都要停下手里的活听一下。假设公司500台设备全在一个二层平面里每隔几秒就有一台设备吼一嗓子“谁是192.168.1.1”网络噪声会非常夸张更别说出现广播风暴时整网瘫痪的场面。所以VLAN把不同部门、不同业务隔开销售部VLAN 10、服务器区VLAN 20、访客网络VLAN 30。广播被限制在各自VLAN内部互相不干扰。安全上也更干净——默认情况下两个VLAN之间连个包都送不出去想互访必须经过我方的明确授权。但问题也随之而来用户根本不在乎你划了几个VLAN他们要的就是“我要访问服务器”“我要访问打印机”。VLAN天生是二层隔离的这种隔离不会自己长出一条通路。于是你必须在隔离和互通之间架一座桥这座桥就是三层设备也就是路由器或三层交换机。1.2 二层决定邻居关系三层决定通路很多新手在这一步最容易犯迷糊。他们的疑问是交换机都能转发数据了为什么两个VLAN之间的包不直接转发原因很简单——交换机内部的转发依据是MAC地址表而MAC地址表里只会记录“某个MAC地址在哪个VLAN的哪个端口”。PC发给不同VLAN主机的数据包目标MAC地址根本不在MAC地址表中交换机没有能力也没有义务去做跨VLAN转发。数据包的走向是这样的PC发现目标IP不在自己的网段就会把包扔给默认网关。这时候网关必须是一个三层设备它查看自己的路由表知道目标网段往哪个方向走再把包路由过去。这个过程里二层交换解决的是“同网关下谁是谁”三层路由解决的是“不同网段之间怎么走”。理解了这一点后面配置单臂路由和SVI时就不会觉得是背命令而是在做一件逻辑上很自然的事。1.3 三类设备、两台网关的典型场景为了让后面的配置有画面感用一个典型的小型企业场景来贯穿全文。网络里规划了三个VLANVLAN 10办公终端段网关192.168.10.1/24VLAN 20服务器段网关192.168.20.1/24VLAN 30访客/无线段网关192.168.30.1/24交换机是二层交换机三台。要打通这三个VLAN最朴素的做法是一台路由器同时接入三台交换机用三个物理接口分别配置三个网段的IP。这种方法当然可行但浪费接口且扩展性极差。于是业界想出了两种更聪明的做法一种是单臂路由用一根Trunk线把所有VLAN的流量送进路由器另一种是直接用三层交换机在交换机内部完成路由。下面两章分别展开。2. 单臂路由一根Trunk线硬生生跑出三个网段2.1 单臂路由的原理基础子接口与802.1Q标签单臂路由的思路是物理上只有一根线但逻辑上让路由器为每个VLAN开一个“虚拟接口”。每个虚拟接口绑定一个VLAN并配上对应网段的网关IP。交换机侧把连接路由器的端口设为Trunk这样VLAN 10、20、30的数据帧都会被带上802.1Q标签送到路由器的物理口。路由器收到带标签的帧后根据标签里的VLAN ID决定交给哪个子接口处理。子接口就是一个逻辑接口比如GigabitEthernet0/0.10就是物理口GE0/0/1上属于VLAN 10的逻辑子接口。从网络角度来看相当于路由器有三个接口分别连着三个VLAN但实际上它们共用一根物理线。这里有一个新手特别容易忽略的坑在华为设备上子接口配置了VLAN封装之后默认不处理ARP广播报文必须开启arp broadcast enable否则PC可以ping通网关IP数据面正常但网关上ping不到PCARP请求被丢弃。思科设备默认没有这个问题所以网上看了杂七杂八的教程后容易在这类细节上栽跟头。2.2 华为与思科设备下的完整配置示例下面分别给出华为CE/S系列和思科IOS设备的单臂路由配置。开局前提交换机侧已经创建VLAN 10、20、30并把对应终端端口划入了各自VLAN连接路由器的物理口设为Trunk且允许这三个VLAN通过。先看我用华为设备时的配置写法# 交换机侧S5700为例 vlan batch 10 20 30 interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 30 # 路由器侧AR系列为例 interface GigabitEthernet0/0/1.10 dot1q termination vid 10 ip address 192.168.10.1 255.255.255.0 arp broadcast enable interface GigabitEthernet0/0/1.20 dot1q termination vid 20 ip address 192.168.20.1 255.255.255.0 arp broadcast enable interface GigabitEthernet0/0/1.30 dot1q termination vid 30 ip address 192.168.30.1 255.255.255.0 arp broadcast enable思科设备的写法差别不大但命令风格完全不同interface GigabitEthernet0/0.10 encapsulation dot1Q 10 ip address 192.168.10.1 255.255.255.0 interface GigabitEthernet0/0.20 encapsulation dot1Q 20 ip address 192.168.20.1 255.255.255.0 interface GigabitEthernet0/0.30 encapsulation dot1Q 30 ip address 192.168.30.1 255.255.255.0配置完成后PC的默认网关分别指向对应子接口的IP。VLAN 10的PC访问VLAN 20的服务器时数据包先到网关192.168.10.1路由器查路由表发现192.168.20.0/24直连在子接口.20上于是把包重新打上VLAN 20的标签从同一根物理线发回交换机交换机再转发给服务器。整个流程就这么跑通了。2.3 验证命令不要只会ping配置完之后不能光靠终端设备ping一下就算完事工程师必须习惯看中间设备的状态。我在验证单臂路由时固定的命令组合是查看子接口状态display ip interface brief确认.10/.20/.30的IP和物理状态都是UP。查看路由表display ip routing-table看192.168.10.0/24、192.168.20.0/24是不是以直连方式存在。查看VLAN信息display vlan确认交换机上VLAN和端口成员状态。查看Trunk端口display port trunk确认允许通过的VLAN列表是否恰当。如果PC能ping通自己的网关但ping不通另一VLAN的网关问题大概率出在Trunk配置或子接口VLAN封装不一致上。如果PC连自己网关都ping不通先查物理链路、Access口VLAN划分、终端IP和掩码一层层往上找。2.4 单臂路由的性能瓶颈适合实验不适合大流量单臂路由最大的问题是性能和单点故障。所有VLAN之间的流量都必须走同一根物理线、由同一个物理接口承担带宽天然被压缩。即使物理接口是1Gbps三个VLAN之间的总吞吐也会被这根线卡死。而且路由器转发性能远低于交换机尤其是小路由器大包多流的情况下很容易CPU飙升、延时抖动。我的建议是单臂路由适合学习、测试、以及小规模几十台终端的临时场景。真到了生产环境尤其是视频监控、文件服务器这类大流量业务频繁跨VLAN互访的场景老老实实上三层交换机更稳。这也是第三章要聊的方案。3. 三层交换机SVI把路由功能塞回交换机内部3.1 SVI是什么用VLANIF接口代替路由器子接口很多刚接触三层交换机的朋友会有个误解觉得三层交换机是一台“交换机加一台路由器”装在同一个盒子里。这个比喻方向没错但理解得有点粗。三层交换机的核心是它既能做二层转发也能做三层转发而三层转发的入口是SVISwitch Virtual Interface在华为设备上叫VLANIF接口在思科设备上就是VLAN接口。SVI的思路很巧妙每个VLAN对应一个逻辑三层接口这个接口的IP就是该VLAN的网关。交换机内部维护一张三层转发表FIB当一个数据包的目标IP命中另一VLAN的网关地址时交换机内部直接完成路由动作——不再需要把数据包发到外部路由器。这比单臂路由高效得多因为流量不需要绕到外部也不需要经过Trunk链路再折返。对用户来说网络拓扑变成了“主干交换机直接实现各VLAN网关”比“每个VLAN绕道路由器”少了一层物理依赖无论从性能、可靠性还是配置简洁度上都更舒服。3.2 华为三层交换机配置示例与关键命令以华为S5720作为核心交换机为例假设连接接入交换机的端口是GE0/0/24Trunk口VLAN分别设置为10、20、30网关分别是192.168.10.1/24、192.168.20.1/24、192.168.30.1/24# 创建VLAN并配置Trunk vlan batch 10 20 30 interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 30 # 配置VLANIF接口SVI 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 Vlanif30 ip address 192.168.30.1 255.255.255.0这里有一个我在实施过程中见过很多次的坑在思科三层交换机上即使你配置了VLAN接口的IP如果全局没有开启路由功能SVI也不会上线转发。思科命令必须先执行ip routing开启三层路由否则show ip route里什么都没有。华为设备默认支持VLANIF三层转发通常不需要额外开启但建议配置完还是手动查一下路由表确认直连路由存在。验证命令跟单臂路由类似我习惯先在核心交换机上执行以下操作display ip interface brief看Vlanif10/20/30接口状态和IP。display ip routing-table确认三个网段以Direct方式存在于路由表。display vlan确认Trunk口放行VLAN正确。在核心交换机上直接ping 192.168.20.20验证三层转发独立于PC侧是否可用。3.3 单臂路由与SVI的核心差异一张表看懂怎么选方案摆在一起做对比选择就清晰多了对比维度单臂路由Router-on-a-Stick三层交换机SVI转发位置外部路由器CPU交换机硬件芯片跨VLAN带宽受限于一根物理链路受限于背板通常远高于单臂配置复杂度子接口VLAN封装TrunkVLANIF接口Trunk网关归属路由器子接口交换机VLANIF适合场景实验、小规模、临时扩容生产环境、大流量、多VLAN互访扩展性较难扩展增加VLAN需新增子接口易于扩展新VLAN加一个VLANIF即可典型故障点Trunk标签、子接口封装、ARP广播SVI未创建、路由未开启、端口VLAN错乱结论不需要硬背记住一个核心判断标准流量规模大了、跨VLAN访问频繁了三层交换机是更合理的形态如果只是测试、练手或者手头根本没有三层交换机单臂路由足以让你理解“路由发生在哪一层”。3.4 一个容易漏掉的细节接入交换机到核心之间的网关方向很多人配完三层交换机后PC能ping通局域网内其他VLAN的IP但访问不了某个具体服务器这时先别急着怀疑路由配置回头检查一下接入层设备。接入交换机和核心交换机之间的链路必须放行所有需要跨VLAN访问的VLAN流量。如果接入交换机那个上联口只放行了VLAN 10而服务器在VLAN 20PC亲手把包交给了VLAN 10的网关网关也成功把包路由到了核心交换机上但核心交换机想把包发给VLAN 20的服务器时却发现Trunk口根本没有放行VLAN 20帧被交换机丢弃。这个错非常隐蔽因为“PC到网关”这一段是通的看起来路由也正常问题却出在中间传送链路上。排查思路在下一章会重点讲。4. 实战排障VLAN 10访问不了VLAN 20我排查的完整链路4.1 故障现象比“不通”更迷惑人的是“能ping通网关”有一回同事报障销售部PC访问不了服务器区的一台OA服务器。网络拓扑就是前面说的三层交换机SVI方案VLAN 10办公段、VLAN 20服务器段。我远程登录PC先ping了一下OA服务器IP 192.168.20.20结果超时。再ping PC自己的网关192.168.10.1通。再ping服务器段的网关192.168.20.1也通。这个现象非常有意思——PC能ping通对方网段的网关说明三层路由至少在“PC到网关再到VLAN 20网关”这条路径上是通的。但ping不同具体服务器IP问题就缩小到“VLAN 20网关之后的那一段二层/终端部分”。我最担心的是路由表一大片黑洞但眼前这个现象已经把问题范围压到了很窄的区域心态会稳很多。4.2 排查链路从PC一路查到服务器每一层都不要跳我的排查顺序是这样的第一步在PC上确认IP配置和ARP结果ipconfig /all确认IP、掩码、网关是否正确arp -a看有没有学到网关的MAC。如果ARP里没有网关条目说明二层通信有问题多半是端口VLAN、线缆、交换机端口状态的问题。如果ARP有网关MAC但ping网关还是不通关注点放在网关设备或中间的接入交换机。第二步登录核心交换机看VLANIF接口状态display ip interface brief确认Vlanif10和Vlanif20都是UP。这里有个小坑SVI只有在VLAN内有至少一个端口是UP时才会显示物理状态UP。如果某个VLANIF显示DOWN说明这个VLAN在核心交换机上没有任何活跃端口。第三步检查Trunk链路display interface GigabitEthernet0/0/24确认物理链路和协议都UPdisplay port trunk确认VLAN 10和20都已经被放行。这往往就是“看似一切都正常”表象下隐藏问题的地方——access口划错VLAN、Trunk允许列表缺失、甚至对端交换机PVID不一致都会造成转发黑洞。第四步在核心交换机上测试路由转发ping 192.168.20.20如果核心交换机自己都ping不通服务器问题已经与PC无关如果核心交换机能ping通说明三层转发正常回程路由正常问题大概率在PC侧到核心的路径上。注意要多带几个源地址测试比如ping -a 192.168.10.1 192.168.20.20确认从VLAN 10网关地址发起也没有问题。第五步检查服务器本身服务器IP、掩码、默认网关。很多人会把服务器网关配错成192.168.20.254但实际网关是192.168.20.1。这在单臂路由里遇到得更多服务器回包时发现网关不通直接把回包丢弃PC就永远得不到响应。4.3 这次故障的根因一个不起眼的Trunk口PVID不一致最终定位到问题接入层交换机连接服务器的那个端口所属VLAN被误设成了VLAN 30服务器实际上待在VLAN 30而不是VLAN 20。为什么PC ping服务器不同但ping服务器段网关却通因为在核心交换机看来192.168.20.1是VLAN 20的网关它当然通但真正连接服务器的物理端口在接入交换机上属于VLAN 30核心交换机发出的VLAN 20数据帧在Trunk链路上虽然能到达接入交换机接入交换机却发现VLAN 20并没有对应端口于是帧被丢弃。找根因时最有用的命令是display mac-address。我在核心交换机上查看服务器的MAC地址发现它出现在Trunk口对应的MAC表项里但进一步在接入交换机上查display mac-address发现这个MAC对应的端口根本不属于VLAN 20才最终确认了问题。所以排查VLAN间路由问题时不要只盯路由表和IP二层MAC表项的位置信息往往比任何命令都直观。4.4 修复与验证改对端口VLAN之后还得测回程把接入交换机上服务器端口从VLAN 30改回VLAN 20之后我并没有直接宣布修好。在核心交换机上重新执行display mac-address确认服务器MAC已经从旧VLAN消失、出现在VLAN 20再执行ping 192.168.10.10确认从服务器段到PC方向的回程也通。很多新手在检查网络问题时习惯只从源端ping目标通了就算完事。但熟练之后你会发现单程通、回程不通的情况比比皆是因为回程路由、ACL、NAT、防火墙状态表都可能各自出问题。所以排障的最后一步永远是“双向验证”PC ping服务器、服务器 ping PC、网关ping PC、网关ping服务器四个方向都通了这次修复才算真正结束。5. 留给自己和同阶段同事的几条实操经验5.1 配置前先画一张IP规划和VLAN映射表我在前几篇笔记里就反复强调过网络配置不怕命令不熟就怕脑子里的拓扑是乱的。这一篇涉及VLAN间路由更要提前把这张表画清楚VLAN用途网段网关接入交换端口10办公终端192.168.10.0/24192.168.10.1GE0/0/1-1020服务器192.168.20.0/24192.168.20.1GE0/0/11-2030访客192.168.30.0/24192.168.30.1GE0/0/21-24这张表不是写给自己看的是写给未来的自己的——三个月后你接到一个故障工单第一件事就是打开这张表确认“网关是哪台设备、哪个VLANIF、哪个交换机端口”。没有这张表你等于要在现场黑暗中摸索。另外通用网关地址规划上有个习惯值得坚持核心设备作为网关的地址尽量用小号比如.x.1服务器地址从.x.10开始终端地址从.x.100开始。这样看IP段就能大致判断设备角色排障时少走很多弯路。5.2 验证命令练成肌肉记忆别等到故障才查文档初级工程师最容易犯的毛病是查得慢。故障已经冒烟了还在一个个翻命令手册。我的经验是每配完一类功能就固定练一套验证组合拳。单臂路由练display ip interface brief、display ip routing-table、display vlan、display port trunk。SVI方案练display vlan、display ip interface brief、display ip routing-table、display mac-address。把这些命令练到闭着眼睛都能打出来排障速度会提升一大截。更关键的是知道每条命令在验证什么display vlan看的是二层划分是否正确display ip interface brief看的是三层接口和IP是否就位display ip routing-table看的是路由是否是直连、有没有缺路由display mac-address看的是终端MAC到底落在哪个VLAN和端口。命令是用来回答问题的不是用来炫技的。5.3 从这一次经历中沉淀的排障顺序排障最容易犯的错误是直接尝试“修复方案”而不是先给问题定位。我在这一篇故障里最有价值的收获是形成了一个稳定的排查顺序先确认终端配置IP、掩码、网关、ARP表。这里的错误占所有二层以上故障的至少三分之一。再确认路径上每一跳设备的接口状态PC到接入交换机、接入交换机到核心、核心到服务器。接口只要有一处DOWN后面所有配置都是白搭。然后确认路由和MAC表路由表证明三层知道怎么走MAC表证明二层知道把帧交给谁。最后才是策略类问题ACL、防火墙、端口安全。很多新手一上来就怀疑ACL但实际配置里策略类问题往往是最少见的。这个顺序本质上是从物理层一直看到应用层每一层都用自己的验证手段排除掉一种可能。等你形成这种条件反射再遇到“VLAN间不通”这种故障就不会手忙脚乱四处乱试了。5.4 最后一个值得养成的习惯保存现场记录网络工程师的工作里技能成长往往不来自配置多熟练而来自故障后的复盘够不够深。这次排查完成后我把拓扑、IP规划表、故障根因、修复操作、验证命令都整理进了笔记。过段时间再回看这些记录比任何认证教材都更贴近实际工作。Junior 05这篇笔记本身其实就是这个习惯的产物。希望看到这里的朋友也能把自己的每一次配置和排障变成下一份“现场记录”。
返回列表