两台PC插在同一台交换机上IP配在同一个网段就能互相ping通一旦把它们划进不同的VLAN哪怕地址配得再规整屏幕上也只有请求超时。这个现象几乎每个刚开始接触交换技术的人都会撞上我也不例外。当年第一次在华为ENSP里做VLAN实验盯着两个红色的超时提示看了半小时反复检查网线和IP最后才反应过来VLAN本来就是用来隔离广播域的二层不通是设计使然想让它们通信必须在三层上给它们架一座桥。这篇内容就围绕华为ENSP交换机实现不同VLAN间的通信这件事展开把三层交换机VLANIF方案和单臂路由方案从拓扑搭建、配置命令、验证方法到翻车排查完整走一遍。适合刚学完VLAN划分、正在做实验课作业的朋友也适合已经能配通但说不清原理、排障全靠重启的同行。文中所有配置都在ENSP的S5700和AR2220上实测过命令可以直接抄但每一条为什么这么写我都会讲清楚。1. 先弄清楚不同VLAN之间到底卡在哪一层1.1 VLAN隔离的本质是广播域的切割不是简单的不能通很多人对VLAN的理解停留在把端口分成几组组间不能通信这个说法不算错但太表面一旦遇到问题就不知道该往哪个方向查。准确的理解是一个VLAN就是一个独立的广播域交换机在二层转发帧时只看目的MAC地址而MAC地址表的每个表项都绑定了MAC VLAN ID 端口这三元组。当一台主机发出帧交换机查表发现目的MAC属于另一个VLAN即使物理上在同一个盒子里也不会转发因为这个帧的VLAN标签和目标端口允许的VLAN对不上直接丢弃。打个生活化的比方一栋楼里每层楼都有自己的房间号一层101和二层101房间号一样但快递员只认楼层房间号你把一层的包裹送到二层101收件人当然不认。VLAN ID就是这个楼层号MAC地址是房间号两者合起来才能唯一定位。所以同VLAN互通靠的是二层查MAC表跨VLAN通信靠二层是永远做不到的这不是配置问题是转发模型决定的。理解了这一点你就明白为什么所有跨VLAN方案的本质都一样让一个具备三层转发能力的设备把帧收上来剥掉二层封装查路由表重新封装成目标VLAN的帧再发下去。三层交换机、路由器单臂、路由器多物理口区别只在于这个三层设备在哪儿和它怎么和二层交换机对接。注意VLAN隔离是安全边界的来源不是缺陷。现网里把财务、办公、监控划在不同VLAN恰恰是为了让它们默认不通需要通的地方再单独放行。所以做实验时不要觉得不通是错的先确认自己有没有做三层配置。1.2 三层转发要凑齐的三样东西网关、路由表、ARP跨VLAN通信能不能成本质上是三件事有没有凑齐我把它们称为三张表的校验。第一是网关终端必须知道我要去别的网段帧该发给谁这个谁就是网关地址也就是三层设备上那个VLAN对应的接口地址。终端如果没配网关或者网关配错包在终端这一层就出不去交换机配置再完美也没用。第二是路由表。三层设备收到包以后要查自己的路由表看目标网段从哪个接口出去。对于直连的两个VLAN网段配置了VLANIF接口地址之后路由表里会自动生成两条直连路由这一步通常不需要手工写静态路由。但如果目标网段不是直连的就得补路由实验里常见的是两个三层交换机互联这时候就要考虑静态路由或者动态路由协议。第三是ARP表。三层设备要重新封装二层帧必须知道下一跳或者目的主机的MAC地址这就需要ARP。跨VLAN场景下的ARP有个细节三层设备会从目标VLAN的接口发出ARP请求这个请求带的是目标VLAN的标签所以目标主机能收到并回应。如果ARP表里没有对应表项包会被丢弃或者触发ARP请求第一次ping丢一两个包是正常现象。这三样东西的排查顺序我一般固定为终端网关 → 三层设备接口地址与状态 → 路由表 → ARP表 → MAC表。从下往上、从简到繁能避免一上来就怀疑STP或者模拟器bug浪费大量时间。2. 在ENSP里把实验台子搭稳比急着敲命令重要2.1 拓扑选型的取舍三层交换机方案 vs 单臂路由方案ENSP里实现跨VLAN通信常见两条路。第一条是用三层交换机比如S5700直接创建VLANIF接口作为网关这是目前实际项目里的主流做法因为交换机的背板带宽大VLAN间转发走硬件性能好配置也简洁。第二条是用一台路由器做单臂路由路由器的一个物理接口划分成多个子接口每个子接口对应一个VLAN通过Trunk链路和交换机相连。为什么还要学单臂路由因为不是所有场合都有三层交换机。一些老项目、小型分支、预算受限的场景二层交换机加一台路由器的组合更常见。而且单臂路由的配置过程能把子接口、802.1Q封装、ARP代理这些概念讲透对理解三层交换机的VLANIF反而有帮助。我的建议是两个都做一遍先做三层交换机方案建立整体感再做单臂路由方案对照差异理解会深很多。拓扑上我一般这样搭两台PC分别接在三层交换机的G0/0/1和G0/0/2上划进VLAN 10和VLAN 20如果做单臂路由就在交换机上再加一台AR2220交换机和路由器之间用一条线连交换机这一侧配成Trunk路由器这一侧用子接口。这个拓扑最小故障点少适合反复推倒重来。对比维度三层交换机VLANIF方案路由器单臂路由方案转发性能硬件转发线速软件转发受路由器性能限制配置复杂度低接口地址直接配中需配子接口和封装对设备要求需三层交换机二层交换机加路由器即可VLAN间流量路径交换机内部直接转发绕行路由器链路成为瓶颈典型适用场景园区网汇聚、数据中心小型分支、教学实验、老网改造常见坑点VLANIF状态依赖VLAN内活跃端口子接口必须开ARP广播功能这张表不是让你死记而是让你在真实项目里做选择时有依据。我见过一个分支机构的改造本来用单臂路由业务一多路由器CPU直接拉满后来换成三层交换机同样的拓扑只是把网关从路由器挪到交换机上问题立刻消失。所以选型要看流量规模不是看哪个配置更酷。2.2 基础配置里最容易被忽略的几个前置动作ENSP这个模拟器有个特点它模拟的是设备启动过程不是即点即用。我踩过最冤的一次坑是设备还没完全启动就急着敲命令回车之后提示符没出来以为是键盘问题。正确的顺序是先把设备拖到工作区启动全部设备等设备图标变成绿色、控制台能正常回车看到提示符再开始连线。连线顺序其实无所谓但设备必须先起来。第二个前置动作是给PC配地址。ENSP里的PC是图形化终端双击打开在IPv4配置里填IP、掩码、网关。这里有个细节很多人忽略掩码和网关必须和三层设备的接口地址严格对应。比如网关是192.168.10.1/24PC就应该是192.168.10.x/24网关填192.168.10.1。如果PC掩码写成255.255.0.0它会认为192.168.20.x也是同网段直接发ARP而不会把包交给网关结果就是死活不通你还以为是交换机配错了。第三个动作是改设备名并保存。ENSP默认设备名是Huawei多台设备一起做实验时控制台窗口一多就容易搞混改个sysname能省很多事。保存用save然后回车确认养成习惯不然模拟器异常退出配置全丢重来一遍很折磨。基础配置示例先在交换机上把VLAN和端口归属做掉Huawei system-view [Huawei] sysname SW1 [SW1] vlan batch 10 20 [SW1] interface GigabitEthernet 0/0/1 [SW1-GigabitEthernet0/0/1] port link-type access [SW1-GigabitEthernet0/0/1] port default vlan 10 [SW1-GigabitEthernet0/0/1] quit [SW1] interface GigabitEthernet 0/0/2 [SW1-GigabitEthernet0/0/2] port link-type access [SW1-GigabitEthernet0/0/2] port default vlan 20 [SW1-GigabitEthernet0/0/2] quit这几行命令看起来简单但每一行的意图要清楚。vlan batch 10 20是批量创建比一个一个vlan 10、vlan 20省事port link-type access是把端口从默认的hybrid模式改成access华为交换机端口默认是hybrid不改的话后面port default vlan的行为会和预期有偏差port default vlan 10是把端口PVID设为10收到的无标签帧都归到VLAN 10。做完这一步display vlan应该能看到VLAN 10和20下各挂了一个端口这是后面所有配置的地基。3. 三层交换机方案VLANIF接口是把网关搬到交换机上3.1 VLANIF地址配置与接口为什么是down的这个经典疑问三层交换机方案的核心就一句话给每个VLAN创建一个虚拟的三层接口配上IP地址这个地址就是该VLAN内所有终端的网关。配置命令非常短[SW1] interface Vlanif 10 [SW1-Vlanif10] ip address 192.168.10.1 24 [SW1-Vlanif10] quit [SW1] interface Vlanif 20 [SW1-Vlanif20] ip address 192.168.20.1 24 [SW1-Vlanif20] quit配完之后用display ip interface brief看正常情况下两个VLANIF都应该是UP状态物理层和协议层都是up。但很多人会在这里遇到一个诡异现象VLANIF配好了地址状态却是DOWN怎么配都不通。原因在于VLANIF是虚拟接口它的UP状态依赖于这个VLAN里至少有一个物理端口处于UP状态。如果你只创建了VLAN 10但没有任何一个端口划进VLAN 10或者划进去的端口网线没连、对端设备没启动VLANIF 10就一直是down的。我见过有人为了这个down折腾一下午最后发现是PC没启动端口没起来。所以排查顺序里我把物理端口状态放在很前面用display interface brief看所有端口的PHY状态全是up再往下查。这个依赖关系其实很合理虚拟接口没有物理承载凭什么up理解了这个逻辑以后遇到VLANIF down就不会慌。另外提一句三层交换机上创建VLANIF之前必须先有对应的VLAN顺序反了会报错。vlan batch要在前面执行这是个硬性依赖。3.2 路由表和ARP表验证互通时真正该看的两个地方PC配好网关交换机配好VLANIF理论上就能ping通了。但理论能通和实际能通之间还隔着验证。我习惯配完立刻看两个东西路由表和ARP表。display ip routing-table应该能看到两条直连路由Destination是192.168.10.0/24和192.168.20.0/24Proto列显示Direct出接口分别是Vlanif10和Vlanif20。如果看不到说明VLANIF没起来或者地址没配上回到上一步查。这两条直连路由是自动生成的不需要手工写这也是三层交换机方案比单臂路由省事的地方。display arp看ARP表。第一次从PC1 ping PC2的时候交换机收到包发现目标网段是直连的192.168.20.0/24会从Vlanif20发出ARP请求问192.168.20.10的MAC是多少PC2回应后ARP表里就多一条记录。这时候再ping就稳定通了。所以第一次ping丢一个包是正常的别急着判定配置错误。实测的完整流程是这样PC1192.168.10.10/24网关192.168.10.1去ping PC2192.168.20.10/24网关192.168.20.1在PC1的命令行里输入ping 192.168.20.10第一条通常是Request timeout后面三条正常回Reply。这时候去交换机上看ARP表能看到192.168.20.10对应的MAC同时VLAN 20对应的MAC地址表里也有这个MAC说明二层三层都通了。提示如果连续ping四次全是超时先别怀疑ARP回到display ip interface brief确认两个VLANIF都是up再看PC的网关是不是填成了自己网段的地址。我遇到过把网关填成192.168.10.254的交换机上根本没这个地址包发出去无人应答表现就是全超时。为了把这一节讲透再说一个细节三层交换机内部转发跨VLAN的包时实际上是进VLANIF 10、查路由、出VLANIF 20这个过程帧的二层头会被重写源MAC变成VLANIF 20的MAC目的MAC变成PC2的MAC。所以在PC2上抓包看到的源IP是PC1的源MAC却是网关的这是正常的三层转发特征不是配置错误。理解这一点对后面看ARP表和MAC表很有帮助。4. 单臂路由方案一条物理链路承载多个VLAN4.1 子接口、dot1q termination与那个必须加的ARP开关单臂路由的拓扑改动交换机上再加一个端口比如G0/0/3连到路由器的G0/0/0。交换机这个口要配成Trunk允许VLAN 10和20通过[SW1] interface GigabitEthernet 0/0/3 [SW1-GigabitEthernet0/0/3] port link-type trunk [SW1-GigabitEthernet0/0/3] port trunk allow-pass vlan 10 20 [SW1-GigabitEthernet0/0/3] quit路由器这一侧是重点配置如下Huawei system-view [Huawei] sysname R1 [R1] interface GigabitEthernet 0/0/0.10 [R1-GigabitEthernet0/0/0.10] dot1q termination vid 10 [R1-GigabitEthernet0/0/0.10] ip address 192.168.10.1 24 [R1-GigabitEthernet0/0/0.10] arp broadcast enable [R1-GigabitEthernet0/0/0.10] quit [R1] interface GigabitEthernet 0/0/0.20 [R1-GigabitEthernet0/0/0.20] dot1q termination vid 20 [R1-GigabitEthernet0/0/0.20] ip address 192.168.20.1 24 [R1-GigabitEthernet0/0/0.20] arp broadcast enable [R1-GigabitEthernet0/0/0.20] quit三行命令每一行都有讲究。dot1q termination vid 10是告诉这个子接口收到带VLAN 10标签的帧把标签剥掉交给我处理发出去的帧给我打上VLAN 10的标签。这是802.1Q封装在华为设备上的实现方式等价于其他厂商的encapsulation dot1q。不配这行子接口不知道怎么处理带标签的帧包直接丢。ip address是子接口的网关地址和三层交换机方案的VLANIF地址作用完全一样都是终端的网关。arp broadcast enable是华为路由器子接口上一个非常特殊的配置也是单臂路由最大的坑。华为路由器的子接口默认不处理广播报文而ARP请求是广播帧如果不开启这个功能路由器无法通过子接口发出ARP请求也就学不到VLAN内主机的MAC地址。表现出来就是PC能ping通网关但ping不通另一个VLAN的PC或者时通时不通。我第一次做单臂路由实验就是卡在这里查了半小时配置最后发现就少这一行。注意这个命令是华为设备特有的行为不同厂商实现不一样。做实验时如果发现网关能ping通但跨VLAN不通第一反应就应该是检查子接口有没有开ARP广播。这个经验值不少钱因为文档里往往一笔带过。4.2 两种方案跑通后的横向对比与我自己的选型习惯两个方案都配通之后建议做一组对照实验在单臂路由方案下用PC1持续ping PC2同时观察路由器和交换机之间的链路流量再切到三层交换机方案做同样的操作。你会发现单臂路由下所有跨VLAN流量都要挤过那一条物理链路而且进出各走一次实际占用是双向的三层交换机方案下流量在交换机内部走背板那条上联链路根本不参与。从配置量上看三层交换机方案在两个VLAN的情况下只多了几条VLANIF配置VLAN越多优势越明显。单臂路由每增加一个VLAN就要加一个子接口还要重复配dot1q和ARP广播出错概率随VLAN数量线性上升。所以我的习惯是只要设备支持三层优先用VLANIF只有在设备不支持或者改造预算极低的情况下才考虑单臂路由。不过单臂路由也不是没有价值。它的一个隐藏优势是天然的流量汇聚点所有VLAN间流量都经过路由器方便在这个点上做策略、做审计、做限速。有些场景恰恰需要这种所有跨网段流量必须经过某个设备的结构这时候单臂路由反而是合适的选择。技术方案没有绝对优劣关键看你要解决什么问题。还有第三种方案就是用路由器的多个物理接口每个VLAN接一个口每个口配一个地址。这种方案最直观但端口消耗大VLAN一多路由器插槽不够用实际项目里很少见实验里知道有这么回事就行。5. 通了之后才是真正开始故障排查的完整链路5.1 从物理层到路由层的五步定位法跨VLAN不通的原因可能有很多我习惯按一条固定的链路往下走每一步都有对应的验证命令走完还没找到问题那基本就是模拟器或者终端配置的锅。第一步查物理层。display interface brief看所有相关端口的PHY和Protocol状态必须都是up。这一步能过滤掉网线没连、设备没启动、端口被shutdown这类问题。第二步查VLAN归属。display port vlan能看到每个端口的PVID和允许通过的VLAN列表重点确认access口的PVID对不对、trunk口的allow-pass列表里有没有包含需要的VLAN。这一步能过滤掉端口划错VLAN和trunk没放行这两类高频错误。第三步查VLANIF状态和地址。display ip interface briefVLANIF必须是up地址和掩码要对。第四步查路由表。display ip routing-table直连网段必须在出接口要对。第五步查ARP和MAC表。display arp和display mac-address看有没有学到对端主机的记录。这五步走下来99%的配置问题都能定位。我把这个流程贴在实验笔记第一页因为新手最容易犯的错是跳步——直接去查路由表结果发现路由表没问题又回头查VLAN来回折腾。排查步骤验证命令关键判断点常见异常原因物理层display interface briefPHY和Protocol均为up设备未启动、网线未连、端口shutdownVLAN归属display port vlanPVID正确、Trunk放行目标VLAN端口类型没改、allow-pass漏配三层接口display ip interface briefVLANIF为up且有正确地址VLAN内无活跃端口、地址掩码错路由表display ip routing-table存在目标网段直连路由VLANIF未up、地址未配邻居表display arp / display mac-address学习到对端主机记录ARP未开广播、终端网关错5.2 那些文档里不写、只有实际做过才知道的坑坑一ENSP里PC的ping命令和真实设备不完全一样。图形化PC终端里ping默认发四个包但如果第一个包超时是ARP解析导致的很容易误判。我一般会先ping网关确认网关通再ping对端把问题分段定位。另外ENSP的PC有时候会出现命令行卡住的情况关掉终端窗口重新打开就好不是配置问题。坑二Trunk口两端必须都放行VLAN。单臂路由场景下交换机侧的Trunk放行了VLAN 10和20路由器侧的子接口配了dot1q termination vid这是两端配合的关系。如果交换机侧漏配allow-pass vlan 20VLAN 20的帧根本到不了路由器表现就是VLAN 10能通、VLAN 20不通。这种部分通的现象最有迷惑性一定要逐VLAN核对。坑三STP在实验拓扑里也会起作用。如果你为了省事把几台交换机连成环STP会阻塞某些端口导致VLANIF状态异常。单台交换机的小实验一般不受影响但涉及多台设备时先看清楚哪些端口被阻塞了display stp brief能看到端口角色和状态。很多明明配了却不通的问题最后都是STP把口给堵了。坑四保存配置的时机。ENSP模拟器在关闭时如果不保存配置会丢。save命令要在配置完成后执行输入y确认。有些版本还需要在用户视图下执行系统视图下直接敲save会提示错误。这个虽然和通信原理无关但能让你的实验成果不白费。坑五多次修改后的残留配置。反复做实验时之前的VLANIF地址、静态路由、ACL可能还留在配置里导致现象诡异。我的习惯是每个实验开始前用display current-configuration扫一眼或者干脆重置设备重新配。排查问题时如果发现配置看起来都对但就是不通先怀疑有没有历史残留。6. 从实验台走到真实网络几个值得提前建立的意识6.1 VLAN编号和地址规划要一开始就定规矩实验里用VLAN 10和20、网段192.168.10.0和192.168.20.0看起来很随意但这个对应关系其实是一种很好的习惯VLAN ID和IP网段第三段保持一致的映射规则。VLAN 10对应192.168.10.0/24VLAN 20对应192.168.20.0/24看到地址就知道属于哪个VLAN排查时能省大量时间。真实项目里往往有几十上百个VLAN没有规划规则会非常痛苦。我一般建议的规划原则是VLAN 1保留不用VLAN 2到99留给业务100以上留给管理和互联。管理VLAN单独划出来避免业务流量冲击管理通道。地址段按楼层、按部门、按功能分段预留足够的扩容空间。这些规矩在实验阶段就养成比工作了再改容易得多。另外还有一点VLAN间的网关地址习惯用网段的第一个可用地址比如192.168.10.1终端从.2开始分配。这样网关地址固定换设备时只需要在新设备上配同样的地址终端不用改。这个小习惯在多台三层交换机做网关冗余的场景下尤其重要。6.2 能通不等于该通ACL和端口隔离的配合思路实验的目标是让不同VLAN通但真实网络的常态是默认不通按需放行。三层交换机上配了VLANIF之后所有VLAN之间默认就是互通的这在小网络里方便在大网络里是安全隐患。所以我做完互通实验之后通常会再加一个练习用ACL限制VLAN 20不能访问VLAN 10的某台服务器只允许访问另一台。基本思路是在VLANIF接口上应用traffic-filter或者用ACL配合流策略。命令层面不复杂关键在于想清楚谁访问谁、放行什么、拒绝什么这个逻辑顺序。ACL的规则是从上往下匹配匹配到就执行所以拒绝规则要放在放行规则之前或者用更精确的匹配条件。这个顺序搞反了会出现该通的通不了、该拦的拦不住。端口隔离是另一个层次的隔离同一个VLAN内的端口之间也可以互相隔离只允许和上联口通信。这个功能在酒店、宿舍、办公工位场景很常用防止同一VLAN内的主机互相扫描。它和VLAN隔离解决的是不同层面的问题实际组网里经常组合使用。到这里跨VLAN通信的两种主流方案、配置命令、验证方法和排障链路都走完了。我个人在实际操作中的体会是这类实验最大的价值不在于敲对几条命令而在于建立分层排查的思维——物理层、二层、三层一层一层往上确认每一步都有明确的验证手段而不是靠猜。刚开始做的时候可能会觉得步骤繁琐做上三五遍之后这套流程会变成本能看到不通的现象手会自己往display interface brief上敲。另外提醒一句ENSP毕竟是模拟器它的转发行为和真实设备在极少数场景下会有差异比如某些型号对ARP的处理、生成树的收敛速度实验里通了不代表现网一定通但实验里不通现网肯定有地方配错了。把模拟器当成理解原理的工具而不是验证配置的唯一标准这个心态会帮你少走很多弯路。