Trunk 配完不通?90% 栽在 PVID 和放行列表上



一、开场:Trunk 都配了,财务怎么还不通?

上一课我们把网切成了几段,问题也跟着来了:一栋楼里有接入交换机、有核心交换机,一根线要同时传好几个 VLAN,怎么办?

新办公楼那天,我带的小兄弟把接入交换机和核心交换机之间的链路配成了 Trunk。配完一测,办公 VLAN10 通得好好的,偏偏财务 VLAN20 死活不通。

他挠着头很委屈:“我 Trunk 都配了啊,怎么财务还不通?”

我让他把端口配置打出来,一眼就看出问题——放行列表里只有默认的 VLAN,财务 VLAN20 压根没放进去。Trunk 是配了,可 Trunk 上的“门禁名单”没给财务开门,财务的帧自然过不去。

我干这些年,Trunk 配完不通,十次里有九次栽在两个地方:

  1. 放行列表(allow-pass):VLAN 没在 Trunk 上放通;
  2. PVID 不一致:两端默认 VLAN 对不上,不带标签的帧被塞错房间。

这一课就把 Trunk、802.1Q 标签、收发规则、Hybrid、Voice VLAN 一次讲透,让你配完就通、不通也能快速定位。


二、Trunk 是什么:两栋楼之间的“共用主干道”

可能有人会问:不用 Trunk,给每个 VLAN 单独拉一根线行不行?

理论上行,VLAN10 一根、VLAN20 一根、VLAN30 一根,全用 Access 口。可你算笔账:一栋楼里五六个 VLAN,接入到核心就得拉五六根线,多占五六个交换机端口,布线、光模块、端口都得加钱,VLAN 一多线就乱成麻,扩容时还得再拉。Trunk 用一根线、一对口,靠标签把所有 VLAN 装进去,省线、省口、省成本,这就是它存在的意义。Trunk 也叫“干道”,名字就说明了——它是各 VLAN 共用的主干道。

1. 类比:一条传送带,同时跑多个房间的包裹

上一课的 Access 口,是只通向一个房间的门。Trunk 口则完全不同,它是两栋楼(交换机)之间共用的主干道、快递传送带:

  • 这条主干道上同时跑多个房间的包裹,VLAN10、VLAN20、VLAN30 的帧都走同一根线;
  • 为了不混淆,每个包裹上都贴着房间号贴纸,这就是 VLAN 标签(Tag);
  • 交换机在主干道上全靠这张贴纸,判断这个帧属于哪个 VLAN、该往哪送。

2. 三个关键“角色”

角色类比作用
Tag(标签)包裹上的房间号贴纸标记帧属于哪个 VLAN,Trunk 上靠它区分
放行列表主干道的门禁名单名单上的 VLAN 才能过,没名单的一律拦
PVID无标签包裹的默认房间不带标签的帧从这口进来,按 PVID 塞默认房间

两个容易踩的坑,也用类比说清:

  • 放行列表没加 VLAN:就像某个房间的包裹没在门禁名单上,根本不让上这条传送带,再怎么配链路类型都没用;
  • 两端 PVID 不一致:两栋楼“无标签包裹默认房间”的门牌贴得不一样,不带标签的包裹会被塞错房间,直接迷路。

3. 802.1Q 标签长什么样

VLAN 标签遵循 IEEE 802.1Q,在帧里插 4 个字节,位置就在源 MAC 之后:

图1:802.1Q 标签 4 字节——TPID 0x8100、PRI、CFI、VID,VID 12 位决定 VLAN 号

  • TPID(2 字节):固定 0x8100,表示“这是个带 802.1Q 标签的帧”;
  • PRI(3 位):优先级,QoS 用,语音这类高优先级帧可以靠它优先转发;
  • CFI(1 位):标识以太网/令牌环,以太网里通常为 0;
  • VID(12 位):就是 VLAN 号,范围 1~4094,这是最关键的部分。

三、Trunk 收发规则:带标签还是不带标签

1. 收发规则口诀

Trunk 口处理帧,分“进”和“出”两个方向:

帧进来(进 Trunk):

  • 帧带标签:查这个 VLAN 在不在放行列表里,在就保留标签转发,不在就丢弃;
  • 帧不带标签:打上 PVID 的标签,再按 PVID 对应 VLAN 处理。

帧出去(出 Trunk):

  • 要发出去的 VLAN 等于 PVID:剥掉标签,发无标签帧;
  • 要发出去的 VLAN 不等于 PVID:保留标签,发带标签帧。

2. Trunk 收发决策流程

带标签

在

不在

不带标签

帧到达Trunk口

帧带标签吗

该VLAN在放行列表吗

保留标签转发

丢弃

按PVID打上标签

3. 跨交换机的实际走向

图2:接入与核心交换机之间一根 Trunk,VLAN10/20/30 带标签帧共用一条线,放行列表 10 20 30

4. 三种链路类型对比

类型属于 VLAN出端口发帧典型用途
Access只一个 VLAN一律剥标签接电脑、打印机
Trunk放行列表内多个只有 PVID 剥标签,其余带标签交换机之间、上联
Hybrid灵活,可多个可自定义哪些 VLAN 带标签/不带华为特色,特殊场景

