ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

华为交换机端口隔离:原理、eNSP实验配置与排障实战

华为交换机端口隔离:原理、eNSP实验配置与排障实战 1. 端口隔离到底解决的是什么问题端口隔离Port Isolation这个功能我在做接入层改造和小区宽带项目时用得非常多。一句话概括它让同一个VLAN内的端口之间二层不互通但每台终端依然能正常访问上行网关。这个需求在现实网络里极其普遍——小区宽带用户之间不能互相看到、酒店客房之间不能互通、学生宿舍、医院病房、企业里同一部门的不同工位之间互相隔离同时所有人都要能上外网。传统做法是给每个用户划分一个独立VLAN用大量VLAN做二层隔离但一个VLAN还要配一个IP网段地址规划和三层接口数量会爆炸。端口隔离正是为了绕开这个VLAN数量爆炸问题而存在的。华为交换机上的端口隔离核心命令就一条接口下port-isolate enable group X。把若干接入端口加进同一个隔离组这些端口之间的二层流量就被掐断了而同组端口与未加入隔离组的端口比如上行口之间仍然是通的。这条命令看似简单但背后的转发模型、二层/三层隔离的区别、上行口的处理方式恰恰是新手最容易翻车的地方。这篇文章我打算结合一次完整的实验把端口隔离从原理到配置、从验证到排障讲透。适合正在准备华为ICT大赛网络赛道、正在做华为认证实验、或者日常运维华为S系列交换机S5700、S5730这类接入层设备的朋友。你只要手边有一台交换机或者装了eNSP就能跟着把整套配置跑一遍。文中涉及的具体命令和参数我会告诉你为什么这么配而不是让你照抄。2. 为什么选端口隔离三种隔离方案的取舍2.1 一个典型的接入层隔离场景先描述一个真实场景。某公司要在一层办公区接入60台终端网关在一台三层交换机或AR路由器上。网络安全要求任意两台终端之间不允许互相访问防病毒横向传播、防ARP欺骗、防数据抓取但都要能访问网关和服务器区。如果你用最原始的一端口一VLAN方案就是60个VLAN、60个网关接口、60个网段。配置量和维护成本极高三层设备上的接口和路由表也会被撑爆IPv4地址浪费严重。这方案在小规模下可行一到几百口就完全不可控。第二个方案是基于VLAN的二层隔离配合MUX VLAN。MUX VLAN允许一个主VLAN下挂多个从VLAN从VLAN又分为互通型和隔离型。主VLAN的上行口可以和所有从VLAN通信隔离型从VLAN之间完全不通。它其实是用VLAN的机制实现了类似端口隔离的效果适合用户数量大、需要结构化管理的场景比如运营商BRAS下的用户隔离。但MUX VLAN配置复杂度高对设备型号有要求排障也麻烦。第三个方案就是端口隔离。它不依赖额外的VLAN只需在物理端口上打一个隔离组标记就能实现组内隔离、组外互通。配置量小、理解门槛低、排障直观是接入层小规模隔离的首选。2.2 端口隔离和ACL隔离的区别很多人会把端口隔离和基于交换机端口的ACL隔离混为一谈两者的实现层次完全不同。ACL是靠流分类和动作实现的你要写一堆规则匹配源/目的MAC或IP然后deny掉。它的颗粒度可以非常细但缺点也很明显ACL规则需要维护、命中会消耗处理资源、二层ACL基于MAC的匹配在很多型号上支持有限、一旦用户MAC变化规则就要改。而端口隔离是靠芯片硬件表项实现的二层转发抑制几乎不消耗额外资源转发行为稳定配置一次永久生效跟终端MAC无关。从影响范围看ACL隔离影响的是你写规则的那部分流量端口隔离影响的是隔离组内端口之间的全部二层流量。前者可控性强后者覆盖面广但粒度粗。实际项目里我的经验是接入层用户互相隔离用端口隔离精细化的策略控制比如禁止访问某个特定服务器用ACL两者是配合关系而不是替代关系。2.3 三者对比与选型建议方案隔离层次配置复杂度资源消耗适用规模典型场景一端口一VLAN二层高高VLAN/网段多极小三五个用户的隔离MUX VLAN二层高中大运营商用户隔离端口隔离二层可扩展到三层低低中接入层办公、酒店、宿舍基于端口的ACL二/三层高中高任意精细化策略控制提示端口隔离的一个隐藏优势是它和VLAN是正交的。你完全可以在同一个VLAN内既做端口隔离又做正常的VLAN划分互不冲突。这一点是MUX VLAN做不到的。我把这张表留着是因为选型时最容易犯的错就是为了隔离而乱加VLAN结果VLAN数量翻了几倍完全没必要。看清每种方案的成本才能选对。3. 端口隔离的工作原理隔离组到底做了什么3.1 隔离组的转发模型华为交换机上的隔离组是接口级的归属关系。一个接口最多属于一个隔离组配置时用group ID区分同一个隔离组内的接口之间二层报文不转发。这里的关键词是二层报文不转发——不是丢弃而是转发引擎在出接口查表阶段就做了抑制源端口来的报文根本不会被送到同组的目的端口。隔离组的编号范围通常是1到若干不同型号不同S5700系列一般支持多个组。不同隔离组之间的端口是互相不隔离的也就是说group 1和group 2的端口互相可以通。这点很多人搞错以为隔离了就全隔离。如果你要让两个不同组也互相隔离就得把它们放同一个组里或者用其他手段。还有一条极易被忽略的规则没有加入任何隔离组的端口参与隔离组的转发判断时是不隔离的一方。所以你的上行口只要不加隔离组接入端口就都能正常访问它。这正是隔离用户、放行网关效果的来源。3.2 二层隔离与三层隔离的区别默认情况下端口隔离只作用于二层转发。也就是说如果两个接入端口属于不同的VLAN哪怕物理上同机或者流量经过了三层设备绕了一圈回来端口隔离是管不住的。举个例子PC1和PC2都在隔离组1里VLAN 10。PC1 ping PC2二层报文选路时被隔离组拦下不通。但如果PC1和PC2的网关是三层设备且PC1和PC2之间有某种三层可达路径比如通过网关的代理ARP或路由那么三层流量依然可能通。这就是二层隔离、三层不隔离的典型表现。为了解决这个较新版本的华为VRP支持port-isolate mode all把隔离范围扩展到三层。它的含义是隔离组内端口之间的报文无论二层还是三层都隔离。相对的port-isolate mode l2就是只隔离二层默认行为。注意port-isolate mode命令在不同版本上的支持情况有差异配置前先用?确认本设备支持哪些参数别硬背命令。3.3 上行端口与单向隔离前面说了上行口默认不隔离那如果业务上要求隔离组内用户不能直接访问上行口所连接的设备怎么办答案是把上行口也加进隔离组。但这样一来上行口和所有接入口就都隔离了用户连网关都访问不了显然不行。这时就要靠单向隔离——让隔离组内端口发出的流量不能到上行口但上行口回来的流量能正常到接入口。华为部分产品支持单向隔离配置方式是在接口下配合相应命令实现。实际项目里我一般用ACL或MUX VLAN来替代这种场景因为单向隔离对版本要求较严、排障也不直观除非必须在同一VLAN内实现否则不值得引入复杂度。4. eNSP实验环境与拓扑规划4.1 设备选型与镜像准备实验我用eNSP来搭这是华为官方的网络仿真平台仿真华为路由器、交换机、防火墙的真实命令行环境做华为认证和ICT大赛练习都靠它。官网下载后需要注册华为账号才能使用设备镜像AR路由器和S5700交换机镜像一般都得手动导入。选设备时注意一点端口隔离功能在S系列交换机上支持完善AR路由器不支持。所以实验中隔离功能必须落在交换机上。我用的拓扑是一台S5700做接入一台AR2220做网关也可以直接用另一台三层交换机或路由器的子接口。如果你想省事用一台S5700加两台PC就够了网关用S5700上的VLANIF代替也行。镜像导入后在eNSP里拖出设备连好线启动。启动两个设备可能比较慢尤其交换机要等几十秒才能出命令行。这个过程不要着急等设备状态灯变绿再连。4.2 实验拓扑与地址规划拓扑结构我做了个三层设计方便把二层隔离、三层隔离的差异演示清楚PC1、PC2、PC3 分别接 LS W1 的 GE0/0/1、GE0/0/2、GE0/0/3属于 VLAN 10LSW1 的 GE0/0/24 做上行口接 R1AR2220R1 的 GE0/0/0 配 VLAN 10 对应的网关地址用子接口或直接物理口地址规划如下表设备接口VLANIP地址备注PC1Ethernet0/0/110192.168.10.1/24网关 192.168.10.254PC2Ethernet0/0/210192.168.10.2/24同上PC3Ethernet0/0/310192.168.10.3/24同上R1GE0/0/010192.168.10.254/24三层网关PC的IP配置在eNSP的PC设备里双击界面配置即可。注意eNSP的PC设备比较弱别开太多台三台足够演示。5. 分步实操从零把端口隔离配起来5.1 基础连通性验证先证明不隔离时是通的做任何隔离实验前第一步一定是先验证基线。很多人一上来就配隔离结果最后不通了也不知道是隔离生效了还是配置错了。先把LSW1的VLAN和接口配好暂时不做隔离Huawei system-view [Huawei] sysname LSW1 [LSW1] vlan batch 10 [LSW1] interface GigabitEthernet0/0/1 [LSW1-GigabitEthernet0/0/1] port link-type access [LSW1-GigabitEthernet0/0/1] port default vlan 10 [LSW1-GigabitEthernet0/0/1] quit [LSW1] interface GigabitEthernet0/0/2 [LSW1-GigabitEthernet0/0/2] port link-type access [LSW1-GigabitEthernet0/0/2] port default vlan 10 [LSW1-GigabitEthernet0/0/2] quit [LSW1] interface GigabitEthernet0/0/3 [LSW1-GigabitEthernet0/0/3] port link-type access [LSW1-GigabitEthernet0/0/3] port default vlan 10 [LSW1-GigabitEthernet0/0/3] quit [LSW1] interface GigabitEthernet0/0/24 [LSW1-GigabitEthernet0/0/24] port link-type access [LSW1-GigabitEthernet0/0/24] port default vlan 10 [LSW1-GigabitEthernet0/0/24] quit上行口我用access模式简化实验真实环境里如果是多VLAN通常配trunk这里不影响隔离验证。配完后从PC1 ping PC2应该是通的。这个通是后面所有对比的基准。实测下来eNSP里PC之间第一次ping可能要丢一两个包ARP学习再ping就稳了别被第一下的timeout吓到。5.2 加入隔离组让同组端口互相不通现在正式配隔离。把GE0/0/1、GE0/0/2、GE0/0/3加入隔离组1[LSW1] interface GigabitEthernet0/0/1 [LSW1-GigabitEthernet0/0/1] port-isolate enable group 1 [LSW1-GigabitEthernet0/0/1] quit [LSW1] interface GigabitEthernet0/0/2 [LSW1-GigabitEthernet0/0/2] port-isolate enable group 1 [LSW1-GigabitEthernet0/0/2] quit [LSW1] interface GigabitEthernet0/0/3 [LSW1-GigabitEthernet0/0/3] port-isolate enable group 1 [LSW1-GigabitEthernet0/0/3] quit注意上行口GE0/0/24没有加入隔离组。这是关键设计——正因为上行口不在组内用户才能访问网关。验证配置用这条命令查看所有隔离组成员[LSW1] display port-isolate group all输出大致是这样The ports in the isolate group 1: GigabitEthernet0/0/1 GigabitEthernet0/0/2 GigabitEthernet0/0/3现在再从PC1 ping PC2结果应该是不通的。而PC1 ping 网关192.168.10.254应该是通的。一不通一通隔离效果就出来了。注意端口隔离只对入方向做抑制。也就是说从组内端口进来的报文不会转到同组其他端口。如果你从PC1抓包会看到PC1发出的ARP请求但收不到PC2的应答。理解这个方向性对排障很重要。5.3 三层隔离实验验证mode all的效果前面说过默认只隔离二层。现在做个小实验验证三层隔离。让PC1和PC2都在VLAN 10网关都是R1。在二层隔离生效的情况下PC1访问PC2的IP理论上会被拦下来因为二层就断了。那什么情况下二层隔离挡不住、需要三层隔离呢答案是当流量经过三层绕行时。比如PC1和PC2被划到不同VLAN但通过三层设备互相路由可达这时候端口隔离如果两端口在同一个隔离组默认只管二层三层流量仍然可以过。开启port-isolate mode all后隔离组内的三层互通也被阻断。在接口下尝试配置[LSW1] interface GigabitEthernet0/0/1 [LSW1-GigabitEthernet0/0/1] port-isolate mode ?用问号查一下本设备支持l2还是all。如果支持all配上去之后你可以在更复杂的跨VLAN场景里验证三层也被隔离。这一步不是所有型号都支持实验环境里如果命令报错别怀疑自己先查版本。5.4 单向隔离与不同组之间的互通验证再做两个对照实验把隔离组的边界搞清楚。对照一不同隔离组互相不隔离。把GE0/0/3改成隔离组2[LSW1] interface GigabitEthernet0/0/3 [LSW1-GigabitEthernet0/0/3] undo port-isolate enable group 1 [LSW1-GigabitEthernet0/0/3] port-isolate enable group 2改完后PC1组1和PC3组2之间应该恢复互通而PC1和PC2都是组1仍然不通。这个实验能帮你彻底记住不同组不隔离这条规则。对照二未加组的端口不受影响。把GE0/0/2从隔离组里移除PC1和PC2又通了。这说明隔离关系是由端口的组归属动态决定的不是一次配死。关于单向隔离前面提过部分版本支持。如果你的设备命令行里有相关参数可以试配并抓包观察方向。这里我不展开因为版本差异太大写死命令反而误导。6. 常见问题与排查技巧实录6.1 隔离配了但不生效的排查思路这是被问得最多的问题。按下面这个顺序查基本能定位第一确认端口是否真的进了组。用display port-isolate group all看别只看自己敲过的命令配置没提交或者被后续undo掉的情况很常见。第二确认两个端口是不是在同一个VLAN。端口隔离作用于二层转发如果两台PC在同一个VLAN但被三层路由绕了一圈单靠二层隔离可能挡不住。反之如果两端口根本不在一个VLAN本来就不通跟隔离无关。第三确认是不是同一个隔离组。不同组不隔离这是新手最容易忽略的规则。第四确认设备型号支持。部分低端型号或某些软件版本的端口隔离行为不同尤其是三层隔离能力差别很大。第五检查是否有其他特性干扰比如端口上配了强制转发、或者用了端口镜像把流量复制出去这些会让看起来还能通。6.2 常见问题速查表现象可能原因排查/解决加组后用户之间还是能通端口不在同一隔离组display port-isolate group all 确认组号用户连网关都不通了上行口被误加入隔离组上行口 undo port-isolate enable同VLAN跨设备还能互访端口隔离是本设备概念跨设备需MUX VLAN或VLAN划分二层隔离了ping还能通走了三层转发或代理ARP配置 port-isolate mode all 或结合ACL改了配置不生效未提交或接口状态异常检查接口up状态重新下发配置组内用户MAC地址还能学到隔离抑制的是转发不是学习属正常现象可用MAC地址表查看提示端口隔离抑制的是转发从PC1来的报文仍然会触发PC2的MAC学习如果是单播且目的未知会泛洪但被隔离抑制。所以你在MAC地址表里能看到组内互学习这不代表隔离没生效。6.3 我踩过的几个真实的坑第一个坑以为端口隔离能跨交换机。一次项目里两台接入交换机级联下面挂的用户要在同一VLAN内互相隔离我天真地在两台交换机上分别配了隔离组1结果跨交换机的用户还是能通。因为端口隔离是本设备内的局部行为它管不到别的交换机上的端口。跨设备的隔离要么用MUX VLAN要么靠VLAN划分要么在汇聚层做ACL。第二个坑上行口加入隔离组后全网瘫痪。有次为了做用户与上行设备隔离我把上行口也加进了组1结果所有用户都上不了网。后来才想明白上行口一进组它和所有接入口的二层流量都被隔了网关自然不可达。这个坑的教训是理解隔离组是组内互斥、组外互通任何要跟用户通信的端口都不能进组。第三个坑以为隔离能替代安全策略。端口隔离只解决二层隔离它不防广播风暴、不防DHCP欺骗、不防ARP攻击。真正做接入安全还得配DHCP Snooping、ARP检测DAI、端口安全这些。端口隔离是防横向访问不是接入安全全家桶。6.4 端口隔离与接入安全特性的协同实际生产里端口隔离一般和这几个特性一起上DHCP Snooping防止非法DHCP服务器配合端口隔离能进一步限制用户间的非法流量。动态ARP检测DAI防ARP欺骗尤其在用户互相隔离的场景下DAI的信任端口通常就是上行口。端口安全Port Security限制每个端口可学习的MAC数量防MAC泛洪。广播风暴抑制限制端口的广播/组播流量比例。这套组合拳打下来接入层才真正算安全隔离。单靠端口隔离只是万里长征第一步。我个人的习惯是隔离组先配、上行口确认不在组内再叠加DAI和端口安全最后测一遍用户互通性和上网。顺序错了容易自己把自己绕进去。7. 生产环境进阶与规格注意事项7.1 隔离组数量和端口规模限制不同型号交换机支持的隔离组数量、每组端口数量都有上限。以常见的S5700、S5730系列为例支持的隔离组数和组内端口数都不算小但到了大规模接入场景比如整层上百口还是要先查规格文档确认。我遇到过一次用了老型号设备隔离组数量不够用最后只能用MUX VLAN顶上去。选型阶段就把这条列进检查清单能省很多返工。另外Eth-Trunk成员端口加入隔离组要谨慎。如果同一个Trunk的成员口分属不同隔离组转发行为会变得难以预测。稳妥做法是Trunk口整体处理隔离逻辑要么全进要么全不进。7.2 端口隔离与堆叠、双上行在堆叠iStack/CSS环境下逻辑上多台交换机是一台设备端口隔离的隔离关系是否跨堆叠成员生效取决于具体实现。双上行场景更要注意如果两台接入各有上行隔离关系只在单台设备内有效跨设备用户可能还是互通的。这类场景我一般推荐直接用MUX VLAN或做VLAN隔离别指望端口隔离能兜底跨设备。7.3 从端口隔离到MUX VLAN的迁移判断什么时候该放弃端口隔离转投MUX VLAN我的经验是看三条线一是设备数量多了、隔离要跨设备二是需要结构化区分互通组和隔离组比如部门内互通、部门间隔离三是用户规模大到隔离组规格不够。满足其中任何一条MUX VLAN的投入就值了。否则端口隔离凭借其低配置成本依然是接入层隔离的最优解。回到实验本身我建议大家做完基础隔离后顺手把MUX VLAN也搭一遍两者对比着看转发差异对理解VLAN隔离和端口隔离这两套机制的区别特别有帮助。华为ICT大赛网络赛道的很多拓扑题本质就是在考你对这两套机制的灵活运用。最后分享一个小技巧实验里验证隔离是否生效别只看ping通不通更直观的办法是在PC1上ping PC2的同时在PC2上用抓包工具看有没有收到ARP请求或ICMP报文。通达和隔离的差异抓包一看便知比反复ping快得多。这个习惯养成后排障效率会高一个档次。
返回列表