1. 从"VLAN隔离"到"跨VLAN通信":单臂路由到底解决了什么问题
先从一个很常见的场景说起。很多人在学网络时第一次接触VLAN,会觉得这个功能特别好用——把一台物理交换机切成几个虚拟局域网,广播被隔离了,安全性和管理效率都上来了。但紧接着就会碰到一个让人抓狂的问题:不同VLAN之间的设备,完全ping不通。
不是IP配错了,不是网线松了,而是VLAN这个东西从设计上就不允许二层互通。交换机在转发帧的时候只看VLAN标签,标签不同就不往那个口上送。这是VLAN的工作机制,不是故障。
那怎么办?需要在三层上想办法。所谓三层,就是IP层,由路由器或者三层交换机来干活。单臂路由(Router-on-a-Stick)就是其中一种非常经典、也非常适合入门理解的解决方案。
我当年第一次做这个实验的时候,理解了很久才搞明白"单臂"到底意味着什么。今天这篇就把这件事彻底讲透,从原理到配置,从验证到排错,全部用白话讲清楚。无论你是正在准备网络课作业,还是工作中突然要接一个跨VLAN互通的小需求,这篇文章都能帮你少走很多弯路。
单臂路由的核心价值,用一句话概括就是:用一台路由器的一个物理接口,同时承载多个VLAN的流量,完成跨VLAN的三层转发。它适合小规模网络,适合实验环境,也特别适合用来理解"VLAN标签怎么在三层设备上被识别和处理"这个底层逻辑。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 单臂路由工作的底层逻辑:子接口与802.1Q标签的"剥壳"过程
2.1 "单臂"这个名字是怎么来的
单臂路由的拓扑长得很简单:一台交换机,一台路由器,交换机上划分了多个VLAN,路由器的一个物理接口——比如GigabitEthernet0/0/0——用一根网线连到交换机的某个端口上。
问题来了:路由器这个物理接口只有一个,但VLAN有多个,一个接口怎么同时处理多个网段的流量?
答案就在"子接口"三个字里。
路由器可以把一个物理接口虚拟出多个逻辑接口,这些逻辑接口就叫子接口。物理接口是"手臂",子接口是"手指"。虽然只有一条物理链路连到交换机,但逻辑上路由器已经有好几个"虚拟口"在分别接不同VLAN了。整个拓扑看起来像路由器伸出去一条手臂,所以叫单臂路由。这个名字很形象,理解了就再也忘不掉。
2.2 交换机端口上必须开启Trunk的深层原因
交换机连路由器的那个端口,不能是Access口,必须是Trunk口。这一点很多初学者会忽略,或者只是在照着配置敲,没想明白为什么。
Access口的特点是:只能属于一个VLAN,进出的帧都不打标签(或者说隐式属于某个VLAN)。如果交换机连路由器的口是Access口,那它只允许一个VLAN的流量通过,其他VLAN的流量全被挡在交换机内部,路由器一个物理口再能干也白搭。
Trunk口则不同。Trunk口默认放行VLAN 1,也可以手动放行其他VLAN。重要的是,Trunk口默认会为通过的帧打上802.1Q标签。当一个带着VLAN 10标签的帧从Trunk口发给路由器时,路由器就知道这个帧属于VLAN 10,于是交给对应的子接口去处理。
所以整个数据路径是这样的:PC1(VLAN 10)发出一个普通帧,交换机从Access口收到,打上VLAN 10的标签,沿着Trunk口发给路由器。路由器收到带标签的帧,看一眼标签,发现是VLAN 10,就剥掉标签交给G0/0/0.10这个子接口处理,子接口上的IP地址就是VLAN 10的网关。至此,三层转发完成。
2.3 802.1Q标签到底做了什么
这里多说两句802.1Q标签的原理。标准以太网帧原本没有VLAN字段,802.1Q在源MAC地址和类型/长度字段之间插入了4个字节,其中包含一个12比特的VLAN ID字段,取值0到4095。这样交换机才知道这个帧属于哪个VLAN。
路由器子接口在收到带标签的帧后,要做的第一件事就是"识别标签、剥掉标签"。识别靠的是子接口上配置的VLAN ID,剥掉标签之后,帧就变成普通的无标签帧,路由器再拿着里面的目的IP做路由表查找,决定从哪个子接口出去。
这个过程很像拆快递:框上贴着"VLAN 10"的标签,路由器的G0/0/0.10这个子接口看到是自己的快递,拆开包装,露出里面的IP数据包,然后按照路由表决定下一步怎么走。
3. 完整的单臂路由配置实操:交换机侧和路由器侧一个都不能漏
3.1 实验拓扑与规划
先看一个最常用的拓扑。一台交换机,一台路由器,交换机下挂两台PC或两个终端。
规划如下:VLAN 10对应网段192.168.10.0/24,网关1
