Skip to content

5.3 端口收发规则详解 (Access/Trunk/Hybrid)

这是 VLAN 学习中最烧脑也最重要的部分。理解了这三张表,你就理解了 VLAN 的一切。

我们将端口的处理动作分为 入方向 (接收 Inbound)出方向 (发送 Outbound)

统一法则 (Golden Rule): 交换机内部处理的数据帧,一定是带 VLAN Tag 的!

  • 入方向:如果没 Tag,就给它打上 Tag。
  • 出方向:根据端口配置,决定是剥离 Tag 发送,还是保留 Tag 发送。

0. 核心心法:VLAN List (VLAN 列表)

在深入具体端口之前,建立一个核心心理模型非常重要:每个接口都有一个“VLAN List”(允许通过的 VLAN 列表)。

  • 转发的前提:只有当数据帧所属的 VLAN 存在于接口的 VLAN List 中时,交换机才会处理(接收或发送)。
  • Access 接口:VLAN List 中有且只有 1 个 VLAN (即 PVID)。
  • Trunk 接口:VLAN List = allow-pass vlan 列表 + VLAN 1 (默认)。
  • Hybrid 接口:VLAN List = tagged 列表 + untagged 列表。

查看接口 VLAN List 的命令:

bash
display port vlan GigabitEthernet 0/0/1 active

1. Access 端口 (接入端口)

  • 场景:连接 PC、服务器、打印机等不支持 Tag 的终端设备。
  • 特点
    • 只能加入 1 个 VLAN。
    • 发送给终端的帧必须是 无标记 (Untagged) 的。

📥 入方向 (接收帧)

1. 收到无 Tag 帧:
  • 打上端口 PVID Tag (默认 VLAN 1)。
  • ✅ 接收 (进入交换机内部)。
2. 收到带 Tag 帧:
  • 检查 Tag 是否等于 PVID?
  • 是 → ✅ 接收
  • 否 → ❌ 丢弃

📤 出方向 (发送帧)

处理逻辑:
  1. 检查数据帧的 VLAN ID 是否等于 PVID?
  2. 相等 → 剥离 Tag (Untag) 后发送。
  3. 不相等 → 不发送 (逻辑上根本不会走到这个端口)。

配置示例

bash
interface G0/0/1
 port link-type access
 port default vlan 10  # PVID = 10

Tagged vs Untagged 帧格式对比

Tagged vs Untagged 帧格式对比
Untagged 帧 (无标签帧 - Access 发送给 PC 的帧):
Dst MAC
6B
Src MAC
6B
Type
2B
Data
Payload
FCS
4B
Tagged 帧 (802.1Q 带标签帧 - Trunk/交换机内部):
Dst MAC
6B
Src MAC
6B
802.1Q Tag (4B)
TPID
0x8100
PRI
3bit
CFI
1bit
VID
12bit
Type
2B
Data
Payload
FCS
4B
关键差异:
  • Untagged 帧:普通以太网帧,共 14 字节头部(6+6+2),PC/服务器可识别
  • Tagged 帧:在 Src MAC 和 Type 之间插入 4 字节 802.1Q Tag,头部变为 18 字节
  • TPID:固定值 0x8100,标识这是带 VLAN 标签的帧
  • VID:12 位,标识该帧属于哪个 VLAN(范围 0-4095)

2. Trunk 端口 (干道端口)

  • 场景:连接交换机与交换机、交换机与路由器。
  • 特点
    • 可以允许 多个 VLAN 通过。
    • 除了 PVID (Native VLAN) 的流量去 Tag 发送,其他允许的 VLAN 均 带 Tag (Tagged) 发送。

📥 入方向 (接收帧)

1. 收到无 Tag 帧:
  • 打上端口 PVID 标记。
  • 检查 PVID 是否在 Allow-Pass 列表中?
  • 在 → ✅ 接收
  • 不在 → ❌ 丢弃
2. 收到带 Tag 帧:
  • 检查 Tag 是否在 Allow-Pass 列表中?
  • 在 → ✅ 接收 (保持原 Tag)。
  • 不在 → ❌ 丢弃

📤 出方向 (发送帧)

处理逻辑:
  1. 检查 VLAN ID 是否在 Allow-Pass 列表中?不在则丢弃。
  2. 如果在列表中:
    • VLAN ID == PVID:剥离 Tag (Untag) 发送。
    • VLAN ID != PVID:保留 Tag (Tagged) 发送。

进阶:Trunk PVID 与 VLAN 1

  • 默认情况下,Trunk 端口的 PVID 是 VLAN 1,且 VLAN 1 默认在 Allow-Pass 列表中。
  • 这意味着:VLAN 1 的流量默认不带标签(Untagged)传输。
  • 安全风险 (VLAN Hopping):攻击者可能利用 PVID 的去标签特性进行跳跃攻击。
  • 最佳实践
    1. 修改 PVID 为一个不使用的 VLAN (如 999)。
    2. 或者显式禁止 VLAN 1 通过:undo port trunk allow-pass vlan 1

配置示例

bash
interface G0/0/24
 port link-type trunk
 port trunk allow-pass vlan 10 20
 port trunk pvid vlan 1  # 默认就是1,通常不改

3. Hybrid 端口 (混合端口)

  • 场景:华为/H3C 特有且默认的模式。极其灵活,可以手动指定哪些 VLAN 发送时带 Tag,哪些不带 Tag。可以实现 Access 和 Trunk 的所有功能,还能实现基于二层的 VLAN 隔离(如 PVLAN 效果)。
  • 特点
    • 拥有三个属性:PVIDTagged ListUntagged List
    • 入方向规则与 Trunk 类似。
    • 出方向规则完全由管理员自定义。

