华为交换机端口VLAN配置:port default vlan与link-type access的区别与避坑指南
华为交换机上给端口划分 VLAN,最常踩的一个坑就是:port default vlan 这条命令明明敲了,但忘了加 port link-type access,结果业务表面上没问题,等到接带 tag 的设备、做安全审计、或者碰上遗留配置时,才暴露出端口行为和预期完全不是一回事。这个坑跨了很多工程师,尤其是从 Cisco 环境转过来的人,因为 Cisco 一条 switchport access vlan 10 就隐含了 access 模式,华为却没有这个“隐含”,没写 link-type 的端口默认是 hybrid。这篇文章就把差别掰开揉碎讲清楚,适合网络运维、数通售后和做配置规范的同学参考。
1. 同样一条命令,三种 link-type 三种含义
1.1 华为端口默认是 hybrid,不是 access
华为 S 系列交换机(S5700、S5720、S12700 等)上,接口出厂默认的 link-type 是 hybrid,PVID 是 1,untagged 列表里默认放行 VLAN 1。这意味着你新建一个接口配置,什么都不敲的时候,它已经是一个“能转发 VLAN 1 untagged 报文”的 hybrid 口了。
很多从 Cisco 迁移过来的工程师,习惯性的认知是“给端口配 VLAN”,默认就应该是 access,switchport access vlan 一敲,端口自动变成 access。到了华为环境,只敲 port default vlan 10,然后发现 display port vlan 里 Link Type 还是 hybrid,这时候大多数人的第一反应是“诶,怎么没生效?”其实不是没生效,是这条命令本来就不负责改 link-type,它只负责设置默认 VLAN(PVID)以及对应的 untagged 放行关系。真正决定端口收发包模式的是 port link-type,两条命令是分开的,这个设计上的差异就是后面所有坑的根源。
1.2 port default vlan 在不同 link-type 下的真实含义
port default vlan 这条命令本身是“上下文相关”的,它在 access、hybrid、trunk 三种模式下执行,效果完全不同。把它理解成一条“给端口设置 PVID 并同步调整默认 VLAN 放行关系”的命令,才不容易误用。
| link-type | 执行 port default vlan 10 后 | 端口实际允许的 VLAN |
|---|---|---|
| access | 设置该口的 access vlan 为 10,端口全部报文以 VLAN 10 收发,出方向剥 tag | 仅 VLAN 10,其他 VLAN tag 报文一律丢弃 |
| hybrid | PVID 变为 10,系统自动把 VLAN 10 加入 hybrid untagged 列表,并移除原 PVID(默认是 VLAN 1) | 取决于 untagged/tagged 列表,新增后通常放行 VLAN 10,但遗留的其他列表项仍然生效 |
| trunk | 仅把 PVID 改为 10,不会自动加入 allow-pass vlan 列表 | 只放行 allow-pass 列表中的 VLAN,默认场景下 VLAN 1 仍在列表里 |
从这里就能看出,“同样配置 port default vlan,加不加 link-type access 差别巨大”这句话的本质:如果你不加 port link-type access,端口保持默认的 hybrid 模式,port default vlan 只是改了 PVID;如果加上了,端口才真正变成“单 VLAN 独占”的接入模型。而在 trunk 模式下更极端,光改 PVID 甚至连 VLAN 10 的转发权限都没有,数据依然不通,这种“命令敲了但没起到以为的作用”的假配置,最容易在变更窗口里造成事故。
2. 加不加 link-type access,报文处理到底差在哪
2.1 先看数据面:只连一台 PC 时两者几乎一样
先说结论,很