第9篇:单臂路由实现 VLAN 间通信
关键词:单臂路由 Router on a Stick 子接口 802.1Q Trunk VLAN间路由 华为配置
一、引言
在上一篇文章中,我们了解到跨 VLAN 通信需要三层接口。最理想的方案是在三层交换机上配置 VLANIF 接口,但有些场景下,企业只有二层交换机和一台路由器,此时如何实现跨 VLAN 通信?
答案就是单臂路由(Router on a Stick)——利用路由器的一个物理接口划分子接口,通过 802.1Q 封装实现多 VLAN 的路由转发。
一个真实的案例:某小微企业只有一台华为 AR6140 路由器和一台华为 S5720-28C-EI 二层交换机(无三层license)。IT 需要将财务(VLAN 20)和技术(VLAN 30)分开管理,但又需要双方互访文件服务器。最终通过单臂路由方案解决了问题。
本文将详细讲解单臂路由的原理、配置方法和局限性。
二、单臂路由原理
2.1 什么是单臂路由
单臂路由(Router on a Stick)的核心思想是:路由器的一个物理接口通过子接口(Sub-interface)处理多个 VLAN 的流量,像"一只手臂"同时服务多个 VLAN,因此得名。

2.2 为什么需要 Trunk 链路
单臂路由依赖 Trunk 链路承载多个 VLAN 的流量。Trunk 链路使用 IEEE 802.1Q 标准,在原始以太网帧中插入 4 字节的 VLAN Tag,标识该帧属于哪个 VLAN。
| 参数 | 说明 |
|---|---|
| VLAN Tag 长度 | 4 字节 |
| VLAN ID 范围 | 1~4094 |
| 打 Tag 的帧 | 带有 VLAN ID 标识的帧(Trunk 传输) |
| 不打 Tag 的帧 | 普通帧,属于 Native VLAN(Access 传输) |
2.3 802.1Q 帧格式变化
| 字段 | 标准以太网帧 | 802.1Q tagged 帧 |
|---|---|---|
| 源 MAC | 6 字节 | 6 字节 |
| 目的 MAC | 6 字节 | 6 字节 |
| VLAN Tag | 无 | 4 字节(TPID + TCI) |
| 类型/长度 | 2 字节 | 2 字节 |
| 数据载荷 | 46~1500 字节 | 46~1500 字节 |
| FCS | 4 字节 | 4 字节 |
| 总长度 | 64~1518 字节 | 68~1522 字节 |
注意:802.1Q Tag 增加了 4 字节,使得最大帧长从 1518 字节扩展到 1522 字节(称为"胖帧")。MTU 规划时需考虑此因素。
三、子接口与 Dot1q 封装
3.1 物理接口 vs 子接口
| 对比维度 | 物理接口 | 子接口 |
|---|---|---|
| 命名 | GE0/0/0 | GE0/0/0.10 |
| 数量 | 固定(设备面板决定) | 可灵活创建多个 |
| IP 地址 | 一个物理接口一个 IP | 每个子接口独立 IP |
| VLAN 处理 | 不解封装 Tag | 通过 dot1q 终止特定 VLAN 的 Tag |
| 用途 | 连接终端或点对点链路 | 单臂路由、VLAN 路由 |
3.2 子接口工作原理
子接口 GE0/0/0.10 配置 dot1q termination vid 10 后:
- 入方向:从物理接口收到的帧,如果 VLAN Tag = 10,交给子接口 .10 处理;其他 Tag 交给对应子接口
- 出方向:子接口 .10 发出的帧,自动添加 VLAN Tag = 10,从物理接口发送
四、华为设备完整配置
4.1 组网设定
| 设备 | 角色 | 接口配置 |
|---|---|---|
| S5720-28C-EI | 二层交换机 | GE0/0/1~10 为 Access,GE0/0/24 为 Trunk |
| AR6140 | 路由器 | GE0/0/0 划分子接口 .10 和 .20 |
| VLAN | 名称 | 网段 | 网关 |
|---|---|---|---|
| 10 | OFFICE | 192.168.10.0/24 | 192.168.10.1 |
| 20 | SERVER | 192.168.20.0/24 | 192.168.20.1 |
4.2 二层交换机配置
# ========== S5720 交换机配置 ==========
# 1. 创建 VLAN
[HUAWEI] system-view
[HUAWEI] vlan batch 10 20
# 2. 配置 PC 接入端口(Access)
[HUAWEI] interface GigabitEthernet 0/0/1
[HUAWEI-GigabitEthernet0/0/1] port link-type access
[HUAWEI-GigabitEthernet0/0/1] port default vlan 10
[HUAWEI-GigabitEthernet0/0/1] quit
[HUAWEI] interface GigabitEthernet 0/0/2
[HUAWEI-GigabitEthernet0/0/2] port link-type access
[HUAWEI-GigabitEthernet0/0/2] port default vlan 20
[HUAWEI-GigabitEthernet0/0/2] quit
# 3. 配置上联路由器的 Trunk 端口
[HUAWEI] interface GigabitEthernet 0/0/24
[HUAWEI-GigabitEthernet0/0/24] port link-type trunk
[HUAWEI-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 20
[HUAWEI-GigabitEthernet0/0/24] quit
4.3 路由器配置
# ========== AR6140 路由器配置 ==========
# 1. 创建子接口 GE0/0/0.10(VLAN 10 网关)
[HUAWEI] system-view
[HUAWEI] interface GigabitEthernet 0/0/0.10
[HUAWEI-GigabitEthernet0/0/0.10] dot1q termination vid 10 # 解封装 VLAN 10 的 Tag
[HUAWEI-GigabitEthernet0/0/0.10] ip address 192.168.10.1 24 # 配置 VLAN 10 的网关 IP
[HUAWEI-GigabitEthernet0/0/0.10] arp broadcast enable # 允许 ARP 广播(重要!)
[HUAWEI-GigaretEthernet0/0/0.10] quit
# 2. 创建子接口 GE0/0/0.20(VLAN 20 网关)
[HUAWEI] interface GigabitEthernet 0/0/0.20
[HUAWEI-GigabitEthernet0/0/0.20] dot1q termination vid 20
[HUAWEI-GigabitEthernet0/0/0.20] ip address 192.168.20.1 24
[HUAWEI-GigabitEthernet0/0/0.20] arp broadcast enable
[HUAWEI-GigabitEthernet0/0/0.20] quit
关键命令解释: -
dot1q termination vid N:指定该子接口处理 VLAN N 的 tagged 帧,收到时剥 Tag,发出时加 Tag -arp broadcast enable:子接口默认不转发 ARP 广播,必须手动开启,否则 PC 无法获取网关 MAC
4.4 终端 PC 配置
| PC | IP 地址 | 子网掩码 | 默认网关 |
|---|---|---|---|
| PC_A(VLAN 10) | 192.168.10.10 | 255.255.255.0 | 192.168.10.1 |
| PC_B(VLAN 20) | 192.168.20.20 | 255.255.255.0 | 192.168.20.1 |
五、单臂路由通信过程
5.1 PC_A(VLAN 10)访问 PC_B(VLAN 20)

5.2 关键观察
- 往返流量经过同一条物理链路:上行和下行数据都经过 GE0/0/24 ↔ GE0/0/0 这条 Trunk 链路,形成"往返瓶颈"
- 每经过一层路由,MAC 地址变化:从 PC_A 到路由器时目的 MAC 是子接口 .10 的 MAC;从路由器到 PC_B 时源 MAC 是子接口 .20 的 MAC
- 802.1Q Tag 在 Trunk 链路上透明传输:交换机和路由器都理解 Tag,在 Trunk 链路上帧携带 Tag,到达终端前剥 Tag
六、单臂路由的局限性与优化
6.1 带宽瓶颈
单臂路由最大的问题是所有跨 VLAN 流量都经过路由器的同一个物理接口,该接口成为整个网络的带宽瓶颈。
| 场景 | 流量 | 瓶颈分析 |
|---|---|---|
| VLAN 10 → VLAN 20 | 上行 + 下行 | 同一物理口承担双向,实际可用带宽减半 |
| 多 VLAN 互访 | 所有跨 VLAN 流量 | 全部挤在一条物理链路上 |
| 大文件传输 | 持续高带宽 | 单 GE 口 1Gbps 上限,很快饱和 |
6.2 优化方案
| 优化手段 | 说明 | 效果 |
|---|---|---|
| 使用万兆口 | 路由器使用 10GE 接口做单臂 | 带宽提升至 10Gbps |
| 链路聚合 | 多条物理链路聚合为 Eth-Trunk | 提升带宽、增加冗余 |
| 改为三层交换机 | 使用 VLANIF 方案 | 彻底消除单臂瓶颈 |
| 路由分担 | 跨 VLAN 流量分发给不同路由器 | 负载均衡 |
6.3 华为路由器验证命令
# 查看子接口状态
[HUAWEI] display interface GigabitEthernet 0/0/0.10
# 查看路由表
[HUAWEI] display ip routing-table
# 直连路由自动生成:
# 192.168.10.0/24 -> GigabitEthernet0/0/0.10
# 192.168.20.0/24 -> GigabitEthernet0/0/0.20
# 查看子接口 ARP 表
[HUAWEI] display arp interface GigabitEthernet 0/0/0.10
# Ping 测试(指定源子接口)
[HUAWEI] ping -a 192.168.10.1 192.168.20.20
七、故障排查案例
7.1 案例:子接口 ARP 不通
现象:VLAN 10 的 PC Ping 网关 192.168.10.1 不通,arp -a 显示网关 MAC 为 incomplete。
排查:
# 检查子接口配置
[HUAWEI] display current-configuration interface GigabitEthernet 0/0/0.10
# 发现缺少 arp broadcast enable
# 修复
[HUAWEI] interface GigabitEthernet 0/0/0.10
[HUAWEI-GigabitEthernet0/0/0.10] arp broadcast enable
根因:华为路由器子接口默认禁用 ARP 广播,必须手动开启。这是单臂路由最常见的问题。
7.2 案例:Trunk 链路未放行 VLAN
现象:VLAN 10 正常,VLAN 20 无法跨 VLAN 通信。
排查:
# 检查交换机 Trunk 端口允许的 VLAN
[HUAWEI] display port vlan interface GigabitEthernet 0/0/24
# 发现只放行了 VLAN 10,未放行 VLAN 20
# 修复
[HUAWEI] interface GigabitEthernet 0/0/24
[HUAWEI-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 20
八、总结
| 维度 | 说明 |
|---|---|
| 核心原理 | 一个物理接口通过多个子接口处理不同 VLAN 的 tagged 流量 |
| 关键配置 | dot1q termination vid + arp broadcast enable |
| Trunk 作用 | 在交换机和路由器之间透明传输带 Tag 的多 VLAN 帧 |
| 带宽瓶颈 | 所有跨 VLAN 流量经过同一物理接口,往返流量共享带宽 |
| 适用场景 | 无三层交换机时的临时方案,小规模网络 |
核心要点:
1. 单臂路由通过子接口 + 802.1Q 实现多 VLAN 路由,是经典的教学方案
2. 华为路由器子接口必须配置 arp broadcast enable,否则 PC 无法获取网关 MAC
3. 单臂路由的 Trunk 链路上所有帧都携带 802.1Q Tag
4. 带宽瓶颈是单臂路由的最大缺陷,生产环境推荐使用三层交换机 VLANIF 方案
5. Trunk 端口必须放行所有需要路由的 VLAN,否则该 VLAN 的流量无法到达路由器
思考题
- 如果路由器子接口忘记配置
arp broadcast enable,PC 能 Ping 通同 VLAN 内的其他 PC 吗?能 Ping 通网关吗?为什么? - 单臂路由方案中,VLAN 10 到 VLAN 20 的流量需要经过几条物理链路(从交换机到路由器再回到交换机)?这对带宽有什么影响?
- 一台路由器有一个 GE 接口,最多可以创建多少个 VLAN 子接口?受什么因素限制?
下篇预告
单臂路由虽然经典,但存在带宽瓶颈。企业网络中最主流的跨 VLAN 通信方案是使用三层交换机的 VLANIF 接口。下一篇文章《三层交换机 VLANIF 接口实战配置》将带你动手完成完整的三层交换配置,并掌握 VLANIF 的高级特性。