思科单臂路由原理及配置详解
1. 什么是单臂路由
在交换网络中,VLAN(Virtual Local Area Network,虚拟局域网)的划分可以在二层实现广播域的隔离,但仅靠二层交换机无法让不同 VLAN 之间相互通信。要做到 VLAN 间路由,通常有三种方式:
- 使用三层交换机,通过 SVI(Switch Virtual Interface)实现;
- 为每个 VLAN 单独连接一台路由器的物理接口;
- 单臂路由(Router-on-a-Stick):路由器与交换机之间只使用一条物理链路,通过 802.1Q Trunk 承载多个 VLAN 的流量。
单臂路由的核心思想是:在路由器的一个物理接口上创建多个子接口(Subinterface),每个子接口对应一个 VLAN,并作为该 VLAN 的网关。交换机与路由器相连的接口配置为 Trunk 模式,不同 VLAN 的数据帧打上 802.1Q 标签后在同一条物理链路上传输。
单臂路由通常用于中小型网络,或者只有二层交换机、没有三层交换机的场景,它是一种成本较低、配置灵活的 VLAN 间路由方案。
2. 单臂路由的工作原理
2.1 数据转发流程
假设有两台主机 PC-A(VLAN 10)和 PC-B(VLAN 20),它们的网关分别指向路由器的子接口 G0/0.10 和 G0/0.20。PC-A 访问 PC-B 时,大致流程如下:
- PC-A 发现目标地址与自己不在同一网段,于是把数据包发送给默认网关;
- 交换机从 Access 端口收到来自 VLAN 10 的以太网帧,在转发到 Trunk 口时打上 VLAN 10 的 802.1Q 标签;
- 路由器物理接口收到带标签的帧,根据标签把帧交给对应的子接口
G0/0.10; - 子接口
G0/0.10剥掉 802.1Q 标签,解析 IP 数据包,查路由表发现目标属于 VLAN 20,于是把数据包交给子接口G0/0.20; - 子接口
G0/0.20重新封装以太网帧并打上 VLAN 20 的标签,从物理接口发回交换机; - 交换机根据 VLAN 20 标签把帧从对应的 Access 端口转发给 PC-B。
整个过程可以用下面的流程图表示:
2.2 802.1Q 与 Native VLAN
802.1Q 是 IEEE 定义的 VLAN Trunk 封装标准。单臂路由的子接口通过封装指定 VLAN:
encapsulation dot1Q 10
这条命令表示该子接口处理带有 VLAN 10 标签的帧。
需要特别注意 Native VLAN(本征 VLAN)的概念:在 Trunk 链路上,Native VLAN 的帧默认不打标签。思科建议不要在单臂路由的子接口上使用 Native VLAN 承载用户数据,因为某些二层攻击(如 VLAN Hopping)与 Native VLAN 有关。通常的配置习惯是:
- 用户数据 VLAN 使用带标签的子接口;
- Native VLAN 保持默认或专门指定为一个不承载业务的管理 VLAN。
3. 组网拓扑与需求
下面以一个典型场景为例:一台二层交换机连接两个部门的主机,分别是 VLAN 10(技术部)和 VLAN 20(市场部),路由器通过单臂路由实现两个 VLAN 之间的互通。
规划信息如下:
| 网段 | VLAN | 网关地址 | 网关子接口 |
|---|---|---|---|
| 192.168.10.0/24 | VLAN 10 | 192.168.10.1 | G0/0.10 |
| 192.168.20.0/24 | VLAN 20 | 192.168.20.1 | G0/0.20 |
设备连接关系:
- 路由器
G0/0连接交换机G0/1; - 交换机
G0/2连接 PC-A(VLAN 10); - 交换机
G0/3连接 PC-B(VLAN 20)。
4. 配置步骤详解
4.1 交换机侧配置
交换机的任务是创建 VLAN、把连接 PC 的端口划入对应 VLAN,并配置连接路由器的端口为 Trunk。
Switch> enable
Switch# configure terminal
! 创建 VLAN 10 与 VLAN 20
Switch(config)# vlan 10
Switch(config-vlan)# name TECH
Switch(config-vlan)# exit
Switch(config)# vlan 20
Switch(config-vlan)# name MARKET
Switch(config-vlan)# exit
! 把连接 PC-A 的端口划入 VLAN 10
Switch(config)# interface gigabitEthernet 0/2
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 10
Switch(config-if)# exit
! 把连接 PC-B 的端口划入 VLAN 20
Switch(config)# interface gigabitEthernet 0/3
Switch(config-if)# switchport mode access
Switch(config-if)# switchport access vlan 20
Switch(config-if)# exit
! 配置连接路由器的端口为 Trunk
Switch(config)# interface gigabitEthernet 0/1
Switch(config-if)# switchport trunk encapsulation dot1q
Switch(config-if)# switchport mode trunk
Switch(config-if)# switchport trunk allowed vlan 10,20
Switch(config-if)# end
Switch# write memory
说明:部分新款思科交换机只支持 802.1Q,可能不再要求输入
switchport trunk encapsulation dot1q,直接配置switchport mode trunk即可。如果命令报错,可跳过封装命令。
4.2 路由器侧配置
在路由器的物理接口上先开启接口,然后为每个 VLAN 创建逻辑子接口。子接口号通常与 VLAN 号对应,便于管理。
Router> enable
Router# configure terminal
! 开启物理接口
Router(config)# interface gigabitEthernet 0/0
Router(config-if)# no shutdown
Router(config-if)# exit
! 子接口 G0/0.10,作为 VLAN 10 的网关
Router(config)# interface gigabitEthernet 0/0.10
Router(config-subif)# encapsulation dot1Q 10
Router(config-subif)# ip address 192.168.10.1 255.255.255.0
Router(config-subif)# exit
! 子接口 G0/0.20,作为 VLAN 20 的网关
Router(config)# interface gigabitEthernet 0/0.20
Router(config-subif)# encapsulation dot1Q 20
Router(config-subif)# ip address 192.168.20.1 255.255.255.0
Router(config-subif)# end
Router# write memory
配置完成后,可以使用 show ip route 查看直连路由:
Router# show ip route
Codes: C - connected, S - static, R - RIP, O - OSPF
C 192.168.10.0/24 is directly connected, GigabitEthernet0/0.10
C 192.168.20.0/24 is directly connected, GigabitEthernet0/0.20
5. 验证与排错
5.1 检查 Trunk 状态
在交换机上查看 Trunk 端口是否正常,以及允许通过的 VLAN:
Switch# show interfaces trunk
Port Mode Encapsulation Status Native vlan
Gig0/1 on 802.1q trunking 1
Port Vlans allowed on trunk
Gig0/1 10,20
5.2 检查 VLAN 与端口划分
Switch# show vlan brief
VLAN Name Status Ports
---- -------------------------------- --------- -------------------------------
1 default active Gig0/0, Gig0/4, Gig0/5
10 TECH active Gig0/2
20 MARKET active Gig0/3
5.3 测试连通性
在 PC-A 上执行 ping 测试:
PC-A> ping 192.168.20.20
Pinging 192.168.20.20 with 32 bytes of data:
Reply from 192.168.20.20: bytes=32 time=1ms TTL=127
如果 ping 不通,建议按以下顺序排查:
- 确认 PC 的 IP 地址、子网掩码、默认网关是否配置正确;
- 确认交换机 Access 端口是否划入正确的 VLAN;
- 确认交换机与路由器相连端口是否为 Trunk,并且允许相关 VLAN 通过;
- 确认路由器子接口的
encapsulation dot1Q编号与 VLAN 号是否一致; - 确认路由器物理接口已经
no shutdown; - 检查 PC 防火墙是否拦截了 ICMP 回显请求。
6. 单臂路由的优缺点
6.1 优点
- 节省物理接口:只需要路由器的一个物理接口就能实现多个 VLAN 间的路由;
- 配置灵活:新增 VLAN 时,只需增加子接口并在交换机 Trunk 上放行对应 VLAN;
- 成本较低:二层交换机即可配合路由器实现 VLAN 间通信,无需购置三层交换机。
6.2 缺点
- 带宽瓶颈:所有 VLAN 间流量都经过同一条物理链路,链路成为汇聚点,容易形成瓶颈;
- 单点故障:路由器或该物理链路一旦故障,所有 VLAN 间通信都会中断;
- 转发性能限制:路由转发依赖路由器 CPU,子接口在软件转发场景下性能通常低于三层交换机的专用硬件;
- 不适合大规模网络:当 VLAN 数量多、跨 VLAN 流量大时,建议改用三层交换机。
7. 常见配置注意事项
- 子接口编号建议与 VLAN 一致:如
G0/0.10对应 VLAN 10,便于排错和维护; - 封装命令必须在子接口上配置:
encapsulation dot1Q <vlan-id>是子接口命令,不要配在物理主接口上; - 不要在 Native VLAN 上配置子接口 IP:尽量为 Native VLAN 单独处理,避免使用
encapsulation dot1Q <vlan-id> native承载业务数据; - Trunk 上明确允许的 VLAN:建议使用
switchport trunk allowed vlan限制允许通过的 VLAN,减少广播和不必要的流量; - 物理接口必须先开启:路由器物理接口若处于
shutdown状态,所有子接口都无法转发数据。
8. 总结
单臂路由是一种经典的 VLAN 间路由方案,它通过 802.1Q Trunk 和路由器子接口,在一条物理链路上实现多个 VLAN 的网关功能。虽然它在带宽和冗余方面存在天然局限,但在中小型网络中依然是一种简单、经济和实用的选择。
掌握单臂路由的配置,是理解 VLAN 间通信、Trunk 封装以及路由器子接口的重要基础,也是学习三层交换 SVI 和动态路由之前值得熟练掌握的技能。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)