news 2026/9/8 3:09:57

跨交换机VLAN通信配置与故障排查详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
跨交换机VLAN通信配置与故障排查详解

交换机之间通信一旦带上VLAN,问题核心就变成:帧从一台交换机发到另一台交换机时,到底带没带VLAN标签,对端认不认这个标签。很多刚接触网络的人第一次跨交换机配VLAN,容易栽在这些地方:两台交换机用Access口硬连、Trunk口没放行对应VLAN、PVID和本征VLAN对不上。结果经常是PC的IP、掩码、网关全都没问题,但同VLAN就是ping不通,或者不同VLAN反而互相串通。

这个主题适合正在搭办公网、监控网、实验室组网,或者排查跨交换机VLAN不通的人看。最值得先记住的判断是:交换机之间的链路必须是Trunk或者等价的多VLAN承载链路,同一VLAN靠二层透传,不同VLAN必须走三层路由。下面按实际落地顺序拆一遍。

1. 跨交换机VLAN通信的底层逻辑

1.1 Access口和Trunk口的区别要先分清

交换机的端口类型里,Access口和Trunk口是最常用的两种。

Access口一般接终端设备,比如PC、打印机、摄像头、服务器。它只属于一个VLAN,从Access口收到的正常数据帧不做VLAN标记,端口自己的VLAN ID写在PVID里。发送帧给终端时,也会把Tag剥掉,因为普通终端网卡不识别802.1Q头。

Trunk口一般接交换机、路由器、防火墙或者支持多VLAN的服务器网卡。它可以在同一条物理链路上传输多个VLAN的帧。为了实现“多个VLAN跑在一条线缆上”,每个帧必须额外打上4字节的802.1Q Tag,对端交换机看到Tag里的VLAN ID,就知道这个帧属于哪个VLAN。

所以,交换机之间要通多个VLAN,必须用Trunk口。如果只是临时测通一个VLAN,用Access口也可以,但一旦未来要加VLAN,就得重新改物理接口配置,工作量很大。

1.2 为什么VLAN不能只在一台交换机内部生效

很多人的第一个疑问是:我在交换机A上创建了VLAN 10,把接口划进去,交换机B上也创建VLAN 10,把接口划进去,两台交换机用一根网线连起来,为什么VLAN 10的PC还是不通?

因为VLAN是一个“交换机本地概念”。交换机A创建的VLAN 10,本质上是在这台设备内部维护了一张VLAN表和对应的二层转发关系。交换机B的VLAN 10,是另一台设备上的独立配置。两台设备之间默认不会自动交换VLAN注册信息。

要让A上的VLAN 10和B上的VLAN 10组成同一个广播域,必须在两台交换机之间的链路上把VLAN 10放行,并且让带Tag的VLAN 10帧通过。这个任务就是Trunk口干的。

这里的核心结论是:

  • 同VLAN跨交换机通信,依赖Trunk链路把带Tag的帧透传过去。
  • 不同VLAN跨交换机通信,必须先解决二层透传,再在某个三层设备上做路由。

1.3 PVID、Tag和Native VLAN最容易搞混

Trunk口相关的参数里,PVID、Tag、Native VLAN这三个概念很多人容易绕进去。

PVID的意思是端口默认VLAN ID。当Trunk口收到一个不带Tag的帧时,会把这个帧打成PVID对应的VLAN帧。Trunk口发送不带Tag帧时,也通常用在PVID对应的VLAN上。思科体系里把这种“不打Tag的VLAN”叫Native VLAN,华为、H3C体系里通常直接叫PVID。

默认情况下,Trunk口PVID是VLAN 1。也就是说,VLAN 1的帧在Trunk上是不带Tag的。如果你两台交换机之间Trunk的PVID不一致,收到的不带Tag帧就会被分到不同的VLAN里,轻则通信异常,重则导致环路或广播风暴。

我一般不建议把业务VLAN设成Trunk的PVID。尽量把PVID留在管理VLAN上,比如VLAN 1或者单独的Management VLAN。如果实在要改,两条互联交换机的PVID必须一致。

2. 同VLAN跨交换机互通:配置就三件事

要让两台交换机上的同一个VLAN互通,本质上只需要完成三件事:创建VLAN、把接入端口划进VLAN、把互联端口配成Trunk并放行VLAN。

2.1 先做地址规划和接口规划

拿一个最简单的例子来说。

交换机SW-A和SW-B通过GigabitEthernet0/0/1互联。PC1接在SW-A上,属于VLAN 10,IP是192.168.10.1/24。PC2接在SW-B上,同样属于VLAN 10,IP是192.168.10.2/24。两台PC的网关可以先不管,因为同VLAN二层通信不依赖网关。

