news 2026/9/8 13:55:29

华为交换机Hybrid端口实战:实现VLAN 10与20互通,隔离VLAN 30

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华为交换机Hybrid端口实战:实现VLAN 10与20互通,隔离VLAN 30

最近处理一个办公网需求,老板的原话是:“财务和研发这两个VLAN需要互通,但其他VLAN别放进来。”这个需求听起来不大,真做的时候却很容易踩坑。如果只在华为交换机上创建VLANIF 10和VLANIF 20,默认路由会放行所有VLAN之间的三层转发;如果在接入端口用trunk allow-pass vlan all,更会把所有VLAN的二层广播域都打通。最干净的做法,是结合hybrid端口的精确放行和VLANIF三层控制:在同一个物理链路上,只让指定的VLAN通过,其他VLAN在二层直接隔离,三层也不建对应网关。

这篇文章就以“VLAN 10和VLAN 20互通,VLAN 30不参与”为案例,把hybrid的原理、配置、验证和实际会踩的坑完整拆一遍。不管你是刚接触华为交换机的网工,还是已经在维护办公网的老手,都可以照着复现,重点是搞清楚“到底什么时候该用hybrid,什么时候该用trunk”。

1. 先看懂老板这句话:二层放行和三层互通是两件事

很多人拿到这个需求后,第一反应是去配VLANIF,因为两个VLAN要互通,必须有路由。这个方向没错,但只做一半。老板说不让全通,意味着你还要回答另一个问题:其他VLAN是不是也默认能通?如果只创建VLANIF 10和VLANIF 20,不创建VLANIF 30,VLAN 30在三层天然不可达,这算满足了一大半。但如果接入端口把VLAN 30也放行到某个共同设备上,那VLAN 30依然可能在二层触达服务器、打印机等共享资源。

1.1 只配VLANIF,为什么容易让所有VLAN全通

华为交换机上创建了VLANIF接口之后,只要接口状态是Up,并且配置了不同网段的IP,设备就会自动产生直连路由。换句话说,VLAN 10和VLAN 20之间能互访,VLAN 20和VLAN 30之间也能互访,除非你手动限制。

问题就出在这里:你不会只创建两个VLANIF就收手,项目里通常为了管理方便,会把管理VLAN、设备VLAN都配上。如果管理VLAN是VLAN 99,操作时顺手创建一个VLANIF 99,那管理网段也进了路由表。老板要的是“财务和研发通”,结果财务能访问管理网段,研发也能访问管理网段,表面看问题不大,但安全边界就没了。

所以我一般会把需求拆成两层:

  • 两层互访:由VLANIF和路由策略控制,如果没有特殊要求,可以只建需要互通的VLANIF。
  • 二层放行:某个物理端口、某一根网线、某一台服务器上,允许哪些VLAN的帧经过,这个用端口类型控制。

hybrid解决的更多是第二层问题:同一个物理端口,只接收和转发指定的几个VLAN,而不是放行所有VLAN。

1.2 hybrid在这个需求里到底卡在哪个位置

你可以这样理解:VLANIF是三层的大门,端口类型是二层的门禁。hybrid可以精确指定这个物理口:

  • 允许哪些VLAN进入;
  • 从端口出去时,哪些VLAN的帧保留tag;
  • 哪些VLAN的帧剥掉tag后再发送。

比如在服务器接口上配置hybrid,只放行VLAN 10和VLAN 20,那么VLAN 30的帧在进入这个端口时就被丢掉了。即使VLAN 30的三层网关存在,也无法通过这台服务器所在的物理链路去访问服务器。这样二级门禁和三层层叠起来,才能真正做到“两个VLAN互通,但不是全通”。

所以开篇结论放这里:多VLAN互访的需求,不要指望一个命令解决所有问题。通常需要“VLANIF + 路由策略 + 端口类型”三件套配合。hybrid负责把端口级别的VLAN放行范围收住,这一步往往是最容易漏的。

2. hybrid端口和access、trunk的核心区别

