资讯详情

资讯详情

单臂路由完全指南:VLAN间通信原理、配置与排错

记得我第一次做VLAN实验的时候两台PC接到交换机上VLAN划分完了一看两边直接失联。那一刻我才真正意识到VLAN把广播域隔得越干净跨VLAN通信的问题就越让人头疼。“单臂路由”就是在这个场景下反复被提到的词也是网络入门绕不开的一个实训项目。这篇就围绕单臂路由配置展开把这个技术的来龙去脉、原理细节、完整配置命令和实战排错链路一次讲透。无论你是刚学网络的新手还是在准备各种网络认证的考生甚至是需要临时搭一套跨VLAN互通网络的运维朋友都能在这里拿到可以直接照抄的方案。1. VLAN划完之后跨网段通信为什么断了单臂路由解决什么问题1.1 VLAN隔离带来的“副作用”VLAN的作用是把一个物理局域网从逻辑上切成多个独立广播域。交换机在二层转发时只会在同VLAN的端口之间转发数据帧不同VLAN的帧到了交换机这里基本就是“各回各家各找各妈”。这个设计对隔离广播风暴、缩小故障域、提升管理安全性很有帮助但副作用也很明显默认情况下VLAN 10的主机就是访问不了VLAN 20的主机。PC1192.168.10.2去ping PC2192.168.20.2时第一步不是直接发ICMP报文而是先判断目标IP和自己是否在同一网段。一看不在同一网段PC1就知道必须把数据包交给网关去转发。于是PC1发出一个ARP广播请求询问网关192.168.10.1的MAC地址。如果整个网络里压根没有设备在192.168.10.1这个地址上监听这个ARP请求就会石沉大海ping的结果自然就是“请求超时”。你可能会问交换机为什么不直接帮忙转发一下算了因为二层交换机只有MAC地址表和转发表它不解析IP包头不理解“路由”这个概念。跨网段通信涉及目标IP归属、下一跳选择、TTL处理等一系列三层逻辑必须交给具备路由能力的设备。这就像小区里每个单元都有自己的门禁单元之间的人想串门不能靠楼道里的物业保安直接放行得有一个知道所有单元房号的总调度员来安排。1.2 三种跨VLAN通信方案的取舍跨VLAN通信最朴素的做法是“多臂路由”交换机上划分多个VLAN每个VLAN用一个独立物理口连接路由器的独立物理口。比如VLAN 10接路由器GE0/0/0VLAN 20接路由器GE0/0/1路由器上有两个不同网段的接口IP分别作为两个VLAN主机的网关。这种方案原理最简单每个VLAN还独占一条链路带宽但代价是端口和线缆消耗太大。VLAN数量一多路由器上得堆一排接口交换机也得预留一排上联口现实中很难接受。“单臂路由”则是用一个物理接口干完全部活交换机上联路由器的端口配置为Trunk允许所有需要通信的VLAN通过路由器在这个物理接口上划分出多个“子接口”每一个子接口对应一个VLAN并分别配置网关IP。所有跨VLAN流量都从这一条物理链路上进出路由器从拓扑上看就像路由器只伸了一条手臂进到交换机内部因此得名“单臂路由”。省端口、省线缆、配置集中代价是带宽共享和性能瓶颈这点我放在最后一部分详细说。还有一种思路是三层交换机直接在交换机内部创建VLANIF接口也叫SVI为每个VLAN配置一个网关IP路由查表由交换机的硬件芯片完成。这是目前生产网络中最主流的方案但理解起来比单臂路由抽象一些。我的建议是先把单臂路由彻底吃透因为它是理解“VLAN标签如何参与三层转发”的最佳模型之后再去看三层交换机思路会顺畅得多。1.3 什么时候该用单臂路由单臂路由比较适合的实验或业务场景有这几类网络课程实验环境中验证VLAN间路由原理小型分支机构或临时搭建的网络终端数量不多、跨VLAN流量很小以及需要快速实现“多个网段互通”又不方便增加物理接口的现场。我在实际工作中遇到一些会场临时网络、测试环境隔离网段互通需求时也经常用单臂路由来快速顶上一台上联设备加一根网线就把问题解决了。需要警惕的是单臂路由不是高可用、高性能方案。跨VLAN流量一旦超过一定量级或者需要保障关键业务不中断就必须考虑三层交换、链路聚合、设备冗余等手段。把它的适用边界搞清楚比只会敲命令重要得多。2. 单臂路由的工作原理一条物理链路如何承载多个VLAN的流量2.1 802.1Q标签到底是个什么东西要让一条物理链路同时承载多个VLAN的帧必须在帧里把“这个帧属于哪个VLAN”的信息表达出来。这就是IEEE 802.1Q协议要解决的事。它在标准以太网帧头的源MAC地址和类型字段之间插入了一个4字节的Tag字段。这个Tag里最重要的部分是12bit的VIDVLAN ID范围是1到4094用来标识帧所属的VLAN。为什么Trunk链路上必须打标签想想就明白了交换机上联路由器的这根线上面同时跑着VLAN 10和VLAN 20的帧如果不打标接收端根本分不清谁是谁只能全都当成同一个VLAN处理。打上标签后接收设备一看到VID10就知道这个帧属于VLAN 10再决定把它交给哪个逻辑接口处理。这里有个容易忽略的细节Access口进出交换机时帧是不带标签的Trunk口则按配置放行多个VLAN的帧并且Trunk上默认有一个“Native VLAN”原生VLAN通常默认是VLAN 1在传帧时不打标签。这个“不打标签”的坑后面排错部分会让你印象非常深刻。我现在配置类似环境时养成了一个习惯明确把Trunk的Native VLAN改成一个没有实际业务流量的VLAN ID比如99避免原生VLAN的帧在路由器侧收到错误处理。2.2 子接口是如何做到“一分为多”的子接口是在一个物理接口上通过逻辑划分出来的虚拟接口配置名通常是“GigabitEthernet0/0/0.10”这种格式。物理接口负责实际收发电信号子接口负责按VLAN ID区分和处理数据。路由器物理口收到一个带802.1Q标签的帧后会拆开以太网帧头读取VID字段然后把它交给对应VID的子接口。比如收到VID10的帧就交给子接口GE0/0/0.10收到VID20的帧就交给子接口GE0/0/0.20。每个子接口可以独立配置IP地址于是VLAN 10的网关IP可以配置在子接口GE0/0/0.10上VLAN 20的网关IP配置在子接口GE0/0/0.20上。从路由器的视角看它就好像同时连接了多个网段路由表里也就自然出现了两条直连路由。反向也一样路由器要从某个子接口发数据时会先对帧封装对应的VLAN ID然后通过物理接口发送到链路上。交换机从Trunk口收到这个带标签的帧再根据目标VLAN把帧从对应Access口转发出去并在出Access口时剥掉标签还原成普通以太网帧送达PC。2.3 一次完整Ping走了哪些路我们以PC1VLAN 10192.168.10.2ping PC2VLAN 20192.168.20.2为例把整个转发链路拆成几个关键步骤PC1发现目标不在同一网段于是将数据包交给网关192.168.10.1。首先发送ARP请求询问网关MAC地址。ARP请求帧到达交换机Access口交换机在入口给帧打上VLAN 10标签然后从Trunk口转发出去。路由器物理口收到带VID10标签的ARP请求识别出这是VLAN 10的广播帧交给子接口GE0/0/0.10处理子接口响应ARP应答。PC1拿到网关MAC后发出ICMP请求报文目标MAC是网关MAC源IP是192.168.10.2目的IP是192.168.20.2。路由器子接口GE0/0/0.10收到后查询路由表发现192.168.20.0/24直连在子接口GE0/0/0.20上。路由器从GE0/0/0.20发出ICMP请求封装上VID20标签原路返回交换机。交换机Trunk口收到VID20的帧查MAC地址表或洪泛到VLAN 20内从PC2所在Access口发出并剥离标签。PC2收到请求回复ICMP响应回程路径完全对称。这个流程看一眼会觉得繁琐但单臂路由的“秒懂”点恰恰就在这里交换机对帧做VLAN标签的“贴”与“撕”路由器靠子接口对帧做“分类处理与路由决策”。两边各管一段配合得很清楚。生活化一点说单臂路由相当于小区门口设了一个总登记台所有单元的人进出都得从这个台子走。登记台工作人员根据你报的单元号在你的访客单上盖一个对应单元的章打标签到了单元门口保安验章后放行再把章撕掉去标签。你要是没盖对应单元的章保安不会放你去那个单元你要是压根不来登记台两个单元之间就互相“老死不相往来”。3. 从零配置交换机与路由器的完整命令序列3.1 实验拓扑与IP规划下面这套配置我在模拟器里反复验证过多次可以直接照抄。拓扑很简单一台交换机、一台路由器、两台PC。PC1接交换机GE0/0/1属于VLAN 10PC2接交换机GE0/0/2属于VLAN 20交换机GE0/0/3上联路由器GE0/0/0配置为Trunk放行VLAN 10和VLAN 20。设备/接口所属VLANIP地址网关PC1交换机GE0/0/1VLAN 10192.168.10.2/24192.168.10.1PC2交换机GE0/0/2VLAN 20192.168.20.2/24192.168.20.1路由器子接口GE0/0/0.10VLAN 10192.168.10.1/24无路由器子接口GE0/0/0.20VLAN 20192.168.20.1/24无交换机GE0/0/3Trunk放行VLAN 10、20无无这里有两个设计要点。第一两台PC的网关IP必须指向路由器子接口IP而不是指向交换机上某个物理接口IP。普通交换机接口没有三层转发能力你把网关配在交换机上等于让PC拿着地址找空气。第二子接口编号建议与VLAN ID保持一致比如VLAN 10就建GE0/0/0.10VLAN 20就建GE0/0/0.20。这不是强制要求但配合久了你会发现网段和子接口编号对应起来排错时扫一眼配置就能定位问题省很多事。3.2 交换机侧配置VLAN、Access和Trunk以下命令以我常用的模拟器命令行风格为例不同厂商的命令关键字会略有差异但配置思路和顺序完全一样。system-view sysname Switch vlan batch 10 20 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 interface GigabitEthernet0/0/2 port link-type access port default vlan 20 interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass vlan 10 20一条一条说原因。vlan batch 10 20是一次性创建两个VLAN如果漏了这步后面把端口划入不存在的VLAN时端口状态会显示异常。port link-type access是把PC侧端口设为Access模式Access口在收到PC发来的不带标签的普通帧时会自动给它打上port default vlan里指定的VLAN标签实现“每个PC端口固属于某一个VLAN”的效果。PC侧用Access而不是Trunk是因为PC网卡既不发送也不识别802.1Q标签没必要把端口设置成Trunk去放行多个VLAN。交换机上联路由器侧的GE0/0/3设为Trunk是为了让交换机能从这一条链路上向路由器传多个VLAN的帧。这里特别提醒很多平台的Trunk端口默认只放行VLAN 1如果你忘了加port trunk allow-pass vlan 10 20这一句VLAN 10和VLAN 20的帧在Trunk口就直接被丢弃了前面的配置再正确也没用。这是单臂路由实验里出现频率最高的失败原因之一先记着下面排错部分还会再提。3.3 路由器侧配置子接口、封装和ARP路由器这台设备的配置是整个实验的关键。system-view sysname Router interface GigabitEthernet0/0/0 undo shutdown interface GigabitEthernet0/0/0.10 dot1q termination vid 10 ip address 192.168.10.1 255.255.255.0 arp broadcast enable interface GigabitEthernet0/0/0.20 dot1q termination vid 20 ip address 192.168.20.1 255.255.255.0 arp broadcast enable先看物理接口GE0/0/0。很多初学者配置完子接口就以为万事大吉结果模拟器里路由器物理接口默认处于关闭状态shutdown导致所有子接口一起“瘫痪”。我见过不止一个人对着子接口配置检查了半天最后才发现物理口没开。所以undo shutdown这个命令不能漏而且要在创建子接口之前或之后都行但必须保证它处于“up”状态。再看子接口GE0/0/0.10的配置dot1q termination vid 10表示这个子接口专门处理VLAN 10的打标帧是子接口和VLAN绑定的核心命令。不同厂商的命令关键字可能叫encapsulation dot1Q 10但作用完全一致告诉设备“凡是带有VID10标签的帧统统交给这个逻辑接口处理”。ip address给子接口配置网关IP这就是后面PC1的默认网关。arp broadcast enable这个命令在某些模拟器平台上是必须显式开启的因为子接口默认情况下可能不响应ARP广播请求。如果漏了这条PC1发ARP问网关MAC时路由器子接口可能会“装死”导致PC1一直无法解析出网关的MAC地址。不同平台默认行为有差异我建议不管什么平台都明确开启避免玄学问题。这里还要强调一个很多人问过的问题物理接口GE0/0/0到底要不要配IP在标准的单臂路由实验里物理接口不需要配置IP。因为物理接口上收到的业务帧都带着VLAN标签它们会被交给对应的子接口处理物理接口本身不承担三层网关角色。如果你给物理接口配置了一个IP非但不能帮助转发反而可能和子接口抢一些特殊场景下的流量。我的习惯是把物理接口当作“纯物理转发通道”不配IP保持配置干净。3.4 为什么按这套配置走而不是随手配有些朋友拿到教程习惯直接复制命令但我还是想先讲清楚配置顺序的逻辑。交换机和路由器两侧其实是“先两头后中间”的思路先把PC所连接的交换机接入端口划归到正确的VLAN再把交换机上联路由器的端口变成Trunk并放行对应VLAN最后在路由器上创建子接口、封装VLAN、配置网关IP和ARP。这个顺序的好处是每一步做完后设备的状态都有一个明确的验证点。比如配置完交换机侧可以立即在交换机上用查看命令确认端口VLAN归属配置完路由器侧可以先单独ping通各自的网关再测跨VLAN互通。另外模拟器和真实设备上很多命令是“增量式”的配置错了不会立刻报错而是默默产生异常流量行为。所以配置之前把IP规划表列清楚配置之中一条一条核对配置之后从PC侧逐层ping能省下大量回头排查的时间。这套习惯我保持了多年到现在排障依旧是先看规划表再看路由表。4. 连通性验证与高频翻车点一次完整的排错演示4.1 标准的连通性验证顺序配置做完先别急着PC1直接ping PC2。按从底层到高层的顺序验证每一步都有明确的检查目标这样一旦失败你能立刻锁定故障所在层。第一层PC1先ping自己的网关192.168.10.1。如果这一步都不通问题一定出在“PC1到路由器子接口”这段的二三层链路包括PC网卡配置、交换机Access口VLAN、Trunk放行、路由器子接口封装。第二层在路由器上分别ping PC1和PC2的IP。路由器能ping通PC1说明路由器到PC1这一段没问题能ping通PC2说明路由器到PC2这一段没问题。第三层PC1再去ping PC2并分别在PC1、PC2上测试反向确认双向通信都正常。每个阶段配合查看命令效果更好。在交换机上用查看VLAN和端口信息确认端口类型、PVID、Trunk放行列表在路由器上用查看接口和路由表确认子接口物理状态是up、IP地址是否生效、路由表里是否出现了两条直连路由。很多“跨VLAN不通”的问题其实在路由表上就能看出来——如果路由器上只出现了一条直连路由说明另一个子接口根本没起来或者对应VLAN的帧压根没到过路由器。4.2 坑一子接口不响应ARP网关MAC解析不出来现象是PC1 ping 192.168.10.1一直“请求超时”在PC1上用命令查看ARP表发现网关192.168.10.1对应的MAC地址是“不完全”状态或者干脆没有条目。这个现象指向一个关键点PC1想发给网关的数据帧必须先在二层上解决“目标MAC填什么”的问题也就是ARP解析。如果PC1始终拿不到网关的MAC后面所有数据都无法发出。我在模拟器里复现过这个坑最常见的原因是路由器子接口上没有开启arp broadcast enable。子接口的主要任务是处理和识别带VLAN标签的帧而ARP请求是广播帧如果不显式开启ARP广播使能部分平台上的子接口就会对这些广播帧视而不见。解决方法是确保配置里包含arp broadcast enable配置完成后可以先把PC的ARP缓存清掉重新触发一次ARP解析再用查看命令确认子接口状态正常。如果你用的平台没有这个命令但子接口配置正确通常也能正常解析那就忽略这条。但遇到“网关MAC解析不出来”的诡异现象时这个命令永远值得第一个检查。4.3 坑二交换机Trunk放行列表不全VLAN帧被静默丢弃再一种经典现象是VLAN 10的PC能ping通路由器VLAN 20的PC怎么都ping不通两边配置看起来都对。这种“半边通”的问题大概率出在交换机Trunk口的放行列表上。前面提过很多平台的Trunk端口默认只放行VLAN 1。如果你创建了VLAN 10和VLAN 20但在上联端口上只添加了port trunk allow-pass vlan 10那VLAN 20的帧在Trunk口就会被直接丢弃。数据帧在Trunk口被丢是“静默”行为没有报错也没有告警日志你光看配置会觉得一切正常但流量就是过不去。排查方法是在交换机上查看Trunk口的放行列表确认里面同时包含VLAN 10和VLAN 20。另一个容易同时踩的坑是交换机上压根没创建VLAN 20却把端口划入了VLAN 20。这种情况下端口可能显示为“未激活”或处于异常状态也会造成同样“半边通”的现象。所以配置完记得回查一遍VLAN是否创建、端口是否激活。4.4 坑三Native VLAN配置错位帧标签对不上这个坑比前两个隐蔽得多而且只在特定的Trunk和子接口组合下才会暴露典型现象是抓包时能看到帧在交换机侧正常发出但路由器侧就是无法识别或者某个VLAN的所有流量都异常。根源在Native VLAN的不打标机制。Trunk端口有一个特殊的“原生VLAN”这个VLAN的帧在Trunk链路上传输时不打802.1Q标签。如果交换机的Native VLAN恰好是VLAN 10那么VLAN 10的帧到了路由器物理口时是不带标签的“裸帧”。这时候问题就来了路由器上并没有一个“专门处理无标签帧”的配置这个裸帧可能会被物理接口直接收走也可能被某些默认逻辑当成VLAN 1处理但无论如何它都不会进到子接口GE0/0/0.10里去。于是这个VLAN的通信就处于一种“看起来设备都通实际业务不跑”的诡异状态。对策主要有两种。第一把交换机和路由器之间的Trunk端口Native VLAN改成不会被使用到的VLAN ID比如VLAN 99并确保路由器上不存在对应99的子接口。第二如果想保留默认Native VLAN就需要在路由器侧想清楚如何处理无标签帧但这类处理方式复杂且容易出错不如直接改掉Native VLAN干净。这是我在多次踩坑后养成的习惯凡是配置Trunk上联路由器的场景先统一Native VLAN再谈其他。4.5 坑四PC网关、掩码、回程路径的“低级”错误还有一种高频问题完全不在路由器也不在交换机而是在PC本身。常见的有PC2没配置默认网关导致它能收到PC1的请求但回包时不知道往哪里发PC2的IP和网关被配置成了不同网段导致它根本不认为192.168.20.1是自己的网关或者PC的防火墙开启了一些拦截ICMP的策略让回包被本地丢弃。这类问题有个典型特征路由器上ping PC2是通的PC1上ping PC2却不通但PC2能ping通PC1。如果你用ping命令的返回结果仔细对照往往能根据“单通”的方向猜出问题在哪一侧。我的排查顺序是先在PC2上用命令确认IP地址、子网掩码、默认网关三件套一个字段一个字段核对然后关掉或调整本机安全策略再测一次最后才考虑是不是网络路径问题。很多时候真的是一个网关没写让整个网络工程师的排查思路绕了一大圈。4.6 排错方法论小结抓包看标签是最快的验证方式以上四个坑都是真实实验环境里反复出现的。如果你实在排查不出来我推荐直接把模拟器自带的抓包功能打开在交换机和路由器之间的Trunk链路上抓包。重点观察两点PC1发出的ICMP请求到达路由器时帧上是否带着VID10的标签路由器发出的ICMP请求或响应到达交换机时是否带着VID20的标签。只要标签和子接口配置对应得上链路方向就是对的问题基本就锁定在路由表或ARP表上。抓包这个东西说实话是单臂路由学习里最被低估的调试工具。它能让你用肉眼“看见”VLAN标签在链路上如何发生变化远比自己对着配置猜高效。我每次带朋友做这个实验都建议他们先抓包再排查往往几分钟就能定位问题。5. 单臂路由的性能边界什么时候该换三层交换5.1 单臂路由的吞吐与故障局限单臂路由在概念上和配置上都很友好但它有几个绕不开的硬伤。第一所有跨VLAN流量都在一条物理链路上进出。假设路由器物理接口是1GbpsVLAN 10和VLAN 20之间的大量数据传输会完全占用这条链路两边同时跑大流量时互相挤兑实际可用带宽远低于你对单条1Gbps链路的预期。第二路由器转发性能受限于CPU软件处理。单臂路由场景下每一个跨VLAN帧都要经过路由器CPU进行解封装、查路由、封装等操作不像交换机那样由硬件芯片高速转发。连接数一涨CPU占用率可能直接飙升延迟和丢包随之出现。第三单点故障明显。路由器挂了、物理链路断了、子接口配置错了所有跨VLAN通信立刻全断而且影响范围是“全网跨VLAN业务”。从实际经验判断终端数量在几十台以内、跨VLAN流量不大、没有严格可靠性要求的场景单臂路由可以胜任。但如果流量达到几百兆级别或者需要对跨VLAN通信做高可用保障就不要犹豫直接换方案。5.2 生产网络的替代思路现实中更常见的跨VLAN通信方案是三层交换机。在支持三层功能的交换机上直接为每个VLAN创建VLANIF接口并配置IP地址这个接口就充当该VLAN的网关。Packet进来后交换机硬件直接根据路由表完成VLAN间转发吞吐量远高于路由器软转而且方案本身不占用额外的路由器端口和链路。另一种思路是多臂路由每个VLAN独占一个路由器物理口流量隔离更彻底但端口消耗大只在VLAN数量很少、流量需要严格隔离的特定场合才有优势。更高阶的场景还可以用链路聚合绑定多条Trunk来提升单臂带宽但配置复杂度会明显上升且依然绕不开单点故障问题。对学习而言我的建议很清楚先用单臂路由把VLAN间通信的完整逻辑跑通再去看三层交换机的VLANIF配置。你会发现两者只是“路由功能放在哪个设备上”的区别子接口IP对应VLANIF IPTrunk放行对应VLANIF创建思路迁移起来非常自然。5.3 从单臂路由到VLANIF一次思维迁移做这个迁移实验其实很简单还是那两台PC还是VLAN 10和VLAN 20只是把路由器子接口换成在交换机上配置两个VLANIF接口IP照旧分别配成192.168.10.1和192.168.20.1。然后给交换机开启三层功能PC的网关IP保持不变。配置完成后PC1再去ping PC2你会发现通信速度明显更快因为帧的转发完全发生在交换机内部不再需要绕到外部路由器。这个实验强烈建议亲手做一遍。做完之后你会在脑海里形成一个清晰的图景子接口和VLANIF接口本质上都是“为某个VLAN提供一个三层网关入口”的手段只是实现位置不同。有了这个认知后面再接触VXLAN、Policy-Based Routing等更复杂的网络技术时底层逻辑也会更容易串起来。最后分享一个我个人的实操习惯。现在不管是在模拟器里还是真机上配单臂路由我都会在动手之前先把交换机和路由器之间Trunk的Native VLAN改成VLAN 99。这个动作看起来多余但真的能帮我省掉大量排查时间。顺手打开抓包看一眼标签确认VLAN 10的帧确实带着VID10、VLAN 20的帧带着VID20这个实验基本就稳了。把这套单臂路由的配置和排错链路吃透再往后学三层交换、VRF、VXLAN你都会比别人顺得多。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →