VLAN、Access、Trunk、Hybrid 到底怎么理解?PVID、Tagged/Untagged 与跨交换机转发一次讲清
前言
VLAN 是数通里最基础、也最容易出现“会配置,但没真正理解”的知识点之一。
很多人能背出:
Access 接 PC; Trunk 接交换机; Hybrid 比较灵活; 不同 VLAN 之间默认不能直接通信。但继续追问,问题马上就来了:
PVID 到底干什么? Untagged 帧进入 Trunk 会不会直接丢弃? Trunk 上为什么有些帧带 Tag,有些不带? Hybrid 和 Trunk 真正区别是什么? 同一个 VLAN 跨两台交换机为什么还能通信? 两端 Trunk 都允许 VLAN 10,为什么业务还是不通? PVID 两端不一致会造成什么后果?本文不从背定义开始,而是围绕一个核心问题展开:
一个以太网帧进入交换机时,被归到哪个 VLAN?离开交换机时,又以 Tagged 还是 Untagged 的形式发送?
只要把“入方向 VLAN 归属”和“出方向 Tag 处理”想清楚,Access、Trunk、Hybrid、PVID 基本就全串起来了。
本文以IEEE 802.1Q 通用原理 + H3C Comware 端口行为为主要背景,并加入 H3C 基础配置、跨交换机转发案例和故障排查。
@TOC
一、VLAN 到底解决什么问题?
1. 没有 VLAN 时,一个交换网络就是一个大广播域
假设一台交换机连接了研发、财务、访客和服务器设备。
如果所有端口都处于同一个广播域,PC-A 发出 ARP 广播时,交换机会向同广播域内其他端口泛洪。
网络规模越大,就越容易出现:
广播范围过大;
不同部门缺少二层隔离;
网络迁移严重依赖物理位置;
安全边界模糊;
故障影响面扩大。
VLAN 的作用就是:
把一个物理二层网络划分为多个逻辑二层广播域。
例如:
VLAN 10:研发部 VLAN 20:财务部 VLAN 30:访客网络 VLAN 40:服务器区即使这些终端物理上连接在同一台交换机上,只要 VLAN 不同,它们在二层就属于不同的逻辑网络。
2. VLAN 的三个核心价值
隔离广播域
VLAN 10 内的广播不会自动跨到 VLAN 20。
实现逻辑隔离
不同业务可以共享同一套交换基础设施,但在二层上保持隔离。
网络划分不再完全依赖物理位置
不同楼层、不同交换机上的终端,只要属于相同 VLAN,而且中间链路正确承载该 VLAN,就可以处于同一个逻辑二层网络。
二、802.1Q Tag:交换机怎么区分不同 VLAN?
3. 为什么需要 VLAN Tag?
假设交换机之间只有一条链路,却需要同时承载:
VLAN 10 VLAN 20 VLAN 30 VLAN 40如果帧本身没有任何 VLAN 标识,对端交换机就不知道帧属于哪个广播域。
IEEE 802.1Q 的解决方法是:
在以太网帧中插入 4 字节 VLAN Tag。
802.1Q Tag 中最重要的字段包括:
TPID: 常见值 0x8100,用于标识 VLAN Tag。 Priority: 3 bit,表示 802.1p 优先级。 CFI/DEI: 1 bit。 VLAN ID: 12 bit,标识报文所属 VLAN。VLAN ID 的 12 bit 空间是 0~4095,其中 0 和 4095 保留,因此常规可配置 VLAN 为:
1 ~ 40944. Tagged 和 Untagged 是什么意思?
Tagged Frame
帧中携带 802.1Q VLAN Tag。
例如:
VID = 10交换机直接知道:
这是 VLAN 10 的帧。Untagged Frame
帧本身没有 802.1Q Tag。
普通 PC、打印机等终端通常发送的就是 Untagged Ethernet Frame。
但是必须记住:
Untagged 不等于“不属于任何 VLAN”。
它只代表帧本身没有携带 VLAN ID。进入交换机以后,端口仍然会根据自身配置给它确定 VLAN 归属。
这个配置就是PVID。
三、PVID:理解 VLAN 端口的关键
5. PVID 到底是什么?
PVID 全称:
Port VLAN ID
最实用的理解方式是:
PVID 主要用于决定端口收到的 Untagged 帧默认属于哪个 VLAN。
假设:
GE1/0/1 PVID = VLAN 10PC 发送普通 Untagged 帧进入 GE1/0/1:
帧没有 VLAN Tag ↓ 端口 PVID = 10 ↓ 交换机把该帧归入 VLAN 10 ↓ 后续在 VLAN 10 的广播域和 MAC 表中处理6. PVID 不是“把所有帧都强制改成这个 VLAN”
假设 Trunk:
PVID = 10 Permit VLAN 10 20如果收到一个:
Tagged VLAN 20交换机不会因为 PVID 是 10 就把它改成 VLAN 10。
它仍然按照自身 Tag:
VLAN 20进行处理。
所以可以记成:
PVID 重点影响 Untagged 入帧;已经带 Tag 的帧主要按自身 VLAN ID 检查。
7. Access、Trunk、Hybrid 都有 PVID 吗?
都有,但用途表现不同。
Access: 只能加入一个 VLAN,所属 VLAN 就是 PVID。 Trunk: 可以通过多个 VLAN,同时配置一个 PVID。 Hybrid: 同样可以通过多个 VLAN,并配置一个 PVID。H3C 官方建议互联两端端口 PVID 保持一致,否则 Untagged 流量可能被两端解释成不同 VLAN。
四、Access、Trunk、Hybrid 先用三句话理解
8. 三种端口的核心差异
Access: 一个 VLAN,向外发送时不带 Tag。 Trunk: 多个 VLAN,PVID VLAN 可以 Untagged, 其他允许 VLAN 通常 Tagged。 Hybrid: 多个 VLAN,并且可以逐 VLAN 决定 出方向是 Tagged 还是 Untagged。五、Access 端口
9. Access 一般连接什么设备?
常见终端:
PC;
打印机;
普通服务器;
摄像头;
其他不需要感知 VLAN Tag 的终端。
例如:
GE1/0/1 Access VLAN 1010. Access 收到 Untagged 帧
PC 发出的普通帧没有 Tag:
Untagged ↓ Access PVID = 10 ↓ 交换机将其归入 VLAN 1011. Access 收到 Tagged 帧
以 H3C 端口处理逻辑为例:
Tagged VLAN ID = PVID → 接收 Tagged VLAN ID ≠ PVID → 丢弃普通 PC 通常不会主动发送 Tagged 帧,所以日常办公接入口很少碰到这个场景。
12. Access 发帧
Access 端口向终端发送帧时:
去掉 VLAN Tag,以 Untagged 形式发送。
因此普通终端完全可以不知道 VLAN 的存在。
13. H3C Access 配置
创建 VLAN:
system-view vlan 10 quit配置接口:
interface GigabitEthernet 1/0/1 port link-type access port access vlan 10 quit验证:
display vlan 10 display current-configuration interface GigabitEthernet 1/0/1六、Trunk 端口
14. 为什么需要 Trunk?
如果两台交换机都存在:
VLAN 10 VLAN 20 VLAN 30不可能每个 VLAN 都单独拉一条物理线。
Trunk 的作用就是:
让一条物理链路同时承载多个 VLAN。
15. Trunk 收到 Tagged 帧
假设:
Permit VLAN 10 20 30收到:
Tagged VLAN 20因为 VLAN 20 在允许列表中:
接收并继续按 VLAN 20 处理。如果收到:
Tagged VLAN 50VLAN 50 不在允许列表:
丢弃。16. 重点:Trunk 收到 Untagged 会不会直接丢弃?
很多入门文章会直接写:
Trunk 只接收 Tagged 帧。对于 H3C Comware 来说,这个说法并不准确。
H3C 的逻辑是:
如果 Trunk 的 PVID 在允许 VLAN 列表中: 收到 Untagged → 接收 → 归入 PVID。 如果 PVID 不在允许列表中: 收到 Untagged → 丢弃。例如:
PVID = 10 Permit VLAN 10 20收到 Untagged:
→ 归入 VLAN 10而:
PVID = 10 Permit VLAN 20VLAN 10 没有被允许:
→ Untagged 入帧被丢弃所以 H3C 官方配置指导会特别提醒:
配置 Trunk PVID 后,还必须允许 PVID 对应 VLAN 通过。
17. Trunk 出方向什么时候带 Tag?
假设:
PVID = 10 Permit VLAN 10 20VLAN 10 出方向
因为:
VLAN ID = PVID而且 VLAN 10 被允许:
去掉 Tag → Untagged 发送VLAN 20 出方向
因为:
VLAN ID ≠ PVID所以:
保留 VLAN 20 Tag → Tagged 发送可以直接记:
Trunk: PVID VLAN → Untagged 其他允许 VLAN → Tagged18. H3C Trunk 配置
system-view vlan 10 vlan 20 interface GigabitEthernet 1/0/24 port link-type trunk port trunk permit vlan 10 20 quit如果要修改 PVID:
interface GigabitEthernet 1/0/24 port trunk pvid vlan 10注意 VLAN 10 仍需处于 Permit 列表中。
七、同 VLAN 跨交换机如何通信?
19. 完整转发过程
拓扑:
PC-A —— SW1 ===== SW2 —— PC-B Access Trunk Access VLAN 10 VLAN 10地址:
PC-A:192.168.10.10/24 PC-B:192.168.10.20/24第一步:PC-A 发普通帧
PC-A 并不知道“自己属于 VLAN 10”,只发送普通 Ethernet Frame:
Untagged第二步:SW1 Access 口给帧确定 VLAN 身份
Access VLAN 10 PVID 10因此:
Untagged → VLAN 10第三步:经过交换机间 Trunk
如果 Trunk 的 PVID 不是 10,则 VLAN 10 帧通常会以:
Tagged VID = 10跨越交换机间链路。
第四步:SW2 识别 VLAN 10
SW2 收到后检查:
VLAN 10 是否被 Trunk 允许?允许后,在 VLAN 10 的 MAC 表中查找 PC-B。
第五步:从 Access 口发给 PC-B
SW2 在 Access VLAN 10 端口:
去掉 Tag → Untagged → PC-B所以可以总结:
同 VLAN 跨交换机通信的本质,是网络设备之间保存 VLAN 身份,而终端侧通常不需要感知 Tag。
八、Trunk 两端 PVID 不一致会发生什么?
20. 一个非常隐蔽的 VLAN 故障
假设:
SW1
Trunk PVID = 10 Permit VLAN 10 20SW2
Trunk PVID = 20 Permit VLAN 10 20SW1 发 VLAN 10:
VLAN 10 = SW1 PVID → 去 Tag → Untagged 发送SW2 收到 Untagged:
SW2 PVID = 20 → 把帧归入 VLAN 20于是同一个帧:
SW1 认为属于 VLAN 10 SW2 却认为属于 VLAN 20可能造成:
VLAN 泄漏;
单向通信;
MAC 学习异常;
某些 VLAN 偶发不通;
排障现象非常诡异。
因此交换机互联端口应尽量保持:
两端 PVID 一致 + PVID VLAN 都在允许列表中九、Hybrid:真正的灵活点在哪里?
21. Hybrid 和 Trunk 真正区别
很多人喜欢说:
Hybrid = Access + Trunk这并不能准确说明它的价值。
更关键的区别是:
Hybrid 可以针对多个 VLAN,分别决定从该端口发出去时是 Tagged 还是 Untagged。
例如:
PVID = 10 VLAN 10 → Untagged VLAN 20 → Untagged VLAN 30 → Tagged VLAN 40 → Tagged而 Trunk 的逻辑通常更固定:
PVID VLAN → Untagged 其他允许 VLAN → Tagged22. Hybrid 入方向
收到 Untagged 时仍然通过:
PVID确定 VLAN 身份。
收到 Tagged 时,则检查该 VLAN 是否被 Hybrid 允许。
23. Hybrid 出方向
H3C 可以直接配置:
port hybrid vlan 10 20 untagged port hybrid vlan 30 40 tagged于是:
VLAN 10、20:离开接口去 Tag VLAN 30、40:离开接口保留 Tag24. H3C Hybrid 配置
system-view vlan 10 vlan 20 vlan 30 vlan 40 interface GigabitEthernet 1/0/10 port link-type hybrid port hybrid pvid vlan 10 port hybrid vlan 10 20 untagged port hybrid vlan 30 40 tagged quit注意:
PVID = VLAN 10并不等于 VLAN 10 自动被允许发送,仍需通过port hybrid vlan配置允许。
25. Hybrid 常见场景
语音 + 数据;
复杂终端接入;
某些 VLAN 对终端 Untagged;
某些 VLAN 对下游设备 Tagged;
特殊二层业务设计。
但一定要记住:
Hybrid 只改变二层 VLAN 与 Tag 处理,不会让不同 VLAN 自动实现三层互通。
十、Access / Trunk / Hybrid 一张表
| 项目 | Access | Trunk | Hybrid |
|---|---|---|---|
| 可加入 VLAN 数 | 1 | 多个 | 多个 |
| 典型用途 | 终端接入 | 网络设备互联 | 复杂混合接入 |
| Untagged 入帧 | 归入 PVID | PVID 被允许时归入 PVID | PVID 被允许时归入 PVID |
| Tagged 入帧 | VID=PVID 才接收 | VLAN 被允许则接收 | VLAN 被允许则接收 |
| 出方向 Tag | 去 Tag | PVID VLAN 去 Tag,其他保留 | 每个 VLAN 单独配置 |
| 灵活性 | 低 | 中 | 高 |
| 配置复杂度 | 低 | 中 | 高 |
十一、不同 VLAN 为什么默认不能通信?
26. VLAN 隔离的是二层广播域
例如:
VLAN 10:192.168.10.0/24 VLAN 20:192.168.20.0/24它们属于:
不同二层广播域 + 不同 IP 子网因此 VLAN 10 的主机访问 VLAN 20 时,需要把报文交给默认网关,由三层设备完成路由。
27. H3C Vlan-interface 三层互通
system-view interface Vlan-interface 10 ip address 192.168.10.1 255.255.255.0 quit interface Vlan-interface 20 ip address 192.168.20.1 255.255.255.0 quit终端默认网关:
VLAN 10 → 192.168.10.1 VLAN 20 → 192.168.20.1三层交换机即可执行:
VLAN 10 ↓ Vlan-interface10 ↓ IP 路由表 ↓ Vlan-interface20 ↓ VLAN 2028. 单臂路由
如果使用二层交换机 + 路由器,也可以通过一根 Trunk 连接路由器,再在路由器上划分多个逻辑子接口:
二层交换机 || Trunk || 路由器物理口 ├─ VLAN 10 子接口 ├─ VLAN 20 子接口 └─ VLAN 30 子接口这种方式称为 Router-on-a-Stick,常用于实验和小规模场景。
十二、H3C 基础实验
29. 实验拓扑
PC1 —— SW1 ===== SW2 —— PC2 | Trunk | PC3 —— | | —— PC4规划:
PC1、PC2:VLAN 10 PC3、PC4:VLAN 20 SW1-SW2:Trunk,允许 VLAN 10、2030. SW1 配置
system-view vlan 10 name DEV quit vlan 20 name FINANCE quit interface GigabitEthernet 1/0/1 port link-type access port access vlan 10 quit interface GigabitEthernet 1/0/2 port link-type access port access vlan 20 quit interface GigabitEthernet 1/0/24 port link-type trunk port trunk permit vlan 10 20 quit31. SW2 配置
system-view vlan 10 vlan 20 interface GigabitEthernet 1/0/1 port link-type access port access vlan 10 quit interface GigabitEthernet 1/0/2 port link-type access port access vlan 20 quit interface GigabitEthernet 1/0/24 port link-type trunk port trunk permit vlan 10 20 quit32. 预期结果
PC1 ↔ PC2: 同 VLAN 10,可以二层通信。 PC3 ↔ PC4: 同 VLAN 20,可以二层通信。 PC1 ↔ PC3: 不同 VLAN,没有三层网关时不能直接通信。十三、VLAN 不通怎么排查?
33. 标准排查流程
第一步:VLAN 是否存在
display vlan确认两台设备都存在目标 VLAN。
第二步:Access 口是不是进了正确 VLAN
display current-configuration interface GigabitEthernet 1/0/1典型错误:
用户应该在 VLAN 20, 接口仍然留在默认 VLAN 1。第三步:Trunk/Hybrid 是否放行目标 VLAN
典型现象:
VLAN 10 正常 VLAN 20 不通如果两端 Access 都正确,就重点检查中间 Trunk 是否允许 VLAN 20。
第四步:PVID 是否正确
检查:
Trunk 两端 PVID 是否一致;
PVID VLAN 是否同时在 Permit 列表;
Hybrid PVID 是否同时被
port hybrid vlan允许。
第五步:Hybrid Tagged/Untagged 是否符合设计
如果一端发 Untagged,而对端按照另一个 PVID 解释,就可能进入错误 VLAN。
第六步:查看 MAC 地址学习
display mac-address重点看:
终端 MAC 学到了哪个 VLAN? 在哪个接口? 是否有 MAC 漂移?第七步:跨 VLAN 时检查三层
如果:
VLAN 10 内能通 VLAN 20 内能通 VLAN 10 与 VLAN 20 不能通继续检查:
Vlan-interface 是否 Up; 网关 IP; 终端默认网关; ARP; IP 路由; ACL。常用:
display ip interface brief display arp display ip routing-table第八步:抓包验证 Tag
复杂场景最后可以抓包确认:
帧进入链路时有没有 802.1Q Tag? VLAN ID 是多少? 本应 Tagged 的地方是否变成 Untagged?十四、七个高频误区
34. Untagged 就是不属于任何 VLAN?
错误。
Untagged 只代表帧本身没有 VLAN Tag。进入交换机后,PVID 会确定默认 VLAN 身份。
35. Trunk 只接收 Tagged?
对于 H3C Comware,不准确。
当 PVID VLAN 被 Trunk 允许通过时,Trunk 可以接收 Untagged,并把它归入 PVID。
36. Trunk 上所有帧都带 Tag?
也不准确。
H3C 常见逻辑:
PVID VLAN → Untagged 其他允许 VLAN → Tagged37. PVID 就等于 Permit VLAN?
错误。
PVID: 主要决定 Untagged 入帧默认归属。 Permit VLAN: 决定端口允许哪些 VLAN 通过。配置了 PVID,不代表该 VLAN 自动被 Permit。
38. Hybrid 能让不同 VLAN 直接互通?
错误。
Hybrid 只是控制二层 VLAN 成员和标签方式。跨 VLAN IP 通信仍然需要三层设备。
39. PVID 和 Native VLAN 在所有厂商完全相同?
不建议这样理解。
不同厂商在术语、默认值和收发行为上可能存在差异。H3C 文档主要使用 PVID,Cisco 等平台常见 Native VLAN 术语。实际配置要按设备实现判断。
40. 同 VLAN、同 IP 网段就一定能通?
还要确认:
中间 Trunk 是否放行该 VLAN;
STP 是否让业务走到预期链路;
MAC 是否正确学习;
端口是否 Up;
主机掩码、防火墙是否正确;
是否配置端口隔离、ACL 等功能。
十五、面试速记
Access、Trunk、Hybrid 核心区别
Access: 单 VLAN,典型接终端,出方向 Untagged。 Trunk: 多 VLAN,典型设备互联,PVID VLAN 通常 Untagged,其他 VLAN Tagged。 Hybrid: 多 VLAN,并可逐 VLAN 指定 Tagged/Untagged。PVID 的核心作用
为端口收到的 Untagged 帧确定默认 VLAN 身份。
为什么 Trunk 两端 PVID 最好一致?
因为 Untagged 帧在两端分别按照本端 PVID 归类。PVID 不一致时,同一帧可能被两端放入不同 VLAN。
同 VLAN 跨交换机怎么通信?
Access 口处理终端侧 Untagged,交换机间链路保存 VLAN 身份,对端再按照 VLAN ID 转发到目标 Access 端口。
不同 VLAN 为什么必须经过三层?
因为不同 VLAN 是不同二层广播域;跨 VLAN 通信需要 VLAN-interface、SVI 或路由器执行 IP 路由。
总结
如果只想记住本文最重要的四句话:
VLAN
把一个物理二层网络 划分成多个逻辑广播域。PVID
主要决定 Untagged 入帧 默认属于哪个 VLAN。Trunk
一条链路承载多个 VLAN; PVID VLAN 常以 Untagged 发送; 其他允许 VLAN 通常 Tagged。Hybrid
比 Trunk 更灵活; 可以针对多个 VLAN 分别配置 Tagged 或 Untagged。真正理解 VLAN,不要只背:
Access 接 PC; Trunk 接交换机。而是每看到一个帧,都问自己两个问题:
它进入这个端口以后,被归入哪个 VLAN?
它离开这个端口的时候,到底带不带 802.1Q Tag?
只要能顺着一个帧把这两个方向走完整,Access、Trunk、Hybrid、PVID 基本就不会再混。