设备端口规划可以画成这样:

设备接口端口类型所属VLAN用途
SW-AGE0/0/1Trunk放行VLAN 10、20上联SW-B
SW-AGE0/0/2AccessVLAN 10接PC1
SW-BGE0/0/1Trunk放行VLAN 10、20上联SW-A
SW-BGE0/0/2AccessVLAN 10接PC2

我建议第一遍测试只放行VLAN 10。等基础通了,再把VLAN 20加进去。不要一开始就配allow-pass vlan all,容易把不想互通的VLAN也放过去。

2.2 华为、H3C交换机的Trunk配置

华为和H3C的命令在VLAN和Trunk这里基本一致,都以system-view进系统视图。

SW-A上的配置:

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

SW-B上的配置,除了接口名可能不同,命令完全一样:

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

这里有一个容易忽略的点:华为和H3C的Trunk口默认只放行VLAN 1。如果只配置了端口模式为Trunk,没有执行port trunk allow-pass,对端的VLAN 10帧根本过不来。

2.3 思科交换机的Trunk配置

思科体系略有不同,但逻辑一样。以常见的Catalyst系列为例。

configure terminal vlan 10 vlan 20 exit interface GigabitEthernet0/1 switchport mode trunk switchport trunk allowed vlan 10,20 exit interface GigabitEthernet0/2 switchport mode access switchport access vlan 10 exit

思科的switchport trunk allowed vlan如果不写,默认允许所有VLAN。这个默认行为比华为激进,容易被忽略。我在接触华为之后再碰思科设备,就曾经因为“以为默认限制”踩过坑。

2.4 验证命令:不能只看up或down

配完配置后,建议按这个顺序验证。

先看端口状态,确认物理链路是UP:

display interface brief

再看Trunk口放行情况。华为设备可以用:

display port vlan

思科可以用:

show interfaces trunk show interfaces switchport

华为还可以直接看VLAN摘要:

display vlan brief

如果display int vlan brief这种命令,在二层交换机上通常用来查看VLAN接口和状态。很多人习惯用它,但它更适合看三层VLAN接口是否UP。检查Trunk放行时,display port vlan更直接。

最后在PC1上ping PC2。如果通,再用抓包软件抓一下SW-A和SW-B之间的链路,能看到帧带着802.1Q头,VLAN ID是10。

同VLAN的两台PC能ping通,说明二层透传没有问题。这时候再考虑VLAN间路由。

3. 不同VLAN要通信:路由必须做在边界

3.1 为什么跨VLAN就是不通

两台PC分别属于VLAN 10和VLAN 20,即使它们接在同一台交换机上,默认也ping不通。因为VLAN把广播域隔离了,VLAN 10的广播帧不会进入VLAN 20,VLAN 10的PC不知道自己要访问的主机在哪里设备层MAC地址,必须有网关帮忙。

这个“网关”就是三层设备:三层交换机、路由器或者防火墙。二层交换机本身不做路由,它只负责转发帧。

常见的错误是:有人给PC1配了192.168.10.1,给PC2配了192.168.20.1,然后把它俩接在纯二层交换机上,以为换个IP就能跨VLAN互通。实际上没有三层网关,封装了IP报文也没人帮他路由。

3.2 三层交换机VLANIF:最常用方案

三层交换机在企业网里非常常见。核心思路是给每个VLAN配置一个三层接口,叫VLANIF,相当于这个VLAN的网关。

华为设备配置:

system-view vlan batch 10 20 interface Vlanif10 ip address 192.168.10.254 255.255.255.0 quit interface Vlanif20 ip address 192.168.20.254 255.255.255.0 quit

H3C设备命令一样,只是接口名习惯写成interface Vlan-interface 10

思科是三层交换机时,用SVI:

configure terminal ip routing interface vlan 10 ip address 192.168.10.254 255.255.255.0 exit interface vlan 20 ip address 192.168.20.254 255.255.255.0 exit

思科这里有一个很关键的命令ip routing。如果不开启,SVI只是理论上存在,三层转发不生效。这个问题我见过不止一次。

然后PC1的网关指到192.168.10.254,PC2的网关指到192.168.20.254,VLAN 10和VLAN 20之间的互通就走三层交换机完成了。

3.3 路由器子接口:适合小规模组网

如果手头没有三层交换机,只有一台路由器,可以用单臂路由。交换机Trunk口接路由器物理口,路由器在这个物理口上创建多个子接口,每个子接口对应一个VLAN,并封装802.1Q Tag。

以思科路由器为例:

interface GigabitEthernet0/0.10 encapsulation dot1q vlan 10 ip address 192.168.10.254 255.255.255.0 exit interface GigabitEthernet0/0.20 encapsulation dot1q vlan 20 ip address 192.168.20.254 255.255.255.0 exit