一个帧,从头到尾走一遍(把规则串起来)

财务电脑(VLAN20)发一个无标签帧,从接入交换机的 Access 口进来,打上 VLAN20 标签;这个帧要去核心,就得走 Trunk。因为 VLAN20 不等于 Trunk 的 PVID(默认 1),它带着标签上了 Trunk;到了核心交换机,先查 VLAN20 在不在放行列表(在),就保留标签接收。反过来,核心要给财务电脑回帧,最终从 Access 口出去时,标签被剥掉,电脑收到的还是无标签帧。

整个过程里,标签只在交换机之间的 Trunk 上“穿戴”,进出终端都不碰标签——这正是 Access 和 Trunk 配合的默契:终端只管收发,标签和区分都交给交换机。


四、命令落点:配 Trunk、配 Hybrid、查结果

1. 配置 Trunk 并放行 VLAN

下面是华为 VRP 完整链路,从进系统视图到保存:

<SW> system-view
[SW] vlan batch 10 20 30
[SW] interface GigabitEthernet0/0/24
[SW-GigabitEthernet0/0/24] port link-type trunk              # 设为Trunk口
[SW-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 20 30   # 放行10/20/30(关键!)
[SW-GigabitEthernet0/0/24] quit
[SW] return
<SW> save

默认 Trunk 口 PVID 是 VLAN1,一般上联场景保持默认、两端一致即可,不要随意改。若确需修改,用 port trunk pvid vlan 10,且两端必须配成一样,否则无标签帧会走错。

放行列表的几个实操细节

  • 想让 Trunk 跑所有 VLAN,用 port trunk allow-pass vlan all,但生产环境不建议,广播域和安全范围太大;
  • 已经放行一批、只想再加一个,直接再敲 port trunk allow-pass vlan 40,是追加而不是覆盖;
  • 注意 Trunk 默认就放着 VLAN1,若要彻底隔离,要确认 VLAN1 是否也该从放行列表去掉;
  • 两端放行列表要一致,一端放了、一端没放,照样不通。

2. 验证结果

<SW> display port vlan GigabitEthernet 0/0/24

正常回显(关键看 Link Type、PVID、放行了哪些 VLAN):

Port                    Link Type    PVID    VLAN List
GE0/0/24                trunk        1       1,10,20,30
  • Link Type=trunk、VLAN List 里要能看到 10、20、30,少一个就是那个 VLAN 没放通;
  • 也可以 display vlan 看该 Trunk 口在哪些 VLAN 下、是 TG(带标签)还是 UT(无标签)。

3. 异常与排查

现象命令看到什么判断动作
某个 VLAN 不通display port vlanVLAN List 缺该 VLAN放行列表没放通补 port trunk allow-pass vlan xx
无标签帧走错display port vlan两端 PVID 不一样PVID 不一致两端 PVID 配成相同
一端能通一端不通两端都看一端 Access 一端 Trunk链路类型不一致两端统一成 Trunk
有本征 VLAN 告警看日志Native VLAN mismatch两端本征 VLAN 不一致统一本征 VLAN
配了不通display vlan该 VLAN 根本没建VLAN 未创建先 vlan batch 建 VLAN

4. Hybrid 口:灵活的“万能门”

Hybrid 是华为交换机上很灵活的口,能手动指定哪些 VLAN 带标签、哪些不带标签,常用于一台口要同时接多个特殊设备的场景:

[SW] interface GigabitEthernet0/0/10
[SW-GigabitEthernet0/0/10] port link-type hybrid
[SW-GigabitEthernet0/0/10] port hybrid tagged vlan 100          # VLAN100带标签
[SW-GigabitEthernet0/0/10] port hybrid untagged vlan 10 20      # VLAN10/20不带标签
[SW-GigabitEthernet0/0/10] port hybrid pvid vlan 10
[SW-GigabitEthernet0/0/10] quit
  • tagged 的 VLAN 出端口带标签,untagged 的剥标签,按需自由组合;
  • 普通接终端用 Access、交换机互联用 Trunk 就够了,Hybrid 留到有特殊需求时再用,别为了“显得高级”把口都配成 Hybrid,反而增加维护难度。

5. Voice VLAN:给 IP 电话单独划道

很多工位是 IP 电话和电脑串接(墙面板→电话→电脑),希望语音和数据分开、语音优先。这时用 Voice VLAN:

[SW] voice-vlan 100 enable
[SW] interface GigabitEthernet0/0/5
[SW-GigabitEthernet0/0/5] voice-vlan 100 enable          # 接口启用语音VLAN
[SW-GigabitEthernet0/0/5] port link-type hybrid
[SW-GigabitEthernet0/0/5] port hybrid pvid vlan 10
[SW-GigabitEthernet0/0/5] port hybrid untagged vlan 10
[SW-GigabitEthernet0/0/5] port hybrid tagged vlan 100
  • 电话发来的语音帧进 VLAN100(带标签、优先转发),电脑数据走 VLAN10;
  • 不同型号/版本命令细节略有差异,配置前查对应版本手册,核心思路是“语音单独 VLAN、靠标签和优先级区分”。

为什么语音值得单独划一个 VLAN?

打电话对网络的要求和上网不一样:它怕延迟、怕抖动,你这边“喂喂喂”听不清、对方声音一卡一卡,往往就是语音包被大量数据挤在后面排队了。把语音单独放进 VLAN100,一来它和数据互不干扰,二来能配合 802.1Q 标签里的 PRI 优先级和 QoS,让语音包在网络拥塞时也能优先通过。这也是为什么很多企业 IP 电话要和电脑串接在同一个墙面口、却又必须在逻辑上分开——一根线进工位,里面语音、数据各走各的道,互不耽误。

思科对照

动作华为 VRP思科 IOS
设 Trunkport link-type trunkswitchport mode trunk
放行 VLANport trunk allow-pass vlan 10 20 30switchport trunk allowed vlan 10,20,30
改默认 VLANport trunk pvid vlan 10switchport trunk native vlan 10
语音 VLANvoice-vlan ... enableswitchport voice vlan 100
看口display port vlanshow interfaces trunk

思科的 Native VLAN(本征 VLAN) 对应华为的 PVID,无标签帧都走它。两端本征 VLAN 不一致,思科会明确报 VLAN mismatch 告警。


五、Trunk 不通,按这四步查

排查时还可以先从现象快速缩小范围:所有 VLAN 都不通,多半是链路类型、物理链路或 VLAN 压根没建;只有个别 VLAN 不通、其他正常,几乎可以直接锁定放行列表;时通时不通、或出现串 VLAN 的怪现象,重点查 PVID 和本征 VLAN 是否一致。先分清是“全不通”还是“个别不通”,能少走很多弯路。

图3:Trunk 不通四步排查——放行列表、PVID、链路类型、本征 VLAN;无标签帧按 PVID 进默认 VLAN

排查顺序给你固定下来,照着走:

  1. 放行列表:该 VLAN 是否在两端 allow-pass 里?没放通就加;
  2. PVID 是否一致:两端默认 VLAN 必须相同,不同就会走错;
  3. 链路类型:两端是否都是 Trunk?一端 Access 一端 Trunk 必不通;
  4. 本征 VLAN:两端 Native VLAN 是否一致?不一致会有告警。

六、🔧 运维视角 & 📐 设计视角

🔧 运维视角:

  • Trunk 配完先 display port vlan,确认链路类型、PVID、放行列表三项都对,再谈业务;
  • 某个 VLAN 不通、其他 VLAN 正常,十有八九是放行列表,别一上来就怀疑线和硬件;
  • 改 PVID 一定两端一起改,这是最容易被忽略、也最容易出玄学问题的地方。

📐 设计视角:

  • 上联 Trunk 要明确放行哪些 VLAN,不要为了省事放行所有 VLAN,会扩大广播和安全范围;
  • 全网 PVID、本征 VLAN 要有统一约定,写进设计文档;
  • 语音、监控这类需要隔离或优先的业务,从规划阶段就定好 VLAN 和标签策略,Voice VLAN 方案要提前和电话、AP 厂家对齐。

七、小结与命令速查表

  • Trunk 是交换机之间的“共用主干道”,一根线同时跑多个 VLAN,靠 802.1Q 标签区分;
  • 标签 4 字节:TPID 0x8100、PRI、CFI、VID,VID 12 位决定 VLAN 号;
  • 进 Trunk:带标签查放行列表、不带标签打 PVID;出 Trunk:等于 PVID 剥标签、不等于 PVID 带标签;
  • Trunk 不通先查放行列表,再查 PVID、链路类型、本征 VLAN;
  • Hybrid 可灵活配带/不带标签,Voice VLAN 把 IP 电话语音单独划道。

本篇命令速查表(华为 VRP):

目的华为命令思科对照
设 Trunkport link-type trunkswitchport mode trunk
放行 VLANport trunk allow-pass vlan 10 20 30switchport trunk allowed vlan 10,20,30
改 PVIDport trunk pvid vlan 10switchport trunk native vlan 10
Hybridport hybrid tagged/untagged vlan(多用 switchport 组合)
语音voice-vlan 100 enableswitchport voice vlan 100
看口display port vlan / display vlanshow interfaces trunk

八、思考题 & 评论区接招

💬 看图题(这题最能看出你有没有真懂):

两台交换机之间配了 Trunk,两端口的 PVID 不一样(左边 PVID 是 10,右边 PVID 是 20)。
这时一个不带标签的帧从左边发出来,会发生什么?它会被当成哪个 VLAN?到了右边又会怎么处理?
把你判断的过程写在评论区,我来看看谁的答案最准,也会在评论区给出完整的“帧走向”图解。


系列导航:

我是你们的老网工。到这儿,VLAN 会切了、Trunk 也会配了,二层这张网算是理清楚了。但你肯定发现一个问题:VLAN 切完之后,不同 VLAN 之间默认互相不通,那办公要访问财务服务器、要上网,怎么办? 下一课就讲 VLAN 间通信,三层交换机 VLANIF 和单臂路由到底怎么选,我们下一课见。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