第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)

PC_A(VLAN 10)访问 PC_B(VLAN 20) - 图示

5.2 关键观察

  1. 往返流量经过同一条物理链路:上行和下行数据都经过 GE0/0/24 ↔ GE0/0/0 这条 Trunk 链路,形成"往返瓶颈"
  2. 每经过一层路由,MAC 地址变化:从 PC_A 到路由器时目的 MAC 是子接口 .10 的 MAC;从路由器到 PC_B 时源 MAC 是子接口 .20 的 MAC
  3. 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 的流量无法到达路由器

思考题

  1. 如果路由器子接口忘记配置 arp broadcast enable,PC 能 Ping 通同 VLAN 内的其他 PC 吗?能 Ping 通网关吗?为什么?
  2. 单臂路由方案中,VLAN 10 到 VLAN 20 的流量需要经过几条物理链路(从交换机到路由器再回到交换机)?这对带宽有什么影响?
  3. 一台路由器有一个 GE 接口,最多可以创建多少个 VLAN 子接口?受什么因素限制?

下篇预告

单臂路由虽然经典,但存在带宽瓶颈。企业网络中最主流的跨 VLAN 通信方案是使用三层交换机的 VLANIF 接口。下一篇文章《三层交换机 VLANIF 接口实战配置》将带你动手完成完整的三层交换配置,并掌握 VLANIF 的高级特性。