GVRP实验排查:动态VLAN单向注册与trunk接口配置详解 简介华为GVRP实验配置文本面向网络工程师、华为设备运维人员及备考HCIA/HCIP认证的学员用于理解GVRP协议在交换机上的动态VLAN管理机制。资源以命令配置为主完整记录了S1至S4四台交换机上配置GVRP的完整流程包括Trunk模式设置、允许所有VLAN通过、全局及端口开启GVRP、静态创建VLAN100和VLAN200并划分access端口等关键命令并对Normal、Fixed、Forbidden三种注册模式的差异与适用场景展开详解Normal模式允许接口动态注册注销VLAN并传播动态及静态信息Fixed模式只传播静态VLAN信息、不传播动态VLANForbidden模式则只保留VLAN1、不传播其他任何VLAN同时演示了单向注册现象及其对通信的影响。此外还给出Fixed模式的配置入口便于对照实验环境逐步实操验证压缩包内为1个docx文档大小306KB命令标注清晰、步骤完整可直接用于实验报告参考或备考复习。目前已有266人学习下载适合网络学习者对照实验环境快速上手是掌握华为GVRP配置的实用参考。1. GVRP 实验遇到单向注册VLAN 建了却不通问题出在哪一份华为 GVRP 实验配置文本四台交换机串成一条链路只在 S1 上建了 vlan100 和 vlan200其余三台全没手动创建数据就从 S1 单向灌过去、再从 S4 方向回不来——这是典型的 GVRP 单向注册问题。很多人照着网上的配置敲完dis vlan 一看动态 VLAN 学到了一半另一半接口空空如也于是开始怀疑命令敲错了其实协议行为本身就是这样注册信息只沿收到 GVRP 报文的接口方向传递逆着数据流方向的接口根本拿不到通知。这篇文章把这套实验从头到尾拆开把每个接口的 trunk 配置、GVRP 开启位置、注册模式差异和验证命令都讲清楚适合正在学数通、备考华为认证或者在公司内部网络里第一次接触动态 VLAN 的人。2. GVRP 是什么三种注册模式与动态 VLAN 的来源2.1 GARP 先于 GVRP先把注册机制本身搞清楚GVRP 全称是 GARP VLAN Registration Protocol它建立在 GARPGeneric Attribute Registration Protocol之上。GARP 解决的是属性注册问题设备通过 GARP 报文告诉邻居自己有哪些属性邻居收到后再告诉下一个邻居属性就像接力一样在网络里扩散。GVRP 就是把 GARP 的属性换成了 VLAN交换机之间互相通告 VLAN 信息收到通告的交换机在自己的接口上动态创建 VLAN这就是动态 VLAN 的来源。静态 VLAN 是手工敲命令建出来的配置文件里明确存在。动态 VLAN 是 GVRP 报文带进来的交换机根据报文里的 VLAN ID 在接口上临时生成设备重启或者 GVRP 报文停止后动态 VLAN 就会消失。实验中你会在 dis vlan 里看到 VLAN 类型列着 dynamic这些不是谁手动建的是协议学来的。GVRP 报文是二层组播报文目的 MAC 地址是厂商特定的组播地址华为交换机默认开启 GVRP 后会在 trunk 接口上发送和接收这种报文。所以 GVRP 只对 trunk 接口有意义access 接口是没办法跑 GVRP 的这一点在配置阶段要记住。2.2 Normal、Fixed、Forbidden 三种模式有什么区别注册模式直接决定了一个接口对 GVRP 报文的态度也是最容易出问题的地方。三种模式可以列成一张对比表注册模式动态注册动态注销传播动态 VLAN 信息传播静态 VLAN 信息实际通过的 VLANNormal允许允许传播传播静态 动态Fixed禁止禁止不传播传播只有静态创建的部分Forbidden禁止禁止不传播不传播VLAN1 除外只有 VLAN1Normal 模式是默认模式按原文的说法接口上启用了 GVRP 之后默认就是 Normal动态 VLAN 和静态 VLAN 都能通过这个接口传播出去。Fixed 模式做了两件事第一这个接口不再动态学习任何 VLAN收到 GVRP 报文也不创建动态 VLAN第二它依然会把自己静态创建的 VLAN 信息传给邻居。原文里有一句很关键的话——被设置成 Fixed 模式的 trunk 接口即使 allow-pass vlan all实际通过的 VLAN 也只能是手动配置的那部分。这句话是对新手最大的坑你以为 allow-pass vlan all 就万事大吉了其实 GVRP 模式下实际放行范围要参考注册模式来决定。Forbidden 模式更极端这个接口不学任何动态 VLAN也不传任何 VLAN 信息唯一的例外是 VLAN1。trunk 接口即使 allow-pass vlan all走这个接口的真实 VLAN 只有 VLAN1 一个。这种模式常用于隔离场景让某个接口彻底告别动态 VLAN。2.3 一个接口一个模式GVRP 的生效位置GVRP 的配置分两层全局开启和接口开启。全局开启是让设备具备 GVRP 能力接口开启是让这个具体的 trunk 接口收发 GVRP 报文。只有这两步都做了接口才会参与 VLAN 注册通告。注册模式是在接口视图下单独配置的同一个设备不同接口可以有不同的注册模式——比如 S3 的 23 口做成 Fixed24 口保持 Normal天然互不影响。很多新手容易犯一个误区全局开了 GVRP 之后所有 trunk 口都自动跑 GVRP 了这是不对的。华为设备全局开启的只是 GVRP 协议栈具体哪个接口参与必须进接口再开一次 gvrp 命令。这个顺序稍后会在配置章节里演示。3. 四台交换机基础配置Trunk 放行与 GVRP 开启顺序3.1 拓扑与端口规划整套实验四台交换机串行连接。S1 的 23 口连 S2 的 23 口S2 的 24 口连 S3 的 23 口S3 的 24 口连 S4 的 23 口一条链路拉到底。每台交换机上还有两个 access 口接终端S1 的 1 口、2 口分别划给 vlan100 和 vlan200S4 的 1 口、2 口同样处理。设备Trunk 接口Access 接口说明S1g0/0/23g0/0/1vlan100、g0/0/2vlan200静态创建 VLAN 的源头S2g0/0/23、g0/0/24无中间节点两个口都参与 GVRPS3g0/0/23、g0/0/24无中间节点第 5 步改 Fixed 模式S4g0/0/23g0/0/1vlan100、g0/0/2vlan200终点需要静态创建 VLAN这样规划的原因很简单把 S1 和 S4 当成两端的接入交换机中间两台纯透传测试 GVRP 动态 VLAN 能不能从一端传到另一端。3.2 S1 和 S2 配置先全局开启再进接口S1 只需要把 23 口做成 trunk允许所有 VLAN 通过全局和接口分别开启 GVRP。这里有一个操作细节接口开启 GVRP 之前必须先把接口类型改成 trunk否则命令会报错。Huaweisystem-view [Huawei]sysname S1 [S1]gvrp # 全局开启 GVRP 协议栈 [S1]interface GigabitEthernet0/0/23 [S1-GigabitEthernet0/0/23]port link-type trunk # 先改接口类型再谈 GVRP [S1-GigabitEthernet0/0/23]port trunk allow-pass vlan all [S1-GigabitEthernet0/0/23]gvrp # 接口上开启 GVRP默认 Normal 模式 [S1-GigabitEthernet0/0/23]quitgvrp 在全局和接口视图下各执行一次含义完全不同。全局那条是设备支持 GVRP接口那条是让这个口收发 GVRP 报文。如果把接口这条漏了这个口不会参与任何动态 VLAN 通告你却以为已经开了这是最容易翻车的地方。S2 有两个 trunk 口还都是中间链路配置上比 S1 多一步思路完全一样。Huaweisystem-view [Huawei]sysname S2 [S2]gvrp [S2]interface GigabitEthernet0/0/23 [S2-GigabitEthernet0/0/23]port link-type trunk [S2-GigabitEthernet0/0/23]port trunk allow-pass vlan all [S2-GigabitEthernet0/0/23]gvrp [S2-GigabitEthernet0/0/23]quit [S2]interface GigabitEthernet0/0/24 [S2-GigabitEthernet0/0/24]port link-type trunk [S2-GigabitEthernet0/0/24]port trunk allow-pass vlan all [S2-GigabitEthernet0/0/24]gvrp [S2-GigabitEthernet0/0/24]quitS2 的 23 口和 24 口都参与 GVRP把 S2 做成一个中继节点这样才能把 S1 的 VLAN 信息继续往 S3、S4 方向传。注意原文里 S2 全局开启那步写的是 grvp这是笔误正确命令就是 gvrp敲的时候别照错了。3.3 S3 和 S4 配置拓扑末端的处理方式S3 和 S2 一样两个接口都是 trunk全局开 GVRP两个接口分别开 GVRP配置上没有特殊之处。[Huawei]sysname S3 [S3]gvrp [S3]interface GigabitEthernet0/0/23 [S3-GigabitEthernet0/0/23]port link-type trunk [S3-GigabitEthernet0/0/23]port trunk allow-pass vlan all [S3-GigabitEthernet0/0/23]gvrp [S3-GigabitEthernet0/0/23]quit [S3]interface GigabitEthernet0/0/24 [S3-GigabitEthernet0/0/24]port link-type trunk [S3-GigabitEthernet0/0/24]port trunk allow-pass vlan all [S3-GigabitEthernet0/0/24]gvrp [S3-GigabitEthernet0/0/24]quitS4 只有一个 trunk 口也就是连接 S3 的 23 口配置简单一些但它在整个实验里反而是最关键的设备因为单向注册的问题就出在它这一侧。[Huawei]sysname S4 [S4]gvrp [S4]interface GigabitEthernet0/0/23 [S4-GigabitEthernet0/0/23]port link-type trunk [S4-GigabitEthernet0/0/23]port trunk allow-pass vlan all [S4-GigabitEthernet0/0/23]gvrp [S4-GigabitEthernet0/0/23]quit四台设备配完之后可以用 display gvrp status 验证协议状态能看到 GVRP 是 Enable 状态。再用 display vlan 查看现有 VLAN这时候 S2、S3、S4 上应该还没有 vlan100 和 vlan200因为 S1 侧还没有创建任何静态 VLANGVRP 没有内容可传。3.4 验证配置dis th 和 dis cu 的习惯原文里每配完一台就敲 dis th 或者 dis cu这个习惯值得保留。dis th 只显示当前接口下的配置适合确认单个接口的 trunk 和 GVRP 是否生效dis cu 显示整个设备配置适合检查全局 GVRP 有没有漏开。接口下看到 port trunk allow-pass vlan all 和 gvrp 两行全局看到 gvrp 一行这套配置才算完整落地。我一般配完会顺手敲一下 display gvrp port能看到每个接口的 GVRP 状态和注册模式比 dis cu 更直观排查时不用在一堆配置里找。4. 验证单向注册S2 的 24 口为什么学不到 VLAN4.1 在 S1 创建 VLAN100 和 VLAN200静态 VLAN 创建在 S1 上同时把 1 口和 2 口设置成 access 并划入对应 VLAN。这一步不需要在接口上开 GVRPaccess 口本身就不参与 GVRP 通告但静态 VLAN 一旦创建S1 就会通过 23 口的 GVRP 报文把这个 VLAN 信息传播出去。[S1]vlan batch 100 200 [S1]interface GigabitEthernet0/0/1 [S1-GigabitEthernet0/0/1]port link-type access [S1-GigabitEthernet0/0/1]port default vlan 100 [S1-GigabitEthernet0/0/1]quit [S1]interface GigabitEthernet0/0/2 [S1-GigabitEthernet0/0/2]port link-type access [S1-GigabitEthernet0/0/2]port default vlan 200 [S1-GigabitEthernet0/0/2]quitvlan batch 100 200 可以一次创建多个 VLAN和分别执行 vlan 100、vlan 200 等效。这个命令在 S4 侧还会用一次到时候情况会稍微复杂一点因为 VLAN 可能已经是动态注册上来的了。4.2 观察 S2 的注册情况23 口有24 口没有这时候去 S2 上执行 display vlan你会看到一个很误导人的结果vlan100 和 vlan200 确实出现了但 VLAN 类型是 dynamic而且 S2 的所有接口里只有 23 口在 VLAN 列表里24 口没有。这就是原文里说的单向注册。GVRP 注册信息从 S1 发出沿 S1 的 23 口进入 S2 的 23 口S2 在 23 口上动态注册了这两个 VLAN。但 S2 的 24 口是背向 S1 的S1 的 GVRP 报文不会从 24 口进来S2 也不会主动把动态学到的 VLAN 往 24 口方向传播。于是 S3 和 S4 完全不知道 vlan100、vlan200 的存在。放在真实场景里理解四台交换机的链路是有方向的GVRP 只在收到报文的接口上建立注册关系不会凭空在各接口之间生成。只要中间任何一台设备没有在正确方向上建立注册后面的设备就永远学不到 VLAN。4.3 在 S4 侧静态创建 VLAN 打通回程想打通回程需要在 S4 上静态创建 vlan100 和 vlan200。这一步必须静态创建不能依赖动态注册因为动态注册的 VLAN 不允许被直接划入 access 口。[S4]vlan batch 100 200 [S4]interface GigabitEthernet0/0/1 [S4-GigabitEthernet0/0/1]port link-type access [S4-GigabitEthernet0/0/1]port default vlan 100 [S4-GigabitEthernet0/0/1]quit [S4]interface GigabitEthernet0/0/2 [S4-GigabitEthernet0/0/2]port link-type access [S4-GigabitEthernet0/0/2]port default vlan 200 [S4-GigabitEthernet0/0/2]quit注意 S4 的 23 口是通过 GVRP 学到 vlan100 和 vlan200 的虽然现在静态创建了同名 VLAN但接口上动态注册的 VLAN 会被静态 VLAN 覆盖然后 S4 通过 GVRP 把这个静态 VLAN 信息反向传播给 S3S3 再传给 S2 的 24 口。这样一来 S2 的 24 口就能学习到 vlan100 和 vlan200双向通信建立起来了。这个操作解释了 GVRP 一个重要的特性动态创建的 VLAN 不能直接加入 access 口必须先静态创建同名 VLAN才能把端口划进去。4.4 测试命令与思路测试前先做四件事四台设备都看一下 display vlan确认 vlan100 和 vlan200 是否都已注册再敲 display gvrp port看每个接口的注册状态然后从 S1 的 1 口向下 ping S4 的 1 口最后在 S2 上分别 ping S1 和 S4确认两侧都能通。# 在 S4 侧验证动态 VLAN 已出现在 23 口上 display vlan # VLAN ID Type Status Description # 100 static VALID VLAN 0100 # 200 static VALID VLAN 0200 # 查看 GVRP 接口注册状态 display gvrp port如果 S4 的 23 口上 VLAN 是 dynamic说明 GVRP 注册链路还是单向的如果变成 static说明静态创建生效接口可以正常传输了。5. 常见的 GVRP 配置避坑从注册模式到报文协商5.1 全局开启了 GVRP接口上却什么都不传现象全局敲了 gvrptrunk 也配了 allow-pass vlan all但相邻交换机完全学不到任何 VLAN。原因接口上没有执行 gvrp 命令。全局开启只是让设备具备协议能力接口才是真正收发 GVRP 报文的边界。很多人在全局敲完之后就以为万事大吉忽略了接口这一层。解决进入 trunk 接口执行 gvrp 命令再敲 display gvrp port 确认接口状态是 Enable。5.2 动态创建的 VLAN 无法加入 access 口现象S4 通过 GVRP 动态学习到了 vlan100想执行 port default vlan 100 却发现接口始终无法加入命令报错或者 VLAN 在接口下不生效。原因动态 VLAN 的创建者是 GVRP 协议它不是配置数据的一部分不允许被引用到业务配置里。接口配置命令要求 VLAN 必须是静态创建的。解决先执行 vlan 100 静态创建再配置接口。静态 VLAN 创建后原来的动态注册会被静态覆盖接口划入就能生效。5.3 S2 的 24 口收不到 VLAN以为配置有问题现象S2 的 23 口能学到 vlan100 和 vlan20024 口却一个都没有链路相邻的 S3 也始终学不到反复重配 trunk 和 GVRP 无果。原因单向注册。GVRP 注册信息从 S1 的 23 口方向进入S2 只在收到注册的接口上建立动态 VLAN24 口方向没有来源自然不会产生注册。解决这不是配置问题是协议行为。回程方向需要在 S4 侧静态创建 VLAN让 S4 作为新的通告源把注册信息反向传播回来。5.4 Fixed 和 Forbidden 模式下allow-pass vlan all 失效现象把接口注册模式改成 fixed 或 forbidden 之后发现很多 VLAN 在接口上消失了明明 trunk 还是 allow-pass vlan all。原因GVRP 注册模式优先于 trunk 放行列表。Fixed 模式禁止动态注册接口只能通过静态配置的 VLANForbidden 模式更严格只放行 VLAN1。解决确认接口的真实放行范围不要只看 allow-pass 配置。如果想恢复全部 VLAN 通传把注册模式改回 normal 即可。5.5 GVRP 只在 trunk 接口生效access 口开不起来现象在 access 接口上执行 gvrp 命令系统提示接口类型不支持。原因GVRP 通告的是跨交换机链路上的 VLAN 信息access 口本身就是单一 VLAN 的边界不具备传播能力。解决先执行 port link-type trunk 改接口类型再开启 GVRP。如果业务上必须用 access那这个接口就不要参与 GVRP。6. 把 Fixed 和 Forbidden 模式跑一遍用 dis vlan 验证差异实验做到这一步可以把 S3 的 23 口从 Normal 改成 Fixed亲眼看一下动态 VLAN 的变化这一步比你背十遍模式定义都管用。[S3]interface GigabitEthernet0/0/23 [S3-GigabitEthernet0/0/23]gvrp registration fixed [S3-GigabitEthernet0/0/23]quit执行完之后马上去 S2 的 24 口看 display vlan。S3 的 23 口被设置成 FixedS3 不再从这个接口学习任何动态 VLAN也不再向 S2 传播动态 VLAN 信息。S2 的 24 口会立刻丢失 vlan100 和 vlan200 相关注册S3 的 24 口方向虽然还连着 S4但整个回程注册信息通道被 Fixed 掐断了。再换成 Forbidden 模式试一下[S3]interface GigabitEthernet0/0/23 [S3-GigabitEthernet0/0/23]gvrp registration forbidden [S3-GigabitEthernet0/0/23]quit这种情况下S3 的 23 口除了 VLAN1 什么都不传连静态 VLAN 也不传了。这正好用来验证原文的说法即使 allow-pass vlan all实际通过的 VLAN 也只有 VLAN1。你会在 S2 的 24 口上发现连静态创建的信息都过不去这个接口变成了彻底的隔离口。两种模式的对比可以这样记录模式S3 23 口能否学习动态 VLANS3 23 口是否传播静态 VLANS2 24 口的注册结果Normal能能vlan100、vlan200 均可学习Fixed不能能全消失Forbidden不能不能全消失仅 VLAN1 通传把注册模式改回 Normal再验证一次恢复情况整个实验就完整了。从那以后我每次做 GVRP 实验都会强制自己在 S2 和 S3 的每个接口上都敲一遍 display vlan 和 display gvrp port把「哪个口从哪个方向学到了哪些 VLAN」记下来再往下配置。GVRP 的坑大多不在命令本身而在你脑补的传播方向。希望这篇拆解帮到你。本文还有配套的精品资源点击获取