华为交换机的端口类型有三种:access、trunk、hybrid。access最粗暴,一个端口只属于一个VLAN;trunk用于交换机或路由设备之间,允许多个VLAN通过,但对tag的处理不够灵活;hybrid可以同时指定多个VLAN带tag或不带tag通过,这是它最大的价值。

2.1 收到一个数据帧时,hybrid端口怎么判断

hybrid端口收到一个数据帧,分两种情况:

  • 无tag帧:先打上该端口的PVID,然后检查这个PVID对应的VLAN是否在允许通过的VLAN列表里。如果在,接收;如果不在,丢弃。
  • 有tag帧:直接检查VLAN tag是否在允许通过的列表里。如果该VLAN被允许,接收;否则丢弃。

所以“允许通过的VLAN列表”是硬条件。我们常说的port hybrid untagged vlan和port hybrid tagged vlan,本质都是往允许列表里加VLAN,只是发送时的处理方式不同。

2.2 从端口发出时,untagged和tagged分别管什么

端口从自己转发表中找到一个帧,准备从hybrid端口发出去时,会看这个帧所属的VLAN:

  • 如果该VLAN在untagged列表中,就删除VLAN tag,变成纯以太网帧再发出去。
  • 如果该VLAN在tagged列表中,就保留VLAN tag,原样发出去。
  • 如果该VLAN两边列表里都没有,不转发。

这就是hybrid最灵活的地方。比如一个服务器网卡不支持802.1Q,只能认无tag帧,那你就可以把VLAN 10和VLAN 20都加进untagged列表,服务器不用配置虚拟子接口,也能同时接两个VLAN的流量。

2.3 为什么trunk做不到的细节,hybrid可以做到

trunk端口也可以允许多个VLAN通过,也有PVID概念。华为trunk默认对PVID所在的VLAN剥tag转发,其他VLAN带tag转发。问题是:trunk只能有一个PVID,也就是只能有一个VLAN被剥tag。如果对端是一台傻瓜交换机,它完全不认识VLAN tag,你希望VLAN 10和VLAN 20都以untagged方式送过去,trunk做不到。

hybrid没这个限制。你可以在同一个物理端口上把VLAN 10、VLAN 20都设为untagged,把VLAN 30设为tagged,或者干脆不允许VLAN 30通过。看起来就是“多个VLAN共用同一个物理口,但到达对端时有的保留tag,有的不保留”,完全按业务需要来。

注意:华为交换机很多端口默认就是hybrid类型,默认PVID是VLAN 1,默认允许VLAN 1 untagged通过。所以实际配置时,不一定非要先打port link-type hybrid,但显式写出来更清晰。

3. 实战案例:让VLAN 10和VLAN 20互通,但VLAN 30不行

下面用一个能直接复现的案例场景,把配置命令和思路串起来。设备用华为S系列交换机,模型不限。eNSP模拟器上也可以按同样的配置跑通。

3.1 组网结构和地址规划

假设有一台核心交换机,接了三个业务网段:

VLAN用途网段网关
VLAN 10财务192.168.10.0/24192.168.10.1
VLAN 20研发192.168.20.0/24192.168.20.1
VLAN 30访客192.168.30.0/24不建网关

终端位置:

  • PC-A接G0/0/1,属于VLAN 10;
  • PC-B接G0/0/2,属于VLAN 20;
  • 服务器Server接G0/0/3,要同时能被VLAN 10和VLAN 20访问,但VLAN 30不能访问它;
  • PC-C接G0/0/4,属于VLAN 30。

服务器网卡不做VLAN子接口,不启用801.Q,就用两个IP:

  • 192.168.10.100/24;
  • 192.168.20.100/24。

3.2 交换机VLAN和三层接口配置

先创建VLAN,再给VLAN 10和VLAN 20创建网关接口。

system-view vlan batch 10 20 30

创建VLANIF,作为两个业务VLAN的网关:

interface Vlanif10 ip address 192.168.10.1 255.255.255.0 quit interface Vlanif20 ip address 192.168.20.1 255.255.255.0 quit

