第8篇:跨 VLAN 通信为什么要三层接口
一、写在前面
上一篇文章我们学会了同一 VLAN 内两台 PC 的通信过程。那问题来了:
如果 PC-A 在 VLAN 10,PC-B 在 VLAN 20,它们之间能不能直接通信?
答案是:不能。需要三层接口(路由器或三层交换机)介入。
本文解释为什么 VLAN 之间天然隔离,以及如何通过三层接口让它们通信。
二、VLAN 为什么天然隔离
2.1 每个 VLAN 是一个独立的广播域
VLAN 10 的设备:
MAC 地址表只在 VLAN 10 范围内
ARP 广播只在本 VLAN 内泛洪
二层帧只在 VLAN 10 端口间转发
VLAN 20 的设备:
同上,但与 VLAN 10 完全隔离
2.2 交换机不会在 VLAN 间转发帧
[二层交换机]
MAC 表 VLAN 10 内通信 VLAN 20 内通信 但 VLAN 10↔20 不通 PC-A PC-C VLAN 10 VLAN 20
即使 PC-A 知道 PC-C 的 IP 地址,它发出去的帧: - 目的 MAC 不会出现在 VLAN 20 的 MAC 表中 - 交换机根本不会把该帧转发到 VLAN 20 的端口
2.3 为什么故意隔离?
VLAN 隔离不是缺陷,而是设计意图:
目的
┌───────────────────┐
│ 缩小广播域 │ ← ARP 广播只在 VLAN 内
│ 安全隔离 │ ← 不同部门/业务不能互访
│ 故障域隔离 │ ← 一个 VLAN 的环路不影响其他
│ 灵活性 │ ← 逻辑分组,不依赖物理位置
└───────────────────┘
三、跨 VLAN 通信的本质
跨 VLAN 通信,本质是不同网段之间的路由——这是三层(网络层)的工作。
| 通信类型 | 设备 | 依赖的表 |
|---|---|---|
| 同 VLAN(同网段) | 二层交换机 | MAC 地址表 |
| 跨 VLAN(不同网段) | 路由器 / 三层交换机 | 路由表 |
核心概念
二层交换机 = MAC 表 → 同 VLAN 通信 三层设备 = 路由表 → 跨 VLAN 通信
四、为什么必须有三层接口?
4.1 二层接口做不到的事
二层接口只能: - 学习 MAC 地址 - 在 MAC 表内精确转发或泛洪 - 按 VLAN 标签过滤
二层接口不能: - 识别 IP 地址做路由决策 - 修改帧头中的 MAC 地址 - 从一个 VLAN 把帧转到另一个 VLAN
4.2 三层的介入
三层设备在转发数据时,会做以下操作:
PC-A(VLAN 10, 10.0.10.1) → PC-C(VLAN 20, 10.0.20.1)
步骤:
1. PC-A 发现目标不在同一网段
2. 将帧发给默认网关(三层接口的 MAC)
3. 三层设备查路由表
4. 将帧的源/目的 MAC 重写,通过 VLAN 20 接口转发
5. PC-C 收到
关键:三层设备起到了"翻译"的作用,把一个 VLAN 的数据"路由"到另一个 VLAN。
五、三种三层接口实现方式
5.1 路由器 + 物理接口
每个 VLAN 占用路由器的一个物理接口:
[路由器]
G0/0 G0/1
│ │
VLAN 10 VLAN 20
│ │
PC-A PC-C
缺点:VLAN 数量多时物理接口不够用。
5.2 单臂路由(Router-on-a-Stick)
路由器的一个物理接口通过 Trunk 接交换机,子接口对应不同 VLAN。
下篇文章会详细介绍。
5.3 三层交换机 VLANIF 接口
最常用的方式。在三层交换机上为每个 VLAN 创建虚拟三层接口:
[Huawei] interface vlanif 10
[Huawei-Vlanif10] ip address 10.0.10.254 255.255.255.0
[Huawei] interface vlanif 20
[Huawei-Vlanif20] ip address 10.0.20.254 255.255.255.0
六、三层接口的通用功能
无论是路由器的物理接口、子接口,还是 VLANIF 接口,三层接口都必须具备以下功能才能实现跨 VLAN 通信:
| 功能 | 说明 |
|---|---|
| IP 地址 | 作为该 VLAN 的网关 |
| 路由表 | 知道目标网段往哪转发 |
| ARP 应答 | 回复该 VLAN 内主机的 ARP 请求 |
| MAC 重写 | 转发时替换源/目的 MAC 地址 |
七、典型拓扑:跨 VLAN 通信全程
PC-A 三层交换机 PC-C
10.0.10.1/24 VLANIF10=10.0.10.254 10.0.20.1/24
VLAN 10 VLANIF20=10.0.20.254 VLAN 20
│ │ │
│ 1. 检查目标IP │ │
│ 10.0.20.1 ≠ 10.0.10.x │ │
│ → 发到网关 │ │
│──────────────────────>│ │
│ │ 2. 查路由表 │
│ │ 10.0.20.0/24 → VLAN20 │
│ │ │
│ │ 3. MAC重写 │
│ │ 源MAC=VLANIF20的MAC │
│ │ 目的MAC=PC-C的MAC │
│ │──────────────────────>│
│ <─────────────────────│───────────────────────│
│ PC-C 回复(反向路径同上) │
八、总结对比
| 特性 | 同 VLAN 通信 | 跨 VLAN 通信 |
|---|---|---|
| 需要的设备 | 二层交换机即可 | 三层设备(路由器/三层交换机) |
| 转发依据 | MAC 地址表 | 路由表 |
| 是否需要网关 | 不需要 | 需要 |
| 是否需要三层接口 | 不需要 | 必须 |
| MAC 是否变化 | 不变(端到端) | 每跳重写 |
| VLAN 间隔离 | 无(同一 VLAN) | 强制隔离 |
一句话总结:VLAN 是二层隔离技术,跨 VLAN 通信必须经过三层设备的三层接口做路由转发。
九、思考
- 为什么要人为通过 VLAN 把网络隔离成多个广播域?有什么好处?
- 二层交换机能不能转发跨 VLAN 的数据帧?为什么?
- PC 配了网关后在通信中扮演什么角色?
- 跨 VLAN 通信时,三层设备会对以太网帧做什么修改?
- 如果三层交换机的 VLANIF 接口忘了配 IP 地址,该 VLAN 内的 PC 能通信吗?能上网吗?
下篇预告:第9篇《单臂路由实现VLAN间通信》——学习单臂路由的配置方法,实现VLAN间路由。