H3C交换机Trunk不通排查实例
以 H3C S5570S 和 Comware V7 为例,从故障范围、聚合状态、两端Trunk允许列表、PVID和MAC学习逐步排查单个VLAN无法通过上联的问题。
本文以 H3C S5570S 系列和 Comware V7 为主要示例。文中的 VLAN、地址、接口和设备名称都是示例,使用时要换成现场实际信息。
一、故障现象
接入交换机 HQ-Access-01 与上级交换机 HQ-Core-01 通过 Bridge-Aggregation1 相连。原来的办公 VLAN 10 和管理 VLAN 100 都正常,新增加的 VLAN 20 却无法访问网关。
接入口已经确认属于 VLAN 20,同一台交换机上的电脑之间可以通信,但流量到不了上级交换机。这种“原有 VLAN 正常,只有新增 VLAN 不通”的现象,通常先检查 Trunk 两端是否都允许这个 VLAN。
本例使用下面的信息:
| 项目 | 示例值 |
|---|---|
| 接入交换机 | HQ-Access-01 |
| 上级交换机 | HQ-Core-01 |
| 上联接口 | Bridge-Aggregation1 |
| 聚合成员端口 | GigabitEthernet1/0/49、GigabitEthernet1/0/50 |
| 正常业务 VLAN | 10 |
| 故障业务 VLAN | 20 |
| 管理 VLAN | 100 |
| Trunk PVID | 1 |
| VLAN 20 IPv4 网关 | 192.168.20.1 |
| VLAN 20 IPv6 网关 | 2001:db8:20::1 |
| 测试电脑 MAC | 00e0-fc12-3420 |
示例中的地址不能直接用于生产网络。
二、先根据故障范围判断
Trunk 承载多个 VLAN,排查时先看“全部不通”还是“只有一个 VLAN 不通”:
- 所有 VLAN 都不通:先检查网线、光模块、聚合状态和两端接口;
- 原有 VLAN 正常,只有新增 VLAN 不通:优先检查 VLAN 是否创建,以及 Trunk 两端是否都允许该 VLAN;
- 单台电脑不通,同 VLAN 其他电脑正常:先检查电脑和接入口,不要直接修改 Trunk;
- IPv4 和 IPv6 都不通:更像是二层 VLAN 路径中断;
- 只有 IPv4 或只有 IPv6 不通:继续检查对应网关、地址、邻居和上层策略。
本例的 VLAN 10 和 VLAN 100 都能正常通信,说明聚合上联没有完全中断,重点检查 VLAN 20。
三、Comware V7 排查过程
1. 确认两端都存在 VLAN 20
在接入交换机和上级交换机上分别执行:
# 接入交换机确认 VLAN 20 已创建,并查看其中的端口。
<HQ-Access-01> display vlan 20
# 上级交换机也要存在 VLAN 20。
<HQ-Core-01> display vlan 20
如果一端没有 VLAN 20,先核对网络规划,再创建正确的 VLAN。不能只看到“VLAN 20 不存在”就直接创建,因为实际业务 VLAN 可能不是这个编号。
2. 确认聚合链路正常
虽然其他 VLAN 正常,但仍要确认聚合成员端口没有异常:
# 在接入交换机查看聚合接口和成员端口状态。
<HQ-Access-01> display link-aggregation summary
<HQ-Access-01> display link-aggregation verbose bridge-aggregation 1
# 在上级交换机执行相同检查。
<HQ-Core-01> display link-aggregation summary
<HQ-Core-01> display link-aggregation verbose bridge-aggregation 1
动态聚合正常时,参与转发的成员端口应显示为 Selected。如果成员端口没有被选中,应先处理聚合问题;Trunk 允许列表正确也不能弥补聚合异常。
3. 对比两端聚合接口配置
# 查看接入交换机聚合接口的完整配置。
<HQ-Access-01> display current-configuration interface Bridge-Aggregation1
# 查看上级交换机对应聚合接口的完整配置。
<HQ-Core-01> display current-configuration interface Bridge-Aggregation1
重点比较三项:
- 两端是不是
port link-type trunk; - 两端的
port trunk permit vlan是否都包含 VLAN 20; - 两端的
port trunk pvid vlan是否一致。
本例检查后发现:
HQ-Access-01允许 VLAN 1、10、20、100;HQ-Core-01只允许 VLAN 1、10、100;- 两端 PVID 都是 VLAN 1。
这说明接入交换机能把 VLAN 20 发向上联,但上级交换机没有允许 VLAN 20 进入对应 Trunk。
4. 用 Trunk 汇总信息再次确认
# 查看接入交换机所有 Trunk 的 PVID 和允许通过的 VLAN。
<HQ-Access-01> display port trunk
# 查看上级交换机的 Trunk 汇总。
<HQ-Core-01> display port trunk
display current-configuration interface 适合看单个接口的具体命令,display port trunk 适合快速比较多条 Trunk 的 PVID 和允许列表。两种检查结合起来更容易发现遗漏。
需要注意的是,display port trunk 显示的是设备上已经存在并允许通过的 VLAN。如果只写了允许命令,但本机没有创建对应 VLAN,显示和转发结果可能与预期不同,所以前面要先执行 display vlan 20。
5. 聚合上联要检查逻辑接口
本例的两根上联网线已经加入 Bridge-Aggregation1,Trunk 配置应以聚合接口为准:
# 查看逻辑聚合接口的 Trunk 配置。
<HQ-Access-01> display current-configuration interface Bridge-Aggregation1
# 查看两个成员端口属于哪个聚合组。
<HQ-Access-01> display current-configuration interface GigabitEthernet 1/0/49
<HQ-Access-01> display current-configuration interface GigabitEthernet 1/0/50
不要在 GigabitEthernet1/0/49 和 GigabitEthernet1/0/50 上分别补 VLAN。聚合上联对外使用的是 Bridge-Aggregation1,Trunk 也应该统一在这个逻辑接口上维护。
如果现场使用的是一根普通上联,没有配置链路聚合,才在实际物理上联端口检查和修改 Trunk。
6. 通过 MAC 学习判断中断位置
让 VLAN 20 的测试电脑持续 ping 网关,再查看它的 MAC:
# 接入交换机应在电脑实际接入口学到这个 MAC。
<HQ-Access-01> display mac-address 00e0-fc12-3420 vlan 20
# 上级交换机正常收到 VLAN 20 报文后,应从下联聚合接口方向学到该 MAC。
<HQ-Core-01> display mac-address 00e0-fc12-3420 vlan 20
可以这样判断:
- 接入交换机学不到电脑 MAC:问题还在电脑、网线或接入口;
- 接入交换机能学到,上级交换机学不到:重点检查两台交换机之间的 Trunk 和聚合;
- 上级交换机也能学到:二层报文已经到达上级设备,继续检查 VLAN 接口、网关地址和上层策略。
MAC 表只能帮助判断报文走到哪里,不能单独证明双向通信已经正常。
四、修复遗漏的 VLAN
本例只在 HQ-Core-01 的聚合 Trunk 上遗漏了 VLAN 20,因此只补这一项:
<HQ-Core-01> system-view
[HQ-Core-01] interface Bridge-Aggregation1
# 在现有允许列表中增加 VLAN 20,不影响原来的 VLAN 1、10 和 100。
[HQ-Core-01-Bridge-Aggregation1] port trunk permit vlan 20
[HQ-Core-01-Bridge-Aggregation1] return
port trunk permit vlan 20 是增加 VLAN 20,不会把原有允许列表替换掉。不要为了省事改成 port trunk permit vlan all,否则以后新建的其他 VLAN 也可能通过这条主干。
如果 VLAN 20 在上级交换机上还没有创建,应先按规划创建:
<HQ-Core-01> system-view
# 只有确认 VLAN 编号正确后才创建。
[HQ-Core-01] vlan 20
[HQ-Core-01-vlan20] quit
五、PVID 是否需要修改
PVID 用来处理进入 Trunk 时没有 VLAN 标签的报文。普通业务 VLAN 经过交换机之间的 Trunk 时一般带有 VLAN 标签,所以新增 VLAN 20 不代表必须把 PVID 改成 20。
本例两端 PVID 都保持 VLAN 1:
# 查看两端 PVID,不需要为了修复 VLAN 20 而修改。
<HQ-Access-01> display port trunk
<HQ-Core-01> display port trunk
只有网络规划明确要求某个 VLAN 以无标签方式通过时,才需要调整 PVID。调整时两端应保持一致,并且该 PVID 所属 VLAN 也要加入 Trunk 允许列表。
PVID 不一致可能让无标签报文在两端进入不同 VLAN,但它不是所有 Trunk 故障的固定原因。遇到单个带标签业务 VLAN 不通,先看允许列表,不要先改 PVID。
六、验证方法
1. 检查两端配置
# 两端都应存在 VLAN 20。
<HQ-Access-01> display vlan 20
<HQ-Core-01> display vlan 20
# 两端聚合 Trunk 都应允许 VLAN 20,PVID 应符合原规划。
<HQ-Access-01> display port trunk
<HQ-Core-01> display port trunk
# 聚合成员端口仍应保持 Selected。
<HQ-Access-01> display link-aggregation verbose bridge-aggregation 1
<HQ-Core-01> display link-aggregation verbose bridge-aggregation 1
2. 检查 MAC 是否到达上级交换机
# 测试电脑持续发包后,两台交换机都应能在 VLAN 20 中查到它的 MAC。
<HQ-Access-01> display mac-address 00e0-fc12-3420 vlan 20
<HQ-Core-01> display mac-address 00e0-fc12-3420 vlan 20
3. 从电脑测试网关和业务
# 使用时替换成 VLAN 20 的实际 IPv4 和 IPv6 网关。
ping 192.168.20.1
ping 2001:db8:20::1
网关恢复后,再测试 VLAN 20 实际需要访问的内网系统和互联网。最后确认 VLAN 10、管理 VLAN 100 和交换机远程管理没有受到影响。
验证全部通过后,保存本次发生过配置变更的上级交换机:
<HQ-Core-01> save force
如果实际处理时两台设备都做过修改,就要分别验证并保存。
七、Comware V5 配置
H3C S5500 Comware V5 Release 2208 在这个 Trunk 场景中也使用 port link-type trunk、port trunk permit vlan 和 port trunk pvid vlan。
聚合上联同样在 Bridge-Aggregation1 上配置:
<HQ-Core-01> system-view
# 创建或进入 VLAN 20。
[HQ-Core-01] vlan 20
[HQ-Core-01-vlan20] quit
# 在聚合接口上配置 Trunk,并允许规划中的 VLAN。
[HQ-Core-01] interface Bridge-Aggregation1
[HQ-Core-01-Bridge-Aggregation1] port link-type trunk
[HQ-Core-01-Bridge-Aggregation1] port trunk permit vlan 1 10 20 100
[HQ-Core-01-Bridge-Aggregation1] port trunk pvid vlan 1
[HQ-Core-01-Bridge-Aggregation1] return
# 检查 VLAN、Trunk 和聚合状态。
<HQ-Core-01> display vlan 20
<HQ-Core-01> display port trunk
<HQ-Core-01> display link-aggregation verbose bridge-aggregation 1
V5 Release 2208 会把聚合接口上的相关二层配置同步到成员端口,因此也不应分别在聚合成员端口上补 VLAN。
八、常见问题
1. 聚合成员都是 Selected,为什么 VLAN 20 仍然不通
Selected 说明成员端口可以参与聚合转发,不代表每个业务 VLAN 都已经放行。还要检查两端的 Trunk 允许列表。
2. 一端允许 VLAN 20 就够了吗
不够。报文需要双向通信,两端都应存在 VLAN 20,并在对应 Trunk 上允许它通过。
3. 为什么不直接允许所有 VLAN
port trunk permit vlan all 操作简单,但范围太大。主干只允许经过规划的 VLAN,更容易核对,也能避免无关 VLAN 意外跨交换机传播。
4. 两端配置一样,还是不通
继续检查 VLAN 20 的 MAC 是否能从接入口学习到上级交换机。如果二层路径正常,再检查 Vlan-interface20、网关地址、ARP、IPv6 邻居、路由和防火墙策略。
5. 能不能在其中一个聚合成员端口上补 VLAN
不建议。使用链路聚合时,应在 Bridge-Aggregation1 上维护 Trunk 配置,让两个成员端口保持一致。
九、回退方法
如果 VLAN 20 不应该经过这条主干,可以在本次修改的上级交换机上撤销:
<HQ-Core-01> system-view
[HQ-Core-01] interface Bridge-Aggregation1
# 只删除本次增加的 VLAN 20,不影响其他已允许 VLAN。
[HQ-Core-01-Bridge-Aggregation1] undo port trunk permit vlan 20
[HQ-Core-01-Bridge-Aggregation1] return
不要顺手删除 VLAN 20。它可能还被其他端口或业务使用。只有确认整个设备都不再需要这个 VLAN 时,才能单独安排删除。
十、小结
Trunk 故障比单个 Access VLAN 配错多了一层,因为需要同时检查链路两端。原有 VLAN 正常、只有新增 VLAN 不通时,先确认两端都已创建该 VLAN,再比较两端 Trunk 允许列表,通常能很快发现遗漏。
聚合上联还要注意:Selected 只说明成员端口可以参与转发,Trunk 配置应检查和修改 Bridge-Aggregation1,不能分别维护两个成员端口。PVID 主要处理无标签报文,也不要把它当成所有 Trunk 故障的原因。
配置修正后,除了查看命令,还要确认电脑 MAC 能到达上级交换机,并完成 IPv4、IPv6 网关和实际业务测试。
十一、完整配置汇总
下面汇总本例修复后的 Comware V7 配置。两台交换机的 VLAN、允许列表和 PVID 应按现场规划调整。
1. 接入交换机
<HQ-Access-01> system-view
# 创建或进入本例使用的三个 VLAN。
[HQ-Access-01] vlan 10
[HQ-Access-01-vlan10] quit
[HQ-Access-01] vlan 20
[HQ-Access-01-vlan20] quit
[HQ-Access-01] vlan 100
[HQ-Access-01-vlan100] quit
# 在聚合接口上配置 Trunk,允许规划中的 VLAN。
[HQ-Access-01] interface Bridge-Aggregation1
[HQ-Access-01-Bridge-Aggregation1] port link-type trunk
[HQ-Access-01-Bridge-Aggregation1] port trunk permit vlan 1 10 20 100
[HQ-Access-01-Bridge-Aggregation1] port trunk pvid vlan 1
[HQ-Access-01-Bridge-Aggregation1] return
2. 上级交换机
<HQ-Core-01> system-view
# 上级交换机创建相同 VLAN。
[HQ-Core-01] vlan 10
[HQ-Core-01-vlan10] quit
[HQ-Core-01] vlan 20
[HQ-Core-01-vlan20] quit
[HQ-Core-01] vlan 100
[HQ-Core-01-vlan100] quit
# 两端聚合 Trunk 使用相同的允许列表和 PVID。
[HQ-Core-01] interface Bridge-Aggregation1
[HQ-Core-01-Bridge-Aggregation1] port link-type trunk
[HQ-Core-01-Bridge-Aggregation1] port trunk permit vlan 1 10 20 100
[HQ-Core-01-Bridge-Aggregation1] port trunk pvid vlan 1
[HQ-Core-01-Bridge-Aggregation1] return
3. 验证和保存
# 两端分别检查 VLAN、Trunk 和聚合状态。
<HQ-Access-01> display vlan 20
<HQ-Access-01> display port trunk
<HQ-Access-01> display link-aggregation verbose bridge-aggregation 1
<HQ-Core-01> display vlan 20
<HQ-Core-01> display port trunk
<HQ-Core-01> display link-aggregation verbose bridge-aggregation 1
# 测试电脑发包后,确认 MAC 已经到达上级交换机。
<HQ-Access-01> display mac-address 00e0-fc12-3420 vlan 20
<HQ-Core-01> display mac-address 00e0-fc12-3420 vlan 20
# 完成网关和实际业务测试后,保存发生过变更的设备。
<HQ-Core-01> save force