VLAN 30我故意不创建VLANIF。这样VLAN 30里的终端即使配置了192.168.30.1,交换机上也没有这个网关地址,无法完成三层转发。这是“不让全通”的第一道闸门。

如果业务上需要VLAN 30能上外网,但就是不能访问内网,那就不要在这里放行,把VLAN 30的网关放到上游防火墙,由防火墙策略做限制。这里只演示不建VLANIF的最简单方式。

3.3 服务器端口用hybrid精确放行

交换机接服务器的接口G0/0/3,配置成hybrid,只放行VLAN 10和VLAN 20,并且以untagged方式发出去,因为服务器网卡不识别VLAN tag。

interface GigabitEthernet0/0/3 port link-type hybrid port hybrid pvid vlan 10 port hybrid untagged vlan 10 20 quit

这条配置拆开看:

  • port link-type hybrid:把端口类型显式设为hybrid。
  • port hybrid pvid vlan 10:从该端口进来、不带tag的帧,打上VLAN 10的标签。比如服务器发出去的无tag帧,交换机收到后当VLAN 10处理。
  • port hybrid untagged vlan 10 20:该端口允许VLAN 10和VLAN 20通过,并且从端口向服务器方向发出时,去掉VLAN tag。

VLAN 30没有出现在允许列表里,所以任何从交换机核心侧发往VLAN 30的帧,在G0/0/3这个口不会出去。反过来,如果VLAN 30的终端想访问服务器,三层过不来,二层在这个端口也被拒了。

PC-A和PC-B的接入端口用access就行:

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

PC-C接G0/0/4,同样用access,划分到VLAN 30:

interface GigabitEthernet0/0/4 port link-type access port default vlan 30 quit

3.4 严格模式:用ACL掐住三层互访

如果只是“两个VLAN互通,其他不通”,不建VLANIF 30已经够了。但有的项目里,VLAN 30的网关在别的设备上,或者以后运维人员可能随手创建VLANIF 30,那最好再加一道明确的ACL策略,只允许VLAN 10和VLAN 20互访。

acl number 3000 rule 5 permit ip source 192.168.10.0 0.0.0.255 destination 192.168.20.0 0.0.0.255 rule 10 permit ip source 192.168.20.0 0.0.0.255 destination 192.168.10.0 0.0.0.255 rule 15 deny ip

把ACL应用到VLANIF接口的入方向:

interface Vlanif10 traffic-filter inbound acl 3000 quit interface Vlanif20 traffic-filter inbound acl 3000 quit

这样从VLAN 10进入三层、目的不是VLAN 20网段的流量会被拒绝;从VLAN 20进入三层、目的不是VLAN 10网段的流量也会被拒绝。同一VLAN内部如果走二层转发,不会经过这个过滤,所以影响不大。但如果你环境里有同网段但需要跨三层转发的特殊情况,要自己再补放行规则。

注意:ACL规则是按顺序匹配的。实际生产网络里,千万别只抄这两条permit,要先把该放行的所有源目网段加全,再写deny ip。不然后面加新业务会很难排查。

4. 配置完了怎么验证

配置完成后不要急着上线,先在命令行里确认端口和VLAN状态,再做业务测试。

4.1 看VLAN和端口对应关系

display vlan

这条命令会列出交换机上所有VLAN,以及每个VLAN包含的端口。确认VLAN 10、VLAN 20、VLAN 30都在,并且端口归属正确。

display vlan brief

这条比较简洁,适合快速看VLAN ID、状态和端口数量。

display port vlan

这条可以看到每个端口是access、trunk还是hybrid,以及PVID和允许通过的VLAN情况。想单独看某个接口,可以加上接口名:

display port vlan interface GigabitEthernet0/0/3

正常状态下G0/0/3应该显示:

  • 端口类型:hybrid;
  • PVID:10;
  • Untagged VLAN:10、20;
  • Tagged VLAN:无。

4.2 看hybrid端口的实际状态

display interface GigabitEthernet0/0/3

在显示信息里找PVID、Link Type这些字段。华为不同型号显示格式略有差异,但一般都能看到类似以下信息:

Port Link Type: hybrid PVID: 10 VLAN Passing: 10,20 VLAN Passing (UNtagged): 10,20

如果看到VLAN Passing里出现了30,说明配置没有生效,或者接口下面还有其他配置把VLAN 30放行了。

还可以查看当前接口完整配置:

display current-configuration interface GigabitEthernet0/0/3

4.3 业务验证顺序

验证建议按这个顺序走:

  1. PC-A ping PC-B的网关192.168.10.1,确保本地网关通。
  2. PC-B ping网关192.168.20.1,确保本地网关通。
  3. PC-A ping 192.168.20.10,验证VLAN 10到VLAN 20三层互通。
  4. PC-B ping 192.168.10.10,验证反向三层互通。
  5. PC-A ping服务器192.168.10.100,验证同VLAN访问服务器。
  6. PC-B ping服务器192.168.20.100,验证另一个VLAN访问服务器。
  7. PC-C ping服务器192.168.10.100或192.168.20.100,应该不通。

如果PC-A或PC-B访问服务器不通,先看ARP能不能学到。在交换机上执行:

display arp | include 192.168.10.100 display arp | include 192.168.20.100

如果服务器两个IP都能学到ARP,说明二层没问题。学不到ARP,重点检查G0/0/3的untagged列表里有没有对应VLAN,服务器网卡IP是否配置正确。

5. 实际落地会踩的坑和排查顺序

这一类组网看起来简单,落地时坑点不少。下面几个问题,是我自己排查时经常遇到的。

5.1 PVID设置不对,帧被当成VLAN 1处理

华为交换机端口默认PVID是VLAN 1。如果hybrid接口只配置了untagged vlan 10 20,忘记配置port hybrid pvid vlan 10,那么从服务器方向进来的无tag帧,会被打上VLAN 1的标签。交换机上VLAN 1默认允许通过,但VLAN 1里没有服务器对应的网关,结果PC-A和PC-B去ping服务器时,交换机把帧当成VLAN 1去转发,ARP永远学不到。

排查顺序:先display interface看PVID,再看收到无tag帧方向的对端设备。

一定要把PVID和untagged列表配合起来看:PVID管接收方向无tag帧打哪个标签,untagged列表管发送方向哪个VLAN剥标签。

5.2 untagged和tagged配置反了

这个坑通常出现在对端设备支持802.1Q的场景。比如服务器网卡其实支持VLAN,你想让它分别处理VLAN 10和VLAN 20,那就应该把G0/0/3上的VLAN 10和VLAN 20配成tagged,服务器端做子接口。如果配成了untagged,两个VLAN的帧到服务器时都没tag,服务器无法区分。

反过来,如果服务器网卡不支持VLAN,却配成了tagged,服务器收到带802.1Q tag的帧,大概率直接丢弃,表现为能通一部分、不能通一部分,或者完全不通。

判断方法很直接:

  • 对端设备不开VLAN子接口,只配置普通IP,用untagged;
  • 对端设备开VLAN子接口,或下一跳是路由器、防火墙,用tagged;
  • 不确定时,抓包看帧里有没有0x8100。

5.3 服务器或傻瓜交换机只认untagged时,广播域会合并

hybrid把多个VLAN都配成untagged后,在这台服务器或傻瓜交换机看来,这些VLAN的帧都是“普通二层帧”。它不会区分VLAN 10和VLAN 20,而是当作同一个广播域在处理。

如果下面只接一台服务器,风险可控。如果下面接的是一台傻瓜交换机,而傻瓜交换机下面又接了终端,那么VLAN 10和VLAN 20的广播、未知单播、ARP全都混在一起了。此时VLAN 10和VLAN 20之间的二层隔离,在傻瓜交换机下已经失效。

这不是配置错误,是hybrid这种用法的固有边界。真出现这种需求,更合适的方案是使用基于IP子网或MAC的VLAN划分,让傻瓜交换机上行到华为交换机时,交换机能根据IP子网或MAC重新打上VLAN标签。

5.4 时序问题:先把VLAN 30放进允许列表,最后又忘了删