⚡ Hybrid 核心逻辑

方向情况动作
📥 入方向 (收)收到无 Tag 帧打上 PVID。检查 PVID 是否在 (Tag表 + Untag表) 中。在则收,不在丢。
收到带 Tag 帧检查 Tag 是否在 (Tag表 + Untag表) 中。在则收,不在丢。
📤 出方向 (发)VLAN 在 Untagged List剥离 Tag 发送 (像 Access)
VLAN 在 Tagged List保留 Tag 发送 (像 Trunk)

Access 是 Hybrid 的特例

  • PVID = 10
  • Untagged List = 10
  • Tagged List = Empty

Trunk 是 Hybrid 的特例

  • PVID = 1
  • Untagged List = 1 (PVID)
  • Tagged List = 10, 20 (Allow-Pass)

配置示例

bash
interface G0/0/1
 port link-type hybrid
 port hybrid pvid vlan 10
 port hybrid untagged vlan 10 20  # 发送 VLAN 10 和 20 的帧时都去标签!

4. 总结对比图

端口类型接收无 Tag 帧接收带 Tag 帧发送帧处理适用场景
Access打上 PVID仅接收 VID==PVID剥离 Tag接 PC/服务器
Trunk打上 PVID,查 Allow表查 Allow表等于 PVID 去标;
不等于 PVID 带标
接交换机/路由器
Hybrid打上 PVID,查 Tag/Untag表查 Tag/Untag表在 Untag 表里:去标
在 Tag 表里:带标
灵活控制,VLAN 隔离

5. 💡 专家视角 (Expert Insights)

5.1 心理模型:染色与褪色

不要死记硬背 Tag/Untag,试着建立这样一个直观模型:交换机内部是一个五颜六色的世界

  • 交换机内部:所有数据流必须带有颜色(VLAN Tag)。红色代表 VLAN 10,蓝色代表 VLAN 20。没有颜色的数据在交换机内部是不存在的。
  • Access 端口(色盲/翻译官)
    • 入(收):外界发来的数据是“透明”的(无 Tag)。Access 端口负责给它刷上特定的颜色(PVID)再放进交换机。
    • 出(发):交换机内部的有色数据要发给电脑。电脑看不懂颜色,Access 端口必须把颜色洗掉(剥离 Tag),变回透明数据发出去。
  • Trunk 端口(管道工)
    • 负责连接两个五颜六色的世界。它允许带着颜色传输,这样对端交换机收到后,不用重新染色,直接知道“哦,这是红色的 VLAN 10”。
    • 例外:PVID(Native VLAN)是特权阶级,Trunk 会把它“洗白”传送,对端收到“透明”数据后,默认它是 PVID 的颜色。

5.2 为什么 Hybrid 是“万能接口”?

很多初学者觉得 Hybrid 难,其实它最简单,因为它回归了本质

抛开 Access 和 Trunk 的名字,交换机端口的核心动作只有两个维度:

  1. 进门查票:允许哪些 VLAN 进来?(Access 只能进1个,Trunk 能进多个)
  2. 出门着装:出去时要不要穿马甲(Tag)?
    • Access:必须脱马甲(Untag)。
    • Trunk:除了 PVID 都要穿马甲(Tag)。

Hybrid 把这两个权限完全交给了你

  • 你可以让 VLAN 10, 20, 30 都进来(像 Trunk)。
  • 但是你可以规定:VLAN 10 出去时脱马甲(像 Access),VLAN 20 出去时穿马甲(像 Trunk)。
  • 应用场景:IP 电话。电话数据(VLAN 100)需要带 Tag(为了 QoS 优先级),但级联的 PC 数据(VLAN 200)需要不带 Tag。只有 Hybrid 能在一个端口上同时实现这两个逻辑。

6. ⚔️ 厂商对比:华为 vs 思科 vs 锐捷

不同厂商对端口模式的命名和实现略有不同,特别是 Hybrid 端口。

特性华为 (Huawei) / H3C思科 (Cisco)锐捷 (Ruijie)
默认端口模式HybridDynamic Auto (老型号) / AccessAccess
Access 模式port link-type accessswitchport mode accessswitchport mode access
Trunk 模式port link-type trunkswitchport mode trunkswitchport mode trunk
PVID 叫法PVID (Port VLAN ID)Native VLANNative VLAN
混合模式Hybrid (功能最强,默认) (但 Trunk 允许 Native VLAN)Hybrid (部分型号支持,类似华为)
配置差异必须先指定 link-type 才能配 VLAN可以直接配 VLAN,模式自动变类似思科

6.1 思科为什么没有 Hybrid?

思科的设计哲学更倾向于角色明确

  • 你要么是接 PC 的(Access)。
  • 你要么是接交换机的(Trunk)。
  • 如果你要接 IP 电话 + PC?思科搞了个 Voice VLAN 的概念,其实本质上就是 Access 端口带 Tag(PC 数据走 Access VLAN 不带标,电话数据走 Voice VLAN 带标)。这是一种简化版的 Hybrid。

6.2 锐捷的特点

锐捷的命令风格极其接近思科,但在二层防环等默认配置上(如 STP)更贴近华为。在端口模式上,锐捷通常沿用思科的 Access/Trunk 二分法,但在一些特定场景下也引入了 Hybrid 模式以支持灵活的 Tag 控制。