华为路由器子接口写法有差异:

interface GigabitEthernet0/0/0.10 dot1q termination vid 10 ip address 192.168.10.254 255.255.255.0 arp broadcast enable quit

华为子接口默认不能转发ARP广播,必须配arp broadcast enable,否则PC连网关都找不到。这算是华为和思科在子接口上最明显的区别之一。

3.4 路由配置的边界要提前确认

VLAN间路由配置完之后,真正考验人的往往不是命令,而是IP网段规划。举个例子:

  • VLAN 10:192.168.10.0/24,网关192.168.10.254
  • VLAN 20:192.168.20.0/24,网关192.168.20.254

这个组合很清晰。但如果一开始把VLAN 10和VLAN 20配成了同一个网段,那就没法通过网关区分流量,三层路由根本无从谈起。有人问我“为什么VLAN 20的PC ping不通网关”,我去一看,两台PC配的竟然是同一个网段的IP。这个不是VLAN技术问题,是IP规划问题。

我建议在配VLANIF之前,先列一张表:VLAN ID、网段、网关、用途。确认没有重复网段再接下去。

4. 复杂组网里的Trunk规划:链路聚合、级联和服务器接入

跨两台交换机的场景通了之后,实际网络往往不止两台设备。核心层、汇聚层、接入层串起来的时候,Trunk规划要提前想清楚。

4.1 两条上行链路不要直接配两个Trunk

如果汇聚交换机到核心交换机有两条万兆链路,想着“既然都是Trunk,就让它俩都放行VLAN,流量自动分担”,这是一个危险的想法。普通Trunk不跑STP时,两条二层链路之间会形成环路,广播帧在交换机之间反复转发,直接把CPU打满。

更稳的做法是把两条物理链路加入Eth-Trunk,华为里叫Eth-Trunk,思科里叫Port-Channel。逻辑上变成一个聚合接口,再做Trunk配置。

华为配置示例:

interface Eth-Trunk1 port link-type trunk port trunk allow-pass vlan 10 20 quit interface GigabitEthernet0/0/1 eth-trunk 1 quit interface GigabitEthernet0/0/2 eth-trunk 1 quit

思科配置示例:

interface Port-channel1 switchport mode trunk switchport trunk allowed vlan 10,20 exit interface GigabitEthernet0/1 channel-group 1 mode active exit interface GigabitEthernet0/2 channel-group 1 mode active exit

链路聚合完成后,物理链路增减都不需要改动业务VLAN配置,可维护性高很多。注意,聚合成员口两边模式要一致,一边是active,另一边建议也是active或者passive,不要一边active一边on。

4.2 多台交换机级联时,VLAN放行要“裁剪”

接入层交换机从汇聚交换机上拿VLAN,常见的做法是把汇聚到核心的Trunk直接放行所有VLAN。这样做省事,但问题也不少:广播域扩大、未知单播泛洪变多、后续排查困难。

更推荐的做法是每台接入交换机只透传自己需要的VLAN。比如接入交换机A只有VLAN 10、20,那上行Trunk就写:

port trunk allow-pass vlan 10 20

不要图省事写vlan all。尤其当网络里有监控VLAN、访客VLAN,默认放行会让监控广播包跑到办公交换机上,既浪费带宽,也有一定的数据暴露风险。

4.3 服务器、虚拟机和容器怎么接入Trunk

Trunk不只是交换机对交换机才用。服务器上如果装了虚拟机,虚拟机又分了多个业务VLAN,服务器的物理网卡也应该以Trunk模式接交换机。服务器上通过虚拟网卡或子接口配置对应VLAN Tag,交换机放行对应VLAN,两边才能对上。

容器网络里如果用了Multus之类的多网卡方案,给Pod附加VLAN网卡,逻辑也一样:上游交换机端口放行对应VLAN,主机侧网络接口能识别和转发带Tag的帧。不过容器场景额外牵扯CNI、路由策略和命名空间,排查时先要分清哪一层是二层Trunk,哪一层是三层路由。

GVRP这种自动VLAN注册协议,可以在多台交换机之间自动同步VLAN信息,减少手工创建。但我不建议一上来就开。GVRP只会传递VLAN编号,不会自动帮你规划网段,也不会自动配置VLANIF。设备数量少时,手工配置更可控;设备数量多时,优先考虑自动化下发,而不是依赖GVRP把VLAN表“广播”出去。

5. 跨交换机VLAN不通?按这个顺序排查

跨交换机VLAN不通的现象,比配置本身更值得专门写一遍。很多问题看起来复杂,真正定位后就那么几个原因。

5.1 先看物理链路和端口状态