实际操作中,很多人调试时为了方便,会先临时把VLAN 30 untagged加到接口下,测试完没删,就带着上线了。这类问题在验收时最容易漏。

排查这类历史配置,建议在所有hybrid端口上统一执行:

display port vlan

人工确认每个端口允许的VLAN是否和业务一致。不要只看某一段配置片段,要看完整的端口VLAN放行情况。

6. 什么场景该用hybrid,什么场景该换方案

hybrid很好用,但不要把它当成万能钥匙。有些场景用它反而会把问题变复杂。

6.1 hybrid最适合的场景清单

  • 单台服务器、单台终端不支持802.1Q,但需要同时接入多个VLAN。
  • 下联一台傻瓜交换机,多个VLAN的终端都接在这台傻瓜交换机下,需要交换机侧做VLAN重新标记。
  • 同一个物理上联口,只需要放行部分VLAN,其他VLAN不让过,又不想创建一堆子接口。
  • 需要基于IP子网或MAC地址划分VLAN时,接入端口用hybrid配合VLAN关联策略。

这些场景里,hybrid多出“多个VLAN untagged”的能力,是trunk做不到或做起来很别扭的。

6.2 什么时候老老实实换trunk或换ACL

如果两台交换机之间要跑大量VLAN,互联口优先用trunk,不要用hybrid。trunk语义更清晰,跨厂商兼容性更好。

如果核心目标是“限制哪些网段能互访”,优先用ACL或防火墙策略,而不是靠端口类型去堵。因为访问控制最终发生在三层,只靠二层hybrid限制端口,遇到多路径组网或上行链路切换,容易漏。

如果交换机要对接虚拟化平台,比如K8s节点、VMware虚拟交换机,通常也是用trunk或虚拟交换机上的VLAN策略,很少用hybrid。

6.3 给两类读者的建议

新手不要背命令,先把三个问题想清楚:端口PVID是谁,发送到对端时哪些VLAN保留tag,哪些VLAN不允许过。把这三个问题回答了,hybrid配置其实不需要记。

老手更要注意组网语义:hybrid是端口级别的“二进门禁”,不是安全策略替代品。业务上的“这两个VLAN通,其他不通”,最终还要靠VLANIF、ACL、防火墙策略一起收口。先跑通小样例,再整体验收,比一次性把所有端口都配上要稳得多。

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

Java Socket实现文件传输:从协议设计到粘包处理实战

/* 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 13:52:01

INAV Configurator 2.2.1 安装指南:从解压到连接飞控的完整实操

/* 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 13:51:30

openCode 开源终端 AI 编程 Agent 完整使用指南:模型配置、IDE 集成与实战

这两年终端里的 AI 编程助手一个接一个冒出来,opencode 是其中我很喜欢的一个开源项目。它不是那种只会在编辑器里给你补全代码的插件,而是可以整包接手一个任务的 AI 编程 Agent:读仓库、改代码、跑命令、查报错、写测试,全程在终…

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

LSTM多输入多输出时间序列预测实战:从三维张量到Seq2Seq架构

简介:基于LSTM实现多输入多输出的时间序列预测项目,面向深度学习初学者、数据科学爱好者以及需要处理多变量预测任务的工程师。项目使用Python编写,以空气质量pollution等CSV数据为例,完整演示数据清洗、缺失值处理、归一化、多特…

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

用R语言搭建自动数据采集链路:从网页抓取到中文分词与词频分析

前两天有位读者私信我,说他想把某个公开网站的新闻标题批量抓下来,再做词频热词分析,结果卡在第一步:R装好了,却不知道用什么包,也不知道整条链路该怎么搭。这个问题很典型,几乎每个刚接触“基于…

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

npx skill add ponytail:用马尾辫哲学收束Agent技能分发与工作流

看到这条 npx skill add dietrichgebert/ponytail 的时候,我第一反应其实是愣了一下的。 ponytail ,马尾辫,放在开发者工具的语境里实在不算常见命名。但顺着 skill 这个关键词想下去,又觉得这个名字起得挺妙——马尾辫干的…

作者头像 李华