4、VLAN间路由:单臂路由的原理与配置、三层交换机的SVI接口配置、VLAN间路由的调试与排错
VLAN 能把广播域切小,网络更安全、更干净。但问题来了——不同 VLAN 之间怎么通信?
说白了,VLAN 隔离的是二层,跨 VLAN 必须走三层。实现方式就两种:单臂路由和三层交换机 SVI。我刚开始带项目时,总觉得单臂路由够用,直到有一次在核心层用路由器做单臂,带宽直接被打满……嗯,从那以后我就明白,选型不能只看能不能通。
核心结论:单臂路由适合小规模、实验环境;三层交换机 SVI 是企业级标配。
4.1 单臂路由的原理与配置
单臂路由,名字挺形象——路由器只用一条物理链路连到交换机,但在这条链路上跑多个 VLAN 的流量。怎么做到的?靠子接口。
每个子接口绑定一个 VLAN,配置一个 IP 作为该 VLAN 的网关。交换机那头,连路由器的端口要配成 Trunk,允许这些 VLAN 通过。
配置步骤(以华为设备为例)
- 交换机上创建 VLAN 10、VLAN 20,对应端口划入 Access。
- 连接路由器的端口设为 Trunk,允许 VLAN 10、20 通过。
- 路由器上进入物理接口,创建子接口 GigabitEthernet0/0/0.10,封装 dot1q 10,配 IP 192.168.10.1/24。
- 创建子接口 GigabitEthernet0/0/0.20,封装 dot1q 20,配 IP 192.168.20.1/24。
- PC 的网关分别指向对应子接口 IP。
# 交换机配置
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/24
port link-type trunk
port trunk allow-pass vlan 10 20
# 路由器配置
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
避坑指南:我曾经在配置单臂路由时,忘了在子接口下敲
arp broadcast enable,结果 PC 能 ping 通网关,但跨 VLAN 就是不通。华为设备默认不开启子接口的 ARP 广播,这是个经典坑。
4.2 三层交换机的SVI接口配置
单臂路由有个硬伤——所有跨 VLAN 流量都要绕到路由器,带宽受限于那条物理链路。你想想看,核心层流量那么大,一条线怎么扛得住?
三层交换机就不一样了。它把路由功能集成到交换机内部,通过SVI(Switch Virtual Interface)实现 VLAN 间路由。每个 VLAN 对应一个 SVI 接口,配 IP 当网关。流量在交换机内部直接转发,不走外部链路,速度就是线速。
配置步骤(华为)
- 创建 VLAN 10、VLAN 20,端口划入对应 Access。
- 创建 VLANIF 接口:
interface Vlanif10,配 IP 192.168.10.254/24。 - 创建 VLANIF 20,配 IP 192.168.20.254/24。
- 开启三层交换机的 IP 路由功能(默认开启)。
# 三层交换机配置
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 Vlanif10
ip address 192.168.10.254 255.255.255.0
interface Vlanif20
ip address 192.168.20.254 255.255.255.0
注意:SVI 接口默认是 down 的,直到对应 VLAN 下至少有一个 Access 端口或 Trunk 允许的端口处于 up 状态。如果 VLAN 里没有活跃端口,SVI 不会起来,跨 VLAN 路由自然不通。
4.3 VLAN间路由的调试与排错
配置写完了,但 PC1(VLAN 10)ping PC2(VLAN 20)不通。怎么办?别慌,我一般按这个顺序查。
排错步骤
| 步骤 | 检查项 | 命令/方法 |
|---|---|---|
| 1 | PC 网关配置 | ipconfig 确认网关 IP 是否正确 |
| 2 | VLAN 成员关系 | display vlan 10 查看端口是否在 VLAN 内 |
| 3 | Trunk 链路 | display port trunk 确认允许的 VLAN 列表 |
| 4 | SVI 接口状态 | display interface Vlanif10 看协议是否 up |
| 5 | 路由表 | display ip routing-table 确认直连路由存在 |
| 6 | ARP 表 | display arp 确认网关能学到 PC 的 MAC |
我记得有一次,客户报障说新加的 VLAN 50 跟其他 VLAN 不通。我查了一圈,VLAN 建了,SVI 配了,端口也划了,就是不通。最后用 display interface Vlanif50 一看,协议状态是 down。再查,原来那个 VLAN 下所有端口都被 shutdown 了……嗯,这种低级错误其实挺常见的。
我的习惯:配完 SVI 后,先
ping 一下网关自己,再 ping 同 VLAN 的其他 PC,最后才测跨 VLAN。逐段验证,定位快很多。
4.4 单臂路由 vs 三层交换机 SVI
| 对比项 | 单臂路由 | 三层交换机 SVI |
|---|---|---|
| 转发性能 | 受限于路由器 CPU 和链路带宽 | 硬件线速转发,性能高 |
| 扩展性 | 子接口数量有限,VLAN 多时配置复杂 | 支持大量 VLAN,扩展方便 |
| 适用场景 | 小型网络、实验、临时方案 | 企业核心、汇聚层 |
| 配置复杂度 | 需要子接口封装 dot1q | 直接配 VLANIF,更简洁 |
| 故障点 | 单链路单点故障 | 可配合堆叠/链路聚合提高可靠性 |
一句话总结:单臂路由是“借道”路由器做三层转发,三层交换机 SVI 是“自带”路由功能。能用三层交换机就别用单臂路由,除非你只是在实验室里玩玩。