第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 通信必须经过三层设备的三层接口做路由转发。


九、思考

  1. 为什么要人为通过 VLAN 把网络隔离成多个广播域?有什么好处?
  2. 二层交换机能不能转发跨 VLAN 的数据帧?为什么?
  3. PC 配了网关后在通信中扮演什么角色?
  4. 跨 VLAN 通信时,三层设备会对以太网帧做什么修改?
  5. 如果三层交换机的 VLANIF 接口忘了配 IP 地址,该 VLAN 内的 PC 能通信吗?能上网吗?

下篇预告:第9篇《单臂路由实现VLAN间通信》——学习单臂路由的配置方法,实现VLAN间路由。