
先说个真实场景。上周帮一家公司排查网络故障客户反映财务部和研发部明明接在同一个机房的交换机上两边电脑就是互相ping不通。我登上华为S5700一看VLAN 10和VLAN 20都建了端口也都划对了但SVI接口就是VLANIF压根没配。这种问题在S5700的日常维护里太典型了你查配置啥都对就是少了一个最关键的动作。本文就围绕华为S5700三层交换机把VLAN配置里那些让人抓狂的坑一个个拆开讲清楚。1. 内容整体设计与思路拆解1.1 先搞懂VLAN间通信的前置条件很多人上来就在交换机上敲命令结果发现怎么都通不了问题往往出在没搞明白VLAN间通信的本质逻辑。VLAN的作用是隔离广播域不同VLAN之间默认是无法互访的。要实现互通必须经过三层转发也就是要有路由功能介入。三层交换机解决这个问题的核心思路就是通过VLANIF接口SVISwitch Virtual Interface把每个VLAN变成一个网段交换机内部的硬件芯片直接完成不同VLAN之间的路由转发。换句话说VLANIF接口就是给某个VLAN配置网关的入口。这里有个关键点华为S5700默认是二层模式所有VLANIF接口默认处于Down状态。你需要先确保VLAN存在而且至少有一个物理端口属于该VLAN且处于Up状态VLANIF接口才会起来。这是排查问题的第一道关卡后面会详细讲怎么验证。1.2 S5700配置VLAN的理想架构咱们先勾勒一个标准的组网需求一台S5700-28C-EI作为核心底下接了三台二层接入交换机分别对应财务部、技术部、行政部三个业务区域。三个部门使用不同网段彼此需要访问文件服务器和打印机但又要控制权限。在这种情况下最简单的做法是在S5700上创建三个VLAN分别是VLAN 10192.168.10.0/24、VLAN 20192.168.20.0/24、VLAN 30192.168.30.0/24然后在S5700上分别创建对应的VLANIF地址作为各网段的网关最后把到接入交换机的链路配置成Trunk类型放通相应VLAN。这个方案的好处在于第一核心三层交换机统一负责路由处理性能远超路由器数据转发不走软件路由而由硬件芯片完成第二接入交换机只做二层透传配置简单故障范围小第三ACL策略可以集中部署在S5700上统一管控不同网段的安全策略。成本上一台S5700就能搞定整个中小型园区的三层路由需求没必要额外购买路由器设备。2. 核心细节解析与实操要点2.1 VLANIF接口为什么不起来这是配置VLAN间路由时最常遇到的问题。我见过太多人在交换机上敲了interface Vlanif 10然后配完IP就以为万事大吉了结果VLANIF接口一直显示down。判断方法特别简单执行display interface Vlanif 10查看状态。如果接口是down先排查两件事该VLAN在交换机上是否已经创建。执行display vlan确认VLAN 10是否存在。该VLAN下是否有至少一个物理端口处于Up状态。如果端口都是down或者没加入VLAN 10VLANIF接口永远不会up。为什么华为要这么设计这是华为的逻辑——VLANIF接口代表的是整个VLAN的三层接口只有VLAN内有活跃的物理成员这个三层接口才有意义。没有物理端口的VLANIF就像一个没有通路的机场跑道飞机没法起降。有人会问能不能用interface Vlanif直接继续配置能配但前提是先让端口状态准备好。我自己的习惯是在S5700上永远先确认VLAN和端口都正常了再去配置VLANIF地址避免后面配置完发现接口起不来还得回头查原因。2.2 VLANIF配置的核心误区最常见的误区是有人以为配了VLANIF接口就能互通忘了一个前提——终端设备的网关必须指向VLANIF的IP地址。S5700的VLANIF相当于网关上联口的角色PC的默认网关必须是S5700上对应VLANIF的地址。打个比方VLANIF就是小区大门PC是住户住户出门必须走小区大门而不是自己家的防盗门。如果PC的网关写错了哪怕S5700路由表再正常数据包也找不到出口。另一个误区是VLANIF地址和接口地址冲突。比如VLAN 10的网段是192.168.10.0/24你给VLANIF配了192.168.10.254/24但这时如果接入交换机上还有另外一个VLANIF也配了同网段地址就会引发路由冲突和ARP异常。我遇到过类似问题现象是部分PC能通部分不能通查了半天才发现是地址规划出了重叠。2.3 Trunk口配置的三个关键参数连接接入层交换机的链路在S5700上一般要配成Trunk口。配置Trunk口有固定套路但没有理解背后的原理很容易踩坑。华为Trunk口有三个参数新手极易搞混Trunk允许通过的VLAN列表、PVIDPort VLAN ID、以及Native VLAN原生VLAN。默认情况下华为交换机的PVID是1Native VLAN也是VLAN 1Trunk口默认放通VLAN 1。先讲PVID和Native VLAN的关系。在华为交换机上PVID是Access口的概念延伸它决定收到不带Tag的数据帧时交换机把它归入哪个VLAN。而Native VLAN是指Trunk口上不打标签的那个VLAN华为的配置命令就是port trunk pvid vlan。收到无Tag数据帧时交换机会打上PVID对应的Tag如果打上的Tag正好等于Trunk的PVID即Native VLAN对端发出的帧不带Tag如果Tag不等于PVID则帧携带Tag发出。这个机制对理解VLAN间通信非常重要。如果两边PVID不一致比如A交换机Trunk口PVID是10B交换机Trunk口PVID是20两边都有VLAN 10和VLAN 20的成员端口那么从A交换机VLAN 10发出的不带Tag帧到了B交换机的Trunk口B会按自己的PVID 20打上Tag数据就被错误送进了VLAN 20——这就是VLAN错位的根源。所以华为的官方建议是链路两端Trunk口的port trunk pvid vlan必须一致。大多数场景下保持默认的VLAN 1即可。除非你明确知道要做什么否则别去改PVID。port trunk allow-pass vlan这个命令的作用是控制哪些VLAN的帧允许通过该Trunk链路。很多人只记得放通自己创建的VLAN比如port trunk allow-pass vlan 10 20 30但忘了默认放通VLAN 1。在某些拓扑中这可能导致管理VLANVLAN 1的互通异常影响远程管理。配置命令的规范顺序建议如下[HUAWEI-GigabitEthernet0/0/1] port link-type trunk [HUAWEI-GigabitEthernet0/0/1] port trunk pvid vlan 10 [HUAWEI-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 20 30注意先配pvid再配allow-pass是经验做法如果你先配了allow-pass再改pvid也没关系华为命令会直接生效。但事务上先配pvid更符合思维逻辑不容易漏配。3. 实操过程与核心环节实现3.1 完整配置案例可直接抄作业下面给出一套从零开始的S5700 VLAN间路由配置覆盖核心场景。假设拓扑如下S5700作为核心交换机下联三台接入交换机。VLAN 10192.168.10.0/24财务部VLAN 20192.168.20.0/24技术部VLAN 30192.168.30.0/24行政部网关都在S5700上192.168.10.1、192.168.20.1、192.168.30.1核心交换机的配置步骤HUAWEI system-view [HUAWEI] sysname Core-S5700 [Core-S5700] vlan batch 10 20 30 [Core-S5700] interface Vlanif 10 [Core-S5700-Vlanif10] ip address 192.168.10.1 255.255.255.0 [Core-S5700-Vlanif10] quit [Core-S5700] interface Vlanif 20 [Core-S5700-Vlanif20] ip address 192.168.20.1 255.255.255.0 [Core-S5700-Vlanif20] quit [Core-S5700] interface Vlanif 30 [Core-S5700-Vlanif30] ip address 192.168.30.1 255.255.255.0 [Core-S5700-Vlanif30] quit接下来配置下联口。假设接入交换机A接在GigabitEthernet0/0/1口接入交换机B接在GigabitEthernet0/0/2口接入交换机C接在GigabitEthernet0/0/3口[Core-S5700] interface GigabitEthernet0/0/1 [Core-S5700-GigabitEthernet0/0/1] port link-type trunk [Core-S5700-GigabitEthernet0/0/1] port trunk pvid vlan 1 [Core-S5700-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 20 30 [Core-S5700-GigabitEthernet0/0/1] quit其他下联口配置同理只是端口号不同。如果接入交换机实际也在跑VLAN 1的管理地址Trunk口需要额外放通VLAN 1否则管理地址无法互通。接入交换机的配置就简单多了以接入交换机A为例HUAWEI system-view [HUAWEI] sysname Access-A [Access-A] vlan batch 10 [Access-A] interface GigabitEthernet0/0/1 [Access-A-GigabitEthernet0/0/1] port link-type access [Access-A-GigabitEthernet0/0/1] port default vlan 10 [Access-A-GigabitEthernet0/0/1] quit [Access-A] interface GigabitEthernet0/0/24 [Access-A-GigabitEthernet0/0/24] port link-type trunk [Access-A-GigabitEthernet0/0/24] port trunk pvid vlan 1 [Access-A-GigabitEthernet0/0/24] port trunk allow-pass vlan 10上联口接S5700用Trunk放通VLAN 10下联口接PC用Access划分到VLAN 10这是标准的二层接入写法。3.2 验证VLAN间互通的完整步骤配置完以后不能直接说“好了”必须逐层验证。我习惯按下面的顺序排查第一步在核心交换机上执行display vlan确认三个VLAN都存在且端口成员正确。第二步执行display interface Vlanif 10查看IP地址是否正确接口状态是否Up。第三步在核心交换机上ping各VLAN的网关地址确认三层接口无异常。第四步接一台PC到VLAN 10配置好IP和网关ping网关192.168.10.1通了再ping VLAN 20的PC地址。第五步如果还是不通执行display arp看看核心交换机是否学到了VLAN 10 PC的ARP表项。如果没有学到问题出在二层链路或者PC本身如果学到了问题可能出在路由或者防火墙策略。这里分享一个定位技巧用display mac-address查看MAC表项。如果PC的MAC地址在接入交换机上能学到display mac-address但核心交换机上查不到基本可以确定是Trunk口的VLAN放通问题如果核心交换机MAC表都有但ARP学不到说明三层VLANIF没起来或者VLANIF配置有问题。3.3 静态路由与默认路由的补充很多场景下S5700上面还有一台出口路由器或防火墙需要把内网网段指向上联设备。这时需要在S5700上配置一条默认路由[Core-S5700] ip route-static 0.0.0.0 0.0.0.0 192.168.100.1这里192.168.100.1是上联设备的接口地址。写完默认路由后记得在上联设备上要么配置回程路由指向S5700上联口的IP同时业务网段的下一跳指向S5700要么配置动态路由协议。我自己经常遇到的问题是VLAN间互通正常但PC上网总是超时。排查下来是出口设备上没写回程路由数据包能出去但回不来。这种问题在S5700上不容易一眼发现因为交换机自己ping外网可能通源地址是S5700上联口地址但PC ping不通源地址是业务网段。所以验证时一定要模拟真实的PC行为。4. 常见问题与排查技巧实录4.1 问题速查表真实排障经验我把这些年帮别人排障遇到的S5700 VLAN问题整理成了表格方便大家对照排查故障现象可能原因排查命令与处理方法VLANIF接口DownVLAN不存在或无端口属于该VLANdisplay vlan, 检查端口是否access/trunk加入对应VLANPC能ping通网关但跨VLAN不通核心交换机没有开启VLAN间路由VLANIF地址配错display current-configuration查看VLANIF配置确认各VLANIF地址在不同网段跨VLAN瞬间通但不稳定Trunk口PVID不一致导致VLAN错位display port trunk确认两端PVID一致部分PC能通部分不能通PC的网关配置错误IP地址重复ARP表混乱逐台PC检查IP配置局域网内查IP冲突所有VLAN间都不通三层转发未开启VLANIF接口未创建或Down检查VLANIF是否存在且Up状态display interface VlanifVLAN 10能通VLAN 20但VLAN 30永远不通某个VLAN的VLANIF没配置或下联Trunk口没放通VLAN 30display vlan, display port trunk这张表是我在现场维护时经常参考的每一条都对应真实踩过的坑。4.2 VLAN 1 的“隐形坑”VLAN 1是华为交换机的默认VLAN默认所有端口都属于VLAN 1。很多人在配置Trunk口时习惯用port trunk allow-pass vlan 10 20这样的写法这会覆盖默认配置导致VLAN 1的流量包括管理地址、部分协议报文无法通过该链路。这在某些特定拓扑下影响是致命的。比如你用VLAN 1地址管理交换机且管理地址在核心交换机上下联交换机也需要通过该Trunk口上传管理流量。一旦Trunk口忘了放通VLAN 1下联交换机就失联了只能到现场用console线处理。我的习惯是在S5700的Trunk口配置中除非有安全需求明确不让VLAN 1通过否则都加上vlan 1[Core-S5700-GigabitEthernet0/0/1] port trunk allow-pass vlan 1 10 20 30华为S5700默认其实已经放通VLAN 1但为了后续维护时不被自己配置的操作绕晕我建议每次配置Trunk都明确把vlan 1列出来让配置可读性更强自己也清楚知道哪些VLAN被放行了。4.3 端口下接PC但配错成Trunk的尴尬我遇到过不止一次有人把接PC的端口误配成了Trunk口PC死活拿不到IP地址。原因是PC网卡发出的帧不带Tag交换机Trunk口收到无Tag帧后会打上PVID对应的Tag。如果PVID是默认的VLAN 1而该端口Trunk只放通了VLAN 20那么这个帧可能被直接丢弃。在Access口上这个逻辑简单很多端口属于哪个VLAN收到的无Tag帧就打哪个VLAN的Tag毫无悬念。所以接到PC、打印机、AP这类终端设备的端口一律用Access口别图方便搞什么“混合模式”。如果需要支持语音VLAN和数据VLAN共存比如IP话机同时接PC和话机那才考虑Hybrid口那是更进阶的话题一般场景用不上。4.4 排查逻辑从物理层到应用层最后把这个排查流程再捋一遍。遇到VLAN间互通问题我的习惯是从下往上排查物理层检查端口状态display interface brief确认端口没有errordown没有光模块异常。链路层检查端口有没有正确加入VLANTrunk端口有没有正确放通VLAN两端PVID是否一致。网络层检查VLANIF接口是否存在、IP是否正确、接口状态是否Up路由表是否有对应网段路由。应用层检查防火墙策略、ACL是否拦截了特定流量检查PC的网关、防火墙配置是否正确。这套流程覆盖了大多数S5700的VLAN故障场景按部就班执行基本都能定位问题所在。5. 高阶技巧与安全建议5.1 用Hybrid口实现多VLAN访问同一终端华为S5700的Hybrid口在这里值得提一句。Hybrid口可以同时处理带Tag和无Tag的帧而且收发的规则比Trunk口更灵活。一个典型场景是有一台服务器需要同时被VLAN 10、VLAN 20、VLAN 30访问但服务器本身不需要配置三个IP地址的VLAN。更稳妥的做法是为服务器单独划分一个VLAN比如VLAN 40然后通过S5700上的ACL控制不同VLAN对VLAN 40的访问权限而不是让多个VLAN直接共享同一个物理端口。Hybrid口虽然灵活但配置复杂、排查困难如果你不是完全清楚它在做什么建议别用。5.2 ACL控制VLAN间互访有时候这不是“通不通”的问题而是“允不允许通”的问题。比如财务部VLAN 10应该禁止访问技术部VLAN 20但允许访问文件服务器所在的VLAN 30。在S5700上可以通过ACL与流策略结合来实现[Core-S5700] acl 3000 [Core-S5700-acl-adv-3000] rule 5 deny ip source 192.168.10.0 0.0.0.255 destination 192.168.20.0 0.0.0.255 [Core-S5700-acl-adv-3000] rule 10 permit ip [Core-S5700-acl-adv-3000] quit [Core-S5700] traffic classifier c1 [Core-S5700-classifier-c1] if-match acl 3000 [Core-S5700-classifier-c1] quit [Core-S5700] traffic behavior b1 [Core-S5700-behavior-b1] deny [Core-S5700-behavior-b1] quit [Core-S5700] traffic policy p1 [Core-S5700-policy-p1] classifier c1 behavior b1 [Core-S5700-policy-p1] quit [Core-S5700] interface Vlanif 20 [Core-S5700-Vlanif20] traffic-policy p1 inbound这条配置的作用是从VLAN 10发往VLAN 20的数据包在进入VLAN 20的网关时被丢弃其余流量放行。注意要在VLANIF上应用inbound方向个人经验是inbound方向比outbound方向更直观便于排查。5.3 安全加固建议配置VLAN不等于安全隔离。华为S5700上有些安全特性建议开启关闭不必要端口的协商能力将下联PC的端口设为Access并关闭未使用端口防止非法设备接入。开启DHCP Snooping防止私建DHCP服务器下发错误网关和IP。命令是dhcp snooping enable系统视图然后在VLAN下执行dhcp snooping enable。开启IP Source Guard防止用户伪造IP。但要注意开启前必须确保DHCP Snooping正常工作否则所有未绑定地址的终端都会断网。S5700的安全配置还有一个容易被忽视的点VLANIF接口上默认开启了本地ARP代理吗没有默认关闭。在某些特殊组网下比如同一VLAN内客户端处于不同子网需要开启ARP代理才能互通。但这属于高级选项普通场景不用动保持默认关闭更安全。6. 最后想说的经验做网络配置这行最怕的不是设备坏了而是配置看着没问题但就是不通。S5700这台机器本身非常稳定问题基本出在人对VLAN机制的理解上。我总结了几条实用经验配置之前先画拓扑图把VLAN划分、网段规划、VLANIF地址、Trunk链路全部标出来再上设备敲命令。VLANIF接口Up的前提是VLAN内存在活跃物理端口这决定了你的排查顺序。Trunk口两端PVID必须一致否则各种疑难杂症都会冒出来。排障时多用display命令display vlan、display port trunk、display interface Vlanif、display arp这几条命令够解决90%的问题。遇到VLAN间无法互通的时候别急着一遍遍重配静下心按从物理层到应用层的顺序排查。大多数情况下问题就藏在不起眼的细节里可能是Trunk口漏放了一个VLAN也可能是VLANIF接口因为底层端口down而处于down状态。希望这篇关于华为S5700三层交换机VLAN配置的避坑文章能帮你少走一些弯路。网络这块的知识很多都是从实际故障中积累的踩过坑、排过障才算真正掌握。