不管报错多奇怪,先确认两端接口都是UP。

display interface brief

如果对端接口是DOWN,后面的VLAN配置全是白搭。常见原因包括网线松动、光模块兼容问题、对端设备没开机、接口被shutdown。

还有一种情况是两端速率协商不匹配,端口一直Down或者反复Up/Down,VLAN配置再对也没用。

5.2 再看端口类型和VLAN放行列表

物理链路正常,但同VLAN还是不通,第二步查端口类型。

华为查看:

display port vlan

思科查看:

show interfaces trunk show interfaces status

重点检查三点:

  1. 互联口是否配成了Trunk。
  2. Trunk口是否放行了目标VLAN。
  3. 接入侧PC端口是否划到了正确VLAN。

如果一边是Trunk,另一边是Access,目标VLAN可能根本传不过去。华为设备有些接口默认是Hybrid类型,也能放行多个VLAN,但Tag行为和Trunk不一样。如果对端用的是Cisco或别的品牌,建议把互联口固定成Trunk,减少理解偏差。

5.3 检查PVID和本征VLAN是否一致

端口类型和放行列表都正常,仍然有怪异现象,比如VLAN 1通但VLAN 10不通,或者出现广播风暴,重点查Trunk两端的PVID。

华为、H3C设备查看Trunk口PVID,display port vlan里能直接看到。思科用show interfaces trunk看Native VLAN。

两端PVID一定要一致。比如一端PVID是1,另一端PVID是10,那么不带Tag的帧会在对端被错误划分。轻则管理报文乱跳VLAN,重则产生广播环路。

5.4 最后查STP和抓包

上述都没问题,但还是不通,别急着改配置。先看生成树状态。

display stp brief

如果端口一直处于Learning或者Blocking状态,VLAN帧虽然能被Trunk放行,但STP在等待收敛,不会转发数据。这时候要确认是不是网络里出现了物理环路,或者STP优先级配置不合理。

如果STP也正常,最后一步抓包。在Trunk链路上抓包,看PC1发出的ICMP请求帧是否带有正确的802.1Q Tag,目标VLAN ID是不是预期的数字。

抓包能直接区分两种问题:

  • 帧没到:说明放行、端口类型或物理链路有问题。
  • 帧到了但有去无回:说明对端交换机或终端没有正确处理Tag。

我排查跨交换机VLAN故障时,最常用的一套顺序就是:端口状态、端口类型、VLAN放行表、PVID、STP、抓包。不要一上来就怀疑Palace模型、不要急着重配VLAN。先把两边配置导出来对比,往往一眼就能发现问题。

跨交换机VLAN通信这个事,真正落地时最该盯住的不是新功能,而是两侧配置是否对称。我一般会把每台交换机的VLAN表、Trunk放行列表、PVID单独列成一张表,哪个口接哪台设备、放行哪些VLAN、PVID是多少,全部写清楚。等网络规模变大,这张表比记忆可靠得多。如果你正在改两台交换机的Trunk,建议先让同VLAN小流量跑通,再考虑VLAN间路由、链路聚合和服务器接入。基础链路稳了,上面的路由和策略才谈得上。

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

从新手到进阶,我的后端技术栈成长记录

每个后端开发者的成长路径都不尽相同,但回头看总会发现一些相似的轨迹——从只会写CRUD的“API工人”,到能独立设计系统架构的“工程师”。这不是一蹴而就的蜕变,而是在一次次项目实践中逐渐积累、反思、重构的漫长过程。记录下自己的技术栈成…

作者头像 李华
网站建设 2026/9/8 3:08:09

Dism++实战:用绿色单文件工具搞定Windows系统清理与优化

/* 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 3:07:04

Obsidian插件生态与效率提升全指南

1. Obsidian 核心价值与插件生态解析 Obsidian作为一款本地优先的Markdown知识管理工具,其核心优势在于双向链接和知识图谱功能。不同于其他云端笔记软件,Obsidian将所有数据以纯文本形式存储在用户本地设备上,这种设计既保障了隐私安全&…

作者头像 李华
网站建设 2026/9/8 3:06:52

Android工具箱应用开发实战:模块化架构与工程化避坑指南

简介:一份面向安卓初中级开发者的工具箱类应用完整源码,整合文件管理、系统信息查看、二维码扫描等常用功能模块,适合学习综合性App的架构设计与模块化实现。压缩包为RAR格式,共169个文件,以XML布局、Java逻辑、PNG图片…

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

OrCAD X Presto封装编辑实操:从焊盘到丝印,构建高质量PCB封装

/* 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 3:06:37

FusionServer 2258H V8服务器PCIe卡更换全流程运维指南

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

作者头像 李华