news 2026/9/8 11:53:30

跨交换机VLAN通信:Trunk配置与VLAN间路由实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
跨交换机VLAN通信:Trunk配置与VLAN间路由实战指南

这次我们来看一个非常高频的网络需求:两台交换机之间要做通信,但网络里划分了 VLAN,结果同一 VLAN 的 PC 跨交换机 ping 不通,不同 VLAN 的 PC 又不能互相访问。这个问题在初学者做实验、企业内部组网、园区网维护中经常遇到。这篇文章按“同 VLAN 跨交换机”“不同 VLAN 间互访”两条主线,把链路类型、标签转发、华为/思科/锐捷/华三常用配置、eNSP 模拟验证、常见排查手段一次说清楚。

先给出结论:交换机之间带 VLAN 通信,核心就两件事。第一,两台交换机互联的端口要允许相关 VLAN 的报文通过,通常用 Trunk 链路。第二,如果还要实现不同 VLAN 之间互相访问,就必须引入三层转发,要么用路由器做单臂路由,要么用三层交换机划 VLANIF 接口。下面逐步展开。

1. 交换机间 VLAN 通信核心概念速览

先看一张速览表,把链路类型、端口角色、报文特征讲清楚。

项目说明
VLAN 标准IEEE 802.1Q,报文头中增加 4 字节 Tag 字段,其中 VLAN ID 占 12 bit
VLAN ID 范围可用配置一般是 1 到 4094,VLAN 1 通常是系统默认 VLAN
Access 口用于连接终端设备,发出的报文不带 Tag,收到带 Tag 报文时会处理本地归属
Trunk 口用于交换机之间或交换机与路由器之间,允许特定 VLAN 的报文带 Tag 穿越
Hybrid 口华为特有模式,可以同时以 Tagged/Untagged 方式加入多个 VLAN
同 VLAN 跨交换机交换机互联口配置 Trunk,并 allow-pass 对应 VLAN
不同 VLAN 间互访需要三层转发:单臂路由或三层交换机 VLANIF
默认 PVID华为/思科/锐捷/华三多数默认 PVID 和本征 VLAN 都是 1

这里需要强调一个细节:VLAN 划分解决的是二层隔离问题。同一个业务 VLAN 内的 PC 要跨交换机通信,靠的是 Trunk 链路把带 802.1Q Tag 的帧从一台交换机送到另一台交换机。而不同 VLAN 本质上是不同的二层广播域,跨 VLAN 通信必须走到三层。

2. 同 VLAN 跨交换机通信:Trunk 链路就够了

场景 1 是:交换机 SW-A 和 SW-B 通过某个端口互联,PC-A 接在 SW-A 的 VLAN 10 端口,PC-B 接在 SW-B 的 VLAN 10 端口,PC-A 要可以 ping 通 PC-B。

这里 PC-A 发出的帧进入 SW-A 的 Access 口,SW-A 会为这个帧打上 VLAN 10 的 Tag。SW-A 的 Trunk 口允许 VLAN 10 通过,这个带 Tag 的帧被从 Trunk 口发出去。SW-B 的 Trunk 口收到这个带 VLAN 10 Tag 的帧,看到允许列表里有 VLAN 10,就会把帧转发到 SW-B 上同样是 VLAN 10 的 Access 口。PC-B 收到时,帧的 Tag 已经被剥离。

这个过程必须满足两个条件。第一,两台交换机互联端口必须都是 Trunk 类型。第二,Trunk 口允许列表中必须包含 VLAN 10。很多“同 VLAN 跨交换机不通”的故障,就是 Trunk 口没有 allow-pass vlan 10,或者互联端口是 Access 口,Tag 在链路上丢失或无法正确识别。

华为交换机上的基础配置如下,SW-A 和 SW-B 都要配。

# SW-A 配置 system-view vlan batch 10 20 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass vlan 10 20 quit

这里把 VLAN 10 和 VLAN 20 都放行,模拟真实建设中可能有多个业务 VLAN 共用这条互联链路。SW-B 的配置与 SW-A 结构相同,只是用不同接口接 PC-B。

配置完成后,可以在 SW-A 上执行display port vlan来查看 Trunk 口放行了哪些 VLAN。

[SW-A] display port vlan Port Link Type PVID Trunk/Vlan List GigabitEthernet0/0/1 access 10 - GigabitEthernet0/0/3 trunk 1 1 10 20

从输出可以看到,Trunk 口的 PVID 还是默认的 1,放行列表里已经有 VLAN 10 和 VLAN 20。同 VLAN 跨交换机通信,看到这样的输出就表示配置基本正常。

3. 不同 VLAN 间通信:单臂路由与三层交换

场景 2 是更常见的需求。PC-A 在 VLAN 10,IP 是 10.0.10.1/24,网关是 10.0.10.254。PC-B 在 VLAN 20,IP 是 10.0.20.1/24,网关是 10.0.20.254。要求 PC-A 能访问 PC-B。这时不能再靠 Trunk 链路本身了,需要三层设备。

第一种方式是单臂路由。把路由器的一个物理口接到交换机的 Trunk 口,在这个物理口上创建两个子接口,分别对应 VLAN 10 和 VLAN 20,并为每个子接口配置不同网段的网关地址。

华为路由器的典型配置:

# 路由器 AR1 配置 system-view interface GigabitEthernet0/0/0.10 dot1q termination vid 10 ip address 10.0.10.254 24 arp broadcast enable quit interface GigabitEthernet0/0/0.20 dot1q termination vid 20 ip address 10.0.20.254 24 arp broadcast enable quit

交换机侧连接路由器的接口需要配成 Trunk,并放行 VLAN 10、20。PC 的网关分别指向 10.0.10.254 和 10.0.20.254。这样 VLAN 10 的报文到达路由器的子接口 .10,路由器查路由表后从子接口 .20 转发出去,在 Trunk 链路上重新打上 VLAN 20 的 Tag。

第二种方式是用三层交换机。这也是当前企业园区网最常见的做法。三层交换机的 VLANIF 接口本身就是三层网关,不需要单独接路由器。

华为三层交换机配置:

# SW-C 作为核心/汇聚交换机 system-view vlan batch 10 20 interface vlanif 10 ip address 10.0.10.254 24 quit interface vlanif 20 ip address 10.0.20.254 24 quit interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit interface GigabitEthernet0/0/2 port link-type access port default vlan 20 quit

配置完成后可以在交换机上执行display ip interface brief,看到 Vlanif10 和 Vlanif20 都已经 Up,并且有 IP 地址。PC-A ping PC-B 时,目的 IP 不在同一网段,报文先发给网关 10.0.10.254,也就是 Vlanif10;三层交换机查路由后,从 Vlanif20 转发给 PC-B。

三层交换相比单臂路由,硬件转发效率更高,网关就在交换机内部,不需要额外采购路由器,故障点也更少。缺点是必须在支持三层功能的交换机上配置,纯二层交换机配不了 VLANIF。

4. 华为交换机实操:在 eNSP 中配置跨交换机 VLAN 网络

如果不想搬两台真实交换机,可以在华为官方模拟器 eNSP 里搭拓扑快速验证。这里给一套完整验证流程。

4.1 拓扑规划

  • SW-A 和 SW-B 是二层交换机,用 GE0/0/3 互联。
  • PC-A 接 SW-A 的 GE0/0/1,属于 VLAN 10。
  • PC-B 接 SW-B 的 GE0/0/1,属于 VLAN 10。
  • SW-A 和 SW-B 互联端口为 Trunk,允许 VLAN 10 通过。

4.2 搭建步骤

  1. 打开 eNSP,新建拓扑,拖入两台 S5700 交换机、两台 PC。
  2. 用网线连接:PC-A 连 SW-A GE0/0/1,PC-B 连 SW-B GE0/0/1,SW-A GE0/0/3 连 SW-B GE0/0/3。
  3. 启动所有设备,先完成 PC 的 IP 配置。
  4. 在 SW-A 和 SW-B 上分别配置 VLAN 和 Trunk。
  5. 在 PC 上执行 ping 测试。

PC 的 IP 配置参考如下。

设备IPv4 地址子网掩码网关
PC-A10.0.10.1255.255.255.010.0.10.254
PC-B10.0.10.2255.255.255.010.0.10.254

如果是纯二层 VLAN 场景,PC 的网关可以先不填,因为验证目标是同 VLAN 内的二层互通。如果后续要模拟 VLAN 间互访,就把网关填成对应网段的 VLANIF 地址。

4.3 交换机完整配置

SW-A 和 SW-B 的配置如下,另一台交换机只需要把sysname改成 SW-B,接入 PC 的接口改成自己的接口编号。

system-view sysname SW-A vlan batch 10 20 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass vlan 10 20 quit

4.4 验证结果

配置完成后,从 PC-A ping PC-B,预期会看到类似下面的回显。

PC> ping 10.0.10.2 Ping 10.0.10.2: 32 data bytes, Press Ctrl_C to break From 10.0.10.2: bytes=32 seq=1 ttl=128 time=16 ms From 10.0.10.2: bytes=32 seq=2 ttl=128 time=16 ms

能收到响应,说明 Trunk 链路已经正常学习 MAC 地址,VLAN 10 的帧可以跨交换机转发。如果 ping 不通,先在交换机上执行display mac-address,看两台 PC 的 MAC 是否已经被学习到。

display mac-address

正常情况下,除了 SW-A 本端端口连接的 PC 之外,还能看到通过 Trunk 口学习到的远端 PC MAC 地址,且 VLAN 都是 10。

5. 思科、锐捷、华三配置命令对比

实际项目中会遇到多个厂商设备混用。虽然 802.1Q 是公共标准,但不同厂商的命令风格有明显差异。这里对比四个常见品牌的 Trunk 配置。

华为:

interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass vlan 10 20

华三(H3C):

interface GigabitEthernet1/0/3 port link-type trunk port trunk permit vlan 10 20

思科:

interface GigabitEthernet0/3 switchport mode trunk switchport trunk allowed vlan 10,20

锐捷:

interface GigabitEthernet 0/3 switchport mode trunk switchport trunk allowed vlan 10,20

从对比可以看到,华为和华三都使用link-type命令设置端口模式,思科和锐捷则使用switchport mode命令。在放行 VLAN 列表方面,华为用allow-pass vlan,华三用permit vlan,思科和锐捷用allowed vlan

差异点整理成一张表。

功能华为华三思科锐捷
配置端口模式port link-type trunkport link-type trunkswitchport mode trunkswitchport mode trunk
放行 VLANport trunk allow-pass vlan 10 20port trunk permit vlan 10 20switchport trunk allowed vlan 10,20switchport trunk allowed vlan 10,20
配置 Access VLANport default vlan 10port access vlan 10switchport access vlan 10switchport access vlan 10
查看接口 VLAN 信息display port vlandisplay port vlanshow interfaces trunkshow interfaces switchport

这些命令在交换机的常见版本上基本通用,但不同型号和系统版本之间可能存在细微差异。生产环境变更前,最好先在模拟器或测试交换机上确认命令语法。

6. 远程管理与批量配置脚本

当交换机数量多起来之后,逐个通过 Console 口配置效率太低。常见做法是给交换机配置管理 IP,开启 SSH,再用脚本批量下发配置或备份配置。

华为交换机开启 SSH 的基础配置思路如下。

system-view sysname SW-A ssh server enable interface vlanif 10 ip address 10.0.10.254 24 quit stelnet server enable aaa local-user admin password cipher Admin@123 local-user admin privilege level 15 local-user admin service-type ssh quit user-interface vty 0 4 authentication-mode aaa protocol inbound ssh quit

这里需要特别提醒,任何生产设备上配置管理账号时,必须修改成强密码,并限制管理网段访问。不要把示例里的密码直接用于现网。安全基线一般要求通过 ACL 限制 VTY 的访问源,只允许运维网段连接。如果设备登录密码遗失,不要自行尝试非官方恢复手段,应联系厂商技术支持,避免触发设备安全机制。

如果你需要批量备份多台华为交换机配置,可以使用 Python 的 netmiko 库写一个通用脚本。下面是一个最小可运行的示例脚本框架,实际使用时需要按网络环境替换设备 IP、账号密码和命令。

from netmiko import ConnectHandler devices = [ { "device_type": "huawei", "host": "192.168.10.1", "username": "admin", "password": "YourPassword", "secret": "", }, { "device_type": "huawei", "host": "192.168.10.2", "username": "admin", "password": "YourPassword", "secret": "", }, ] COMMANDS = ["display current-configuration"] for device in devices: conn = ConnectHandler(**device) output = conn.send_command("display current-configuration") with open(f"backup_{device['host']}.txt", "w", encoding="utf-8") as f: f.write(output) print(f"backup {device['host']} done") conn.disconnect()

这个脚本会把每台交换机的 running-config 保存到本地文件。批量下发配置时,把send_command改成send_config_set,并传入一个命令列表即可。netmiko 需要单独安装,执行pip install netmiko

建议在测试环境先对一台设备跑通,确认账号权限和命令输出正常,再扩展到批量任务。批量任务一定要加日志和异常重试机制,避免中途某一台设备连接超时导致整个脚本中断。

7. VLAN 间通信的进阶:PVID 一致性与三层网关

前面的场景是同 VLAN 跨交换机,以及不同 VLAN 互访。实际项目里还有一个高频需求:两台不同厂商的交换机,一边划分了 VLAN 10,另一边要把接到 VLAN 10 的流量送到三层网关做路由。这时需要关注 Trunk 口的 PVID 是否一致。

PVID 是端口默认 VLAN。华为和思科默认 PVID 都是 1。Trunk 口在发送 PVID 对应 VLAN 的报文时不打 Tag,接收没有 Tag 的报文时会把报文归入 PVID 对应的 VLAN。如果两端的 PVID 不一致,可能出现“帧进来后 VLAN 归属变了”的诡异故障。

例如 SW-A 的 Trunk 口 PVID 是 1,SW-B 的 Trunk 口 PVID 是 10。SW-A 发送不带 Tag 的本征 VLAN 1 流量时,SW-B 会把这些帧当作 VLAN 10 的流量处理。如果 SW-B 上 VLAN 10 存在,流量可能仍然能通,但语义已经错误;如果 SW-B 没有 VLAN 10,报文会被丢弃。

建议在实际配置中,将互联 Trunk 口的 PVID 统一规划好。除非有特殊互联需求,一般建议保持 PVID 为默认 VLAN 1,或者统一改为某个互联专用 VLAN,并保持两端一致。

三层网关方面,更深入的配置还包括 DHCP 中继、基于 VLAN 的 DHCP 服务器绑定、VLAN 接口的 ACL 策略等。热词中提到的“基于 VLAN 的 IPSG 组网”也是这个范畴。IPSG(IP Source Guard)可以基于端口或 VLAN 绑定 IP 和 MAC 地址,防止终端私自修改 IP 后仿冒其他终端。若要启用,可以在接入端口下绑定终端的 IP 与 MAC:

# 在 VLAN 10 的接入端口下绑定终端的 IP 和 MAC interface GigabitEthernet0/0/1 port link-type access port default vlan 10 ip source check user-bind ip-address 10.0.10.1 mac-address 00e0-fc00-0001

这种配置适合对 IP 盗用、地址欺骗有严格管控要求的园区网络。但需要注意,启用 IPSG 后,终端换网卡、换 IP 都会导致断网,运维时要同步维护地址绑定表。

8. 常见问题与排查方法

这一节把最常见的故障现象和排查步骤列出来。核心排查思路是:先查两层,再查三层。

问题现象可能原因排查方式解决方案
同 VLAN 跨交换机 ping 不通Trunk 口未 allow-pass 对应 VLANdisplay port vlan 查看放行列表在 Trunk 口添加对应 VLAN
同 VLAN 跨交换机 ping 不通两台交换机互联口不是 Trunkdisplay interface 查看链路类型将互联口配置为 Trunk
PC 能 ping 通网关但跨 VLAN 不通三层设备未配置 VLANIF 或路由display ip interface brief配置 vlanif 或单臂路由子接口
PC 访问本网段不通Access 口 VLAN 归属错误display vlan 查看端口归属重新调整端口 default vlan
某些终端能通,某些不通PVID 不一致或 MAC 表异常查看两端 Trunk 口 PVID统一 PVID
DHCP 拿不到地址DHCP 服务器在其他 VLAN,未配置中继检查 vlanif 下是否有 dhcp select relay配置 DHCP Relay
启用 IPSG 后终端断网IP/MAC 绑定关系过期或配置错误display dhcp static user-bind all更新绑定表
无法 SSH 到交换机管理VTY 未开启 SSH 传入协议检查 VTY 配置和 ACL 限制开启 SSH 并配置 AAA

更具体一点的排查步骤。

第一步,先从 PC 上确认 IP 配置。终端 IP、掩码、网关是否在同一网段。很多“交换机配置错了”的问题,源头其实是 PC 配置不对。

第二步,用display vlandisplay port vlan检查交换机的 VLAN 划分和端口放行列表。重点看互联 Trunk 口是否包含所有需要跨交换机通信的 VLAN。

第三步,用display mac-address查看 MAC 表。同 VLAN 跨交换机通信不通,很多时候是远端 MAC 没有学习到。

第四步,如果二层通,但不同 VLAN 之间 ping 不通,进入三层检查。在交换机上执行:

display ip routing-table

看有没有到达对方网段的路由。如果是三层交换机 VLANIF,应该能看到直连路由;如果是单臂路由,则检查路由器子接口配置是否正确,VLAN 封装是否匹配。

第五步,检查 PVID 和 Tag。如果使用 Wireshark 在链路上抓包,重点看帧里有没有 802.1Q Tag。交换机之间 Trunk 链路上,VLAN 10 和 VLAN 20 的帧应带 Tag。如果看到本应带 Tag 的帧没有 Tag,可能就是 PVID 设置导致的。

9. 最佳实践与使用建议

从实际组网经验看,交换机之间的 VLAN 通信配置虽然入门门槛不高,但要想稳定运行,建议养成这几个习惯。

第一,VLAN 规划先行。互联网段、业务网段、管理网段分开规划,VLAN ID 编号规则要统一。例如管理 VLAN 100,办公 VLAN 10,业务 VLAN 20,视频监控 VLAN 30。避免临时起意随便分配 VLAN ID。

第二,Trunk 放行列表遵循最小化原则。Trunk 口只放行互联需要的 VLAN,不要把所有 VLAN 都放行。这样能降低广播流量和环路风险。

第三,统一 Trunk 口 PVID。互联的两台交换机 Trunk 口 PVID 建议保持一致,一般就用默认 VLAN 1,或者统一设置一个互联专用 VLAN。不要在一条链路上出现一端 PVID 是 1、另一端 PVID 是 10 的情况。

第四,管理面与业务面隔离。给交换机配置管理 IP 时,尽量使用独立的管理 VLAN,并通过 ACL 限制只有运维网段可以 SSH/Telnet 登录。示例中的 admin 账号密码,应替换为符合安全策略的强密码。

第五,涉及生产网络变更时,先做备份。批量备份配置,确认成功后再在非业务窗口执行变更。前面给的 Python 脚本框架稍加修改,就可以变成“批量备份工具”,建议提前部署。

第六,合规与授权边界。所有交换机的配置实验和变更,都应在自己拥有或获得明确授权的设备、模拟器或测试环境内进行。不要对未授权的网络设备进行扫描、密码猜测或配置篡改。企业网络中的地址绑定、IPSG、ACL 等安全策略,应结合本单位的网络数据安全和隐私保护要求来实施。

第七,优先使用模拟器验证。eNSP、Packet Tracer、GNS3 都是很好的实验环境。真实项目碰到复杂拓扑,先在模拟器里把配置和验证流程过一遍,再上真机,能省掉大量排障时间。

10. 总结与下一步

这篇文章围绕“交换机之间的通信带 VLAN 的情况”把几个关键链路串了一遍。同 VLAN 跨交换机通信的要点是 Trunk 链路和放行列表;不同 VLAN 间互访的要点是三层转发,可以用单臂路由或三层交换机 VLANIF;厂商命令虽然风格不同,但底层都是 802.1Q 标准,本质逻辑一致。

对于一个刚开始接触 VLAN 和交换机间通信的读者,我建议先在 eNSP 里搭两台交换机,配置 Access 口接 PC、Trunk 口互联,完成同 VLAN 跨交换机互通测试;再加入一台路由器或三层交换机,把单臂路由和 VLANIF 两种 VLAN 间互访方式都跑通。下一步可以继续扩展到 DHCP 中继、VLAN 网关冗余、基于 VLAN 的 IPSG 组网,以及基于 Python 的批量配置和备份。

最容易踩的坑往往不在配置命令本身,而是对 Trunk 链路 Tag 处理逻辑的理解。花时间在模拟器里抓一次包,看一下 VLAN 标签怎么打、怎么剥离,会比死记命令更容易解决实际问题。建议收藏备用,下次遇到跨交换机 VLAN 不通时,直接按“先端口模式、再放行列表、再 MAC 表、再路由表”的顺序排查。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 11:53:08

兰伯特问题详解:从原理到普适变量法求解轨道转移

简介:兰伯特转移用于求解航天器在两固定位置间的最优转移轨道,是轨道设计与任务规划中的基础算法。该压缩包内含1个MATLAB脚本lambert.m,面向天体力学与航天轨道计算学习者,以及需要快速验算转移参数的工程师。脚本通过输入起始/目…

作者头像 李华
网站建设 2026/9/8 11:51:39

我的世界Java版纯净生存服务器:从进服准备到开服运营全指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/8 11:50:44

嵌入式低压检测方案:LVD外设与ADC双链路实现数据保全

简介:压缩包围绕STC15F408AS单片机的低压检测(LVD)功能,提供汇编与C语言两种查询方式的完整对比工程。资源共18个文件,包含main.asm、main.c两个主程序、LowVoltageDetect.hex烧录文件、Keil工程配置(uv2/opt/plg/lnp)…

作者头像 李华
网站建设 2026/9/8 11:49:25

WorkBuddy双模型限免:Hy3与Hy4 preview选型及自动化工作台搭建指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/8 11:49:24

毕业论文文本修改全攻略:从降重到降AI的实战指南

引言:毕业季的文本修改难题 每年毕业季,无数本科生和研究生都会面临同一个难题:论文写完了,但查重率居高不下,AI 检测痕迹明显,盲审意见要求修改……面对逐渐逼近的提交截止日期,修改文本的任务…

作者头像 李华
网站建设 2026/9/8 11:48:23

从零实现 DeepSeek Harness:Python 工具链与 VS Code 接入实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华