之前在机房加一台接入交换机时,遇到一个看起来并不复杂、却很容易翻车的场景:财务部规划在 VLAN 10,办公区规划在 VLAN 20,单台交换机上划分好 VLAN 后,各部门内部通信都很正常。可一旦两台交换机之间用网线互连,另一台交换机上同一个 VLAN 的 PC 怎么也 ping 不通。后来排查发现,问题根本不在 IP 地址,而在于两台交换机之间的链路没有按 Trunk 方式去放行 VLAN 标签。本文就从这次排查出发,系统梳理交换机之间带 VLAN 通信的原理、配置和验证方法,同时覆盖华为、思科、锐捷的常见命令差异,希望能给正在做网络规划或日常排错的你提供一份可直接参考的笔记。
1. VLAN 到底是什么?它解决了什么问题
1.1 VLAN 的本质:隔离广播域
VLAN 的全称是 Virtual Local Area Network,中文叫虚拟局域网。它的核心作用是在一台物理交换机上,把端口划分成多个逻辑隔离的二层网络。
在没有 VLAN 的网络里,一台交换机下的所有端口都属于同一个广播域。只要有一台主机发送广播包,比如 ARP 请求、DHCP Discover,交换机会把这些广播包转发到除接收端口以外的所有端口。设备数量少时问题不明显,一旦接入上百台终端,广播报文会大量消耗交换机 CPU 和链路带宽,还会带来安全隐患:任意两台主机默认都能二层互通。
VLAN 把广播域切割开之后,同一个 VLAN 内的设备可以互相发送广播,不同 VLAN 之间默认不能直接进行二层通信。这样既能缩小广播域,又天然形成了一层隔离。比如财务部和办公区划到不同 VLAN,财务部的广播报文不会传到办公区,办公区的主机也无法直接访问财务部主机,除非经过三层设备做路由控制。
1.2 单交换机 VLAN 通信看起来正常,跨交换机就出问题
在一台交换机上做 VLAN 划分是比较容易理解的:把某个端口划进 VLAN 10,另外几个端口划进 VLAN 20,同 VLAN 端口之间可以通信,不同 VLAN 端口之间不通。很多同学第一次做实验时都能顺利通过。
问题往往出现在交换机数量变多之后。假设网络里有两台交换机,一台接入财务部的主机,另一台接入办公区的主机,那么位于不同交换机上的两个端口如果要属于同一个 VLAN,就必须靠两台交换机之间的链路把这些“同一个 VLAN”连接起来。
这时候容易犯的错误是:直接把两台交换机用网线相连,端口保持默认配置,以为只要同 VLAN 就能互通。实际情况却是,相同 VLAN 的 PC 跨交换机互访时,数据帧在交换机之间传输时必须要携带 VLAN 信息,否则对端交换机无法判断这个帧属于哪个 VLAN,只能把它当成默认的 VLAN 1 来处理。
1.3 为什么跨交换机后就 ping 不通了
举个例子。交换机 A 上有一个口属于 VLAN 10,交换机 B 上有一个口也属于 VLAN 10,中间链路使用的是普通口。
终端 PC1 发出一个不带 VLAN Tag 的以太网帧到达交换机 A 的 Access 口。交换机 A 根据端口所属 VLAN,知道这个帧应该属于 VLAN 10,于是它会在内部把该帧划入 VLAN 10 的转发表进行查询。如果目标 MAC 不在本机端口上,交换机 A 会把这个帧从其他属于 VLAN 10 的端口转发出去。
但两台交换机之间的互联口如果是普通 Access 口,通常只能属于一个固定 VLAN。如果这个口的 VLAN 和源帧 VLAN 不一致,交换机就会丢弃帧;即使你把互联口配成了 VLAN 10 的 Access 口,那么交换机 B 收到后,也只能把这个帧当成 VLAN 10 的普通帧处理。问题在于,交换机 B 上有多个 VLAN 时,这种“不带标签”的转发方式会很快失效,因为接收端无法区分帧到底来自哪个 VLAN,也无法把帧正确地送入对应 VLAN 的转发表。所以跨交换机通信时,我们必须在互联链路上使用 Trunk 口,并用 IEEE 802.1Q 标签来标识 VLAN 信息。
2. 跨交换机同 VLAN 通信的核心:Trunk 与 802.1Q
2.1 Access 端口:不带 Tag 进出
先明确两个基础概念。
Access 口一般用于连接终端设备,比如 PC、打印机、服务器网卡。Access 口只能属于一个 VLAN,交换机从 Access 口收到的帧默认不带 VLAN Tag,交换机会根据该端口的 PVID(Port VLAN ID)把帧界定为某个 VLAN。从 Access 口发送出去的帧也会去掉 VLAN Tag,还原成普通标准以太网帧,因为终端网卡通常不认识 802.1Q 标签。
Access 口的配置逻辑是:一个端口只服务一个 VLAN。如果终端需要更换 VLAN,就直接修改这个 Access 口的所属 VLAN,不能指望一个 Access 口同时属于 VLAN 10 和 VLAN 20。
2.2 Trunk 端口:允许哪些 VLAN 通过
Trunk 口一般用于交换机与交换机之间、交换机与路由器之间,也可以用于连接支持 802.1Q 的服务器虚拟交换机。Trunk 口可以同时承载多个 VLAN 的流量,它通过在以太网帧中插入 4 字节的 802.1Q Tag 来标识该帧属于哪个 VLAN。
Trunk 口上有一个“允许通过的 VLAN 列表”。默认情况下,华为交换机 Trunk 口只允许 VLAN 1 通过,思科交换机默认允许所有 VLAN 通过,这点是很多跨厂商设备互联时出问题的高频原因。所以配置 Trunk 时,一定要明确设置允许通过的 VLAN 列表。
2.3 PVID / Native VLAN:没带标签的帧算哪个 VLAN
PVID 是端口的默认 VLAN ID。Access 口的 PVID 就是它所属的 VLAN。Trunk 口同样有 PVID,在华为交换机上默认是 VLAN 1,对应思科体系里的 Native VLAN(本征 VLAN)。
Trunk 口收到一个不带 VLAN Tag 的帧时,交换机会把它当成 PVID 对应的 VLAN 来处理。比如执行:
[Huawei-GigabitEthernet0/0/3] port trunk pvid vlan 10这条命令的含义是:把当前 Trunk 口的 PVID 设置为 VLAN 10。如果有人误把一个不带 Tag 的帧送到这个端口,交换机会默认它是 VLAN 10 的流量。
在实际组网中,除非有特殊需求,否则建议两端 Trunk 口的 PVID/Native VLAN 保持一致。比如一端设置 PVID 为 10,另一端还保留默认 VLAN 1,那么某些不带标签的控制帧就可能被错误归类,导致二层互通异常甚至形成意外的 VLAN 变换。
2.4 数据帧在跨交换机链路中的变化过程
当 PC1 要访问跨交换机另一台 PC2 时,完整的帧变化过程可以这样理解:
- PC1 发出普通以太网帧,目的 MAC 是 PC2 的 MAC,帧里没有 VLAN Tag。
- 交换机 A 的 Access 口接收该帧,根据端口所属 VLAN 10,在内部打上 VLAN 10 的标签。
- 交换机的转发表查询后,发现目标 MAC 出现在 Trunk 口方向,于是把带 VLAN 10 Tag 的帧从 Trunk 口转发到交换机 B。
- 交换机 B 从 Trunk 口收到带 VLAN 10 Tag 的帧,识别出这是 VLAN 10 的流量,查询自己的 MAC 地址表。
- 交换机 B 发现目标 MAC 在某个 Access 口上,于是从该 Access 口转发时去掉 VLAN Tag,把普通以太网帧交给 PC2。
整个过程里,只要两台交换机之间的 Trunk 口没有放行 VLAN 10,或者对端 Trunk 口没有正确识别该标签,帧就会在某一跳被丢弃,表现就是 ping 不通。
3. 华为交换机跨交换机 VLAN 配置实战
3.1 实验拓扑与 IP 规划
下面用一个最简单的实验场景来演示跨交换机同 VLAN 的通信配置。
组网中有两台交换机,SW1 作为汇聚设备,SW2 作为接入设备,两台交换机通过各自的 GE0/0/3 口互联。PC1 接在 SW1 的 GE0/0/1 口,属于 VLAN 10;PC2 接在 SW2 的 GE0/0/1 口,也属于 VLAN 10。另外,SW2 的 GE0/0/2 口接入一台 PC3,属于 VLAN 20,用于验证不同 VLAN 之间的二层隔离效果。
IP 地址规划如下:
| 设备 | 接口/归属 | IP 地址 | VLAN |
|---|---|---|---|
| PC1 | SW1 GE0/0/1 | 192.168.10.10/24 | VLAN 10 |
| PC2 | SW2 GE0/0/1 | 192.168.10.20/24 | VLAN 10 |
| PC3 | SW2 GE0/0/2 | 192.168.20.20/24 | VLAN 20 |
| SW1-SW2 互联 | GE0/0/3 | Trunk | VLAN 10、20 |
在动手配置交换机前,需要理解 VLAN 编号只是本地概念还是全局概念。严格来说,VLAN 编号是设备上的本地配置,网络规划时为了保证跨设备通信的一致性,才要求所有交换机使用同样的 VLAN 编号来对应同一个业务。如果 SW1 上的财务 VLAN 编号是 10,而 SW2 上的财务 VLAN 编号是 30,那么即使 Trunk 配好也无法互通,这就是所谓“VLAN 规范必须全网统一”。
3.2 接入交换机配置 Access 端口
先配置 SW2,因为它承担了 PC2 和 PC3 的接入。进入系统视图后,批量创建 VLAN 10 和 VLAN 20:
system-view vlan batch 10 20接下来配置 GE0/0/1 为 Access 口,并划入 VLAN 10:
interface gigabitethernet 0/0/1 port link-type access port default vlan 10 quit再配置 GE0/0/2 为 Access 口,划入 VLAN 20:
interface gigabitethernet 0/0/2 port link-type access port default vlan 20 quit注意,端口默认情况下可能是 hybrid 模式,华为交换机的接口默认链路类型是 hybrid,而不是 access。所以显式执行port link-type access是为了让端口行为明确:只接收不带 Tag 的帧,发送时也不带 Tag。
3.3 互联口配置 Trunk
两台交换机之间的互联链路必须配置为 Trunk,并放行需要跨交换机通信的 VLAN。在 SW2 上继续配置互联口 GE0/0/3:
interface gigabitethernet 0/0/3 port link-type trunk port trunk allow-pass vlan 10 20 quit再在 SW1 上创建相同 VLAN,配置接入 PC1 的 Access 口以及互联 Trunk 口:
system-view vlan batch 10 20 interface gigabitethernet 0/0/1 port link-type access port default vlan 10 quit interface gigabitethernet 0/0/3 port link-type trunk port trunk allow-pass vlan 10 20 quit如果业务上需要把某个非 VLAN 1 的 VLAN 设置为 Trunk 口的 PVID/Native VLAN,可以再加一条命令:
interface gigabitethernet 0/0/3 port trunk pvid vlan 10 quit但要注意,如果设置了两端 Trunk 口的 PVID 都是 10,那么从这两台交换机互连链路上收到的未打标帧都会被归入 VLAN 10。普通二层网络中,链路两端设备之间的 Trunk PVID 不一致是常见故障点,例如一端默认 PVID 是 VLAN 1,另一端被改成 VLAN 10,双方对无标签帧的 VLAN 归属判断就会错位。
3.4 验证命令:display vlan / display port vlan / display interface trunk
配置完成后,应该在两台交换机上分别验证。以下三个命令在网络排障中非常常用。
在系统视图下执行:
display vlan可以看到交换机上所有 VLAN 的信息,以及每个 VLAN 包含哪些端口。输出结果中,端口成员列会显示端口号,如果是 Trunk 口,也会同时体现端口状态。
如果想知道某个端口具体是 Access 还是 Trunk,能通过哪些 VLAN,可以执行:
display port vlan更直接一点,在接口视图下执行:
interface gigabitethernet 0/0/3 display this可以看到 GE0/0/3 的实际生效配置,包括链路类型、PVID、允许通过的 VLAN 列表。
如果你想查看三层 VLANIF 接口的状态,比如是否已经配置 IP、接口状态是否为 Up,可以使用:
display int vlan brief这个命令显示的是 VLANIF 三层接口的简要状态,而不是 VLAN 端口成员表。很多初学者容易混淆:display int vlan brief看不出来某个 Access 口属于哪个 VLAN;要看端口成员关系,应该用display vlan或display port vlan。
3.5 验证通信结果
配置完成后,用 PC1 去 ping PC2:
PC> ping 192.168.10.20正常情况下应该能够 ping 通,因为两台 PC 同属 VLAN 10,中间 Trunk 链路放行了 VLAN 10。再用 PC1 去 ping PC3:
PC> ping 192.168.20.20这时应该 ping 不通,因为 PC1 属于 VLAN 10,PC3 属于 VLAN 20,二层交换机不会把 VLAN 10 的广播或单播帧直接转发到 VLAN 20。如果在这个阶段发现 PC1 能 ping 通 PC3,说明配置存在问题,比如某个端口的链路类型被错误配置成了 Trunk,或者交换机开启了某种 VLAN 间路由,又或者两台交换机上的 VLAN 规划并不一致,导致设备被划分到了同一 VLAN。
4. 不同 VLAN 之间怎么通信:三层路由方案
4.1 二层隔离决定了 VLAN 间必须走三层
不同 VLAN 之间的二层隔离是 VLAN 的基本特性。但实际业务中,财务部 PC 可能需要访问办公区的打印机,或者办公区终端需要访问财务部服务器。这种跨 VLAN 通信无法靠交换机二层转发解决,必须借助三层设备。
所谓三层设备,就是具备路由功能的设备,例如路由器,或者三层交换机。三层设备通过内部路由表,把源 VLAN 的数据报文转发到目的 VLAN。要实现 VLAN 间路由,需要为每个 VLAN 配置一个网关地址,终端把默认网关指向该地址。
4.2 单臂路由方案:路由器 + 子接口
单臂路由是一种节省路由器物理接口的方案。路由器只用一个物理接口接到交换机上,但在路由器上划分多个子接口,每个子接口对应一个 VLAN。物理接口与交换机之间必须配置为 Trunk,让不同 VLAN 的帧带着 802.1Q Tag 到达路由器,由路由器根据 Tag 决定交给哪个子接口处理。
华为路由器上的典型配置如下:
interface gigabitethernet 0/0/1.10 dot1q termination vid 10 ip address 192.168.10.254 255.255.255.0 arp broadcast enable quit interface gigabitethernet 0/0/1.20 dot1q termination vid 20 ip address 192.168.20.254 255.255.255.0 arp broadcast enable quit对应的交换机端口需要配置为 Trunk 并放行 VLAN 10、VLAN 20:
interface gigabitethernet 0/0/2 port link-type trunk port trunk allow-pass vlan 10 20 quit这里有一个容易踩的坑:华为设备的子接口默认不主动处理终结 VLAN 的广播报文,如果不配置arp broadcast enable,终端可能长时间无法解析出网关 MAC 地址,表现为能够 ping 通网关配置,但 ARP 有时会失败。
单臂路由的缺点也很明显:所有 VLAN 间流量都汇聚到一条物理链路上,链路带宽会成为瓶颈,而且路由器转发性能不一定能支撑大量内部流量。所以单臂路由一般用于小型实验环境或设备资源受限的场景。
4.3 三层交换机 VLANIF 方案:推荐做法
生产环境推荐使用三层交换机配置 VLANIF 接口来实现 VLAN 间路由。三层交换机内部同时具备二层交换芯片和三层路由模块,同一个 VLAN 内的流量走硬件交换,不同 VLAN 间的流量走三层转发,性能和灵活性都更好。
在华为三层交换机上,VLANIF 是一个逻辑三层接口。例如创建 VLAN 10 后,再创建 Vlanif10 并配置 IP 地址,这个 IP 就是 VLAN 10 内终端的网关。
继续使用前面的拓扑,在 SW1 上增加如下配置:
interface vlanif 10 ip address 192.168.10.254 255.255.255.0 quit interface vlanif 20 ip address 192.168.20.254 255.255.255.0 quit此时 PC1、PC2 的网关指向 192.168.10.254,PC3 的网关指向 192.168.20.254。SW1 收到 PC1 发往 PC3 的流量后,先根据 MAC 到达 Vlanif10,再查询路由表,发现 192.168.20.0/24 网段通过 Vlanif20 可达,于是把报文从 Vlanif20 的 VLAN 20 转发表中送出。从 SW2 的角度来看,这个报文会经过 Trunk 口到达 SW2,SW2 再将其从 Access 口转发给 PC3。
配备 VLANIF 时,强烈建议为每个业务 VLAN 规划好独立的网段和网关地址,避免多个 VLAN 共用同一网段,否则 VLAN 间路由很难配置,终端之间也会出现不可预期的 ARP 行为。
4.4 华为 eNSP 环境下的 VLAN 间互联实验
如果你没有真机,推荐使用华为 eNSP 模拟器复现以上实验。eNSP 里可以拖入两台 S5700 交换机、若干台 PC,按如下思路操作:
- 用网线连接 SW1 和 SW2,两个设备的互联口配置为 Trunk。
- 在 SW1 上创建 VLAN 10、VLAN 20,配置对应的 Vlanif 接口 IP。
- 把 PC1 接入 SW1 的 Access 口,归属 VLAN 10;PC2、PC3 接入 SW2 的 Access 口,分别归属 VLAN 10 和 VLAN 20。
- 给每台 PC 配置 IP 和网关,PC1、PC2 网关指向 192.168.10.254,PC3 网关指向 192.168.20.254。
- 用 PC1 ping PC3,验证 VLAN 间通信。
eNSP 实验里需要注意的是,不同型号交换机对 VLANIF 的支持能力不同。如果选择的是 S3700 之类的二层交换机,它本身没有三层转发能力,VLANIF 即使配了地址也无法实现路由转发。要选择具备三层能力的交换机型号,例如 S5700。另外,eNSP 模拟器不同版本对 ARP 和 VLANIF 的行为会有细微差异,如果 ping 不通,优先检查终端网关配置和交换机接口类型。
5. 思科与锐捷交换机的 VLAN / Trunk 配置速查
5.1 思科 IOS 配置示例
思科交换机的配置思路和华为类似,但命令关键字有所不同。比如设置 Access 口:
interface GigabitEthernet0/1 switchport mode access switchport access vlan 10设置 Trunk 口:
interface GigabitEthernet0/3 switchport mode trunk switchport trunk allowed vlan 10,20思科交换机默认允许所有 VLAN 通过 Trunk,这与华为默认只允许 VLAN 1 通过相反。因此,如果两台思科交换机之间互连只配了switchport mode trunk而没有指定 allowed vlan 列表,实际效果是所有 VLAN 都能通过,容易导致不必要的 VLAN 广播扩散。安全起见,建议显式限制 allowed vlan。
思科的 Native VLAN 默认是 VLAN 1。如果需要把本征 VLAN 改为 VLAN 10,可以执行:
interface GigabitEthernet0/3 switchport trunk native vlan 10注意,两端交换机对 Native VLAN 的配置必须一致,否则会引发 VLAN 跳跃或二层环路风险。
5.2 锐捷交换机配置示例
锐捷交换机的命令行风格与思科接近,下面的配置在锐捷主流交换机上可以直接参考:
interface GigabitEthernet 0/1 switchport mode access switchport access vlan 10配置 Trunk 口:
interface GigabitEthernet 0/3 switchport mode trunk switchport trunk allowed vlan 10,20锐捷部分版本对switchport trunk allowed vlan的“增加 VLAN”和“只允许指定 VLAN”行为存在细节差异,通常用逗号或横线组合写法即可,但具体语法建议以设备版本手册为准。配置前可以先执行interface GigabitEthernet 0/3,再输入问号查看该版本支持的命令。
5.3 华为 / 思科 / 锐捷配置对比
| 配置项 | 华为 VRP | 思科 IOS | 锐捷 |
|---|---|---|---|
| 创建 VLAN | vlan 10 | vlan 10 | vlan 10 |
| 配置 Access 口 | port link-type access+port default vlan 10 | switchport mode access+switchport access vlan 10 | 类似思科 |
| 配置 Trunk 口 | port link-type trunk+port trunk allow-pass vlan 10 20 | switchport mode trunk+switchport trunk allowed vlan 10,20 | 类似思科 |
| 设置 PVID/Native VLAN | port trunk pvid vlan 10 | switchport trunk native vlan 10 | 视版本而定 |
| 查看接口配置 | display this | show run interface | show running-config interface |
| 查看 VLAN 信息 | display vlan | show vlan | show vlan |
这些差异并不难记,关键是理解 Access、Trunk、PVID 三个概念。只要概念清楚,换厂商只是换一套命令壳子,排查思路完全通用。
6. 常见故障排查与思路
6.1 故障排查清单
当遇到跨交换机 VLAN 通信不通时,推荐按以下顺序排查,不要一开始就怀疑设备硬件或线路。
第一,确认终端 IP 地址、掩码、网关配置是否正确。这是最基础的一步,很多故障其实只是 PC 网关填错。
第二,确认接入端口类型。终端接入交换机的端口应该是 Access 口,并且属于对应 VLAN。如果端口是 Trunk 口,终端发出的无标签帧会被当成 PVID 对应 VLAN 处理,可能和预期不符。
第三,确认 Trunk 口放行了哪些 VLAN。在两台交换机的互联口上都执行查看命令,确认目标 VLAN 在 allow-pass 或 allowed vlan 列表中。
第四,确认 Trunk 口 PVID/Native VLAN 两端一致。如果一端把 PVID 改成了 10,另一端还是默认 VLAN 1,某些无标签帧的转发行为会出错。
第五,确认三层网关位置。如果涉及跨 VLAN 通信,终端网关必须指向具备三层转发能力设备的接口地址,而且该设备上必须存在对应 VLAN 的 VLANIF 或子接口。
第六,沿数据路径逐跳验证。可以在终端上 ping 网关,在交换机上用ping命令测试 VLANIF 之间的连通性,进一步缩小故障范围。
6.2 高频问题表
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| 同 VLAN 跨交换机 ping 不通 | Trunk 口没有放行该 VLAN,或一台交换机上未创建该 VLAN | 检查两端display vlan和display port vlan |
| Trunk 口下所有 VLAN 都不通 | 物理层问题,接口 Down,光模块故障,或线序错误 | 查看接口状态display interface brief,确认 Up/Down |
| 终端能访问同网段,但无法访问网关 | 设备上没有对应 VLANIF 或 VLANIF Down | 执行display int vlan brief查看 VLANIF 状态 |
| VLAN 间二层可以互通 | 可能默认把所有端口划分到了同一 VLAN,或设备开启愚蠢模式,或配置一致但规划混乱 | 核对display vlan端口成员表 |
| 接在 Trunk 口上的 PC 无法上网 | 终端口不应是 Trunk,PC 网卡通常不支持无标签帧进入多 VLAN 环境 | 把终端口改为 Access |
| 交换机互联后出现网络时通时断或环路 | Native VLAN/PVID 不一致,或 Trunk 放行了过多 VLAN | 统一 Trunk PVID,限制 allowed vlan,并配置生成树协议 |
6.3 抓包思路与二层转发验证
如果命令行检查都正常,但问题依旧,可以考虑抓包。抓包位置可以放在终端侧和交换机互联口侧。终端侧抓包一般看到的是不带 VLAN Tag 的普通以太网帧;互联口侧抓包如果使用 Wireshark,会看到带有 802.1Q 标签的帧,标签里包含了 VLAN ID。
一个值得记住的经验是:Access 口两侧的帧,Tag 状态一定是无标签;Trunk 口两侧的帧,除了 Native VLAN 外的其他 VLAN 都是有标签的。如果你在 Trunk 口上抓到目标 VLAN 有标签帧,但对端终端就是不通,问题大概率出在对端交换机把帧从 Trunk 口收到后,没能正确找到目标 MAC 对应的 Access 口。这时需要检查对端交换机的 MAC 地址表和 VLAN 端口成员表。
7. 最佳实践与工程建议
7.1 先做一份 VLAN 规划表
生产网络里,VLAN 编号一定要有统一规划。建议按业务类型或部门划分 VLAN,例如:
| VLAN ID | 用途 | 网段 | 网关 |
|---|---|---|---|
| VLAN 10 | 财务终端 | 192.168.10.0/24 | 192.168.10.254 |
| VLAN 20 | 办公终端 | 192.168.20.0/24 | 192.168.20.254 |
| VLAN 100 | 服务器/管理 | 192.168.100.0/24 | 192.168.100.254 |
规划表里最好同时记录网关地址、DHCP 网段、允许访问范围。后期排障时,这份表能极大降低沟通成本。
7.2 Trunk 最小化原则
Trunk 口不应该随意放行所有 VLAN。推荐只放行业务确实需要的 VLAN,这样可以限制广播域扩散。思科交换机默认允许所有 VLAN,需要在配置中显式收缩;华为交换机默认只放行 VLAN 1,需要手动增加 VLAN。
还要注意 Trunk 口的 Native VLAN/PVID 不要随意修改。如果业务没有明确要求,保持两端默认 Native VLAN 一致是最稳妥的做法。不统一的本征 VLAN 可能导致二层控制报文出现歧义,甚至造成环路。
7.3 网关与三层接口设计
使用三层交换机做 VLAN 间路由时,推荐把所有业务 VLAN 的网关集中在核心或汇聚交换机上,避免在接入交换机上堆 VLANIF,减少三层管理复杂度。中大型网络里,可以采用核心交换机 + 接入交换机的两层架构,接入交换机只负责二层接入,核心交换机负责 VLAN 间路由。
如果接入交换机同时需要多个 VLAN,互联口必须用 Trunk。如果只有单 VLAN 上联,也可以考虑 Access 口,但后续 VLAN 扩展会受限。
7.4 安全边界与环路防护
VLAN 只是二层隔离手段,不等于网络安全边界。跨 VLAN 的三层路由一旦开启,访问控制就需要依靠 ACL、防火墙策略来补充。接入侧建议开启 DHCP Snooping,并结合 IP Source Guard、IPSG 做 IP+MAC+VLAN+端口的绑定,防止用户私改 IP 或者仿冒网关。生产交换机上还应该配置生成树协议,例如 RSTP 或 MSTP,防止物理环路带来广播风暴。
如果涉及交换机管理密码遗忘,不要使用来路不明的绕过方式,应通过 console 口按照厂商官方的密码恢复流程操作,并在恢复后立即修改默认口令或弱口令,避免未授权访问风险。所有网络设备操作都应在授权范围内、在测试环境验证后再进入生产。
7.5 从物理网络延伸到虚拟化网络
VLAN 和 Trunk 这套概念不只是物理交换机适用,在虚拟化网络里同样存在。VMware 标准交换机或分布式交换机(vDS)在端口组级别就有 VLAN 设置选项,常见模式包括 VLAN 0 表示不做 VLAN 标签、VLAN ID 表示接入模式、VLAN 4095 表示 VLAN 透传。如果物理交换机连接虚拟化主机的端口需要承载多个虚拟机 VLAN,通常也要配置为 Trunk 并放行对应 VLAN,让虚拟机网卡自己识别 802.1Q 标签。
Kubernetes 场景中,Multus CNI 可以为 Pod 附加多个网络接口,当 Pod 需要接入真实业务 VLAN 时,底层网络同样要保证对应物理交换机 Trunk 放行该 VLAN。也就是说,无论网络形态怎么抽象,只要数据帧在跨设备链路上需要区分业务,Tag 与 Trunk 都是绕不开的核心机制。
8. 写在最后:一套可复用的排查心法
关于交换机之间的 VLAN 通信,很多资料喜欢直接列配置命令,但真正容易出错的地方,往往是命令背后的链路类型理解不够。当你再遇到“跨交换机 VLAN 不通”时,可以按下面这个顺序想想:源终端所在 Access 口是否在正确的 VLAN;两台交换机互联口的 Trunk 是否放行了目标 VLAN;目标终端所在交换机的 Access 口是否也属于同一个 VLAN;如果涉及跨 VLAN 访问,终端网关是否指向了三层可达接口;最后再结合 ping 和 display 命令逐跳验证。
把这几个问题在脑子里过一遍,比反复重配整台设备有效得多。建议你拿两台真机或 eNSP 模拟器,把今天的拓扑亲手配置一次,先只配 Access 跨交换机通信,再增加 Trunk 放行,然后引入 VLANIF 做 VLAN 间路由。每一步都做一次 ping 测试,你会明显感受到数据帧从“不带标签”到“带标签”的变化过程。这个实践过程走完,VLAN 和 Trunk 对你来说就不再是抽象概念了。