前阵子帮朋友调一个办公区的网络三层交换机上VLAN建了一堆终端却跨网段怎么也ping不通排查到最后发现是VLANIF接口地址没配好。其实很多人对VLANIF也就是SVI思科那边的叫法的理解停留在“给VLAN配个IP”真要落到项目里从接入层、汇聚层到核心层怎么放、怎么配、怎么排错水很深。这篇文章想把三层交换机的虚拟路由接口这件事一次讲透内容以华为设备为主兼顾ensp模拟器实操最后也会提一嘴思科命令的对应关系。适合刚接触三层交换的网工也适合那些配过VLANIF但没真正理解它的人。1. VLANIF/SVI是什么为什么比“路由器交换机”更有性价比1.1 一个“门卫”的理解方式先打个比方。一个园区里有很多栋楼每栋楼就是一个VLAN楼里的人平时不出门二层交换机负责楼内通信。但A楼的人要去B楼找人就得走到园区大门出了楼再进另一栋楼——这个大门就是VLAN间路由。传统做法是“核心交换机 一台路由器”交换机负责二层转发路由器负责跨VLAN路由。缺点是设备多、链路浪费、配置复杂而且路由器端口少接口成本高。三层交换机把路由功能做进了交换芯片直接在交换机上创建虚拟路由接口这就是SVISwitch Virtual Interface华为平台叫VLANIF。VLANIF本质上是一个逻辑三层接口它不属于某个物理端口而是对应整个VLAN。你给它配一个IP地址这个VLAN里的终端就把这个IP当网关用。交换机收到跨VLAN的报文后在内部完成路由转发不需要外接路由器。1.2 三层转发到底怎么走这里要理清一个关键点VLANIF接口的状态依赖二三层联动。配置了VLANIF之后交换机会为这个VLAN生成一个虚拟MAC地址华为叫系统MAC通常每个VLANIF共用或单独分配。终端发往网关的报文目标MAC就是VLANIF的MAC。交换机收到之后发现目标MAC是自己于是上送CPU或转交给路由引擎查路由表发现目标网段对应另一个VLANIF于是把报文重新封装成目标VLAN的二层帧从对应成员口转发出去。“一次路由多次交换”说的就是这个过程。同一对终端之间持续通信时第一条报文走完整路由流程后续报文直接由硬件转发表项快速转发这也是三层交换机比“路由器二层交换机”性能高的原因。注意VLANIF不是凭空就能起来的。它依赖两个条件VLAN必须存在且该VLAN至少有一个物理成员口处于up状态。否则VLANIF会显示down即使你配置了IP地址也不生效。2. 实战之前接入层、汇聚层、核心层的VLANIF规划思路2.1 三层架构里VLANIF应该放在哪一层很多新手拿到网络拓扑第一反应是“每一层交换机都配VLANIF”。这是错的。VLANIF放哪一层取决于你要让哪一层做“网关终结”。先看最常见的三层层级架构接入层连接终端负责端口接入和VLAN划分。正常情况下接入层不需要为业务VLAN配VLANIF它只需要把VLAN通过Trunk口送上去。唯一例外是管理VLAN——为了方便远程管理接入交换机会单独划一个管理VLAN并配一个管理VLANIF地址。汇聚层通常是业务VLAN的网关所在层。终端PC、WiFi、摄像头的默认网关都指向汇聚层交换机的VLANIF地址。汇聚层向上与核心层跑路由协议或静态路由。核心层负责全网高速路由转发一般不做网关终结。核心层上可以配VLANIF用于核心设备间互联和路由交换但不建议把大量终端业务网关都放在核心层否则所有跨VLAN流量都要绕到核心压力大、排错也麻烦。小型网络一台交换机搞定一切例外核心即汇聚业务网关直接放在这台唯一的交换机上这也是家用级三层交换机最常见的使用方式。2.2 网段规划与网关设计VLANIF的IP地址规划有个约定俗成的习惯网段的第一个可用地址做网关。比如VLAN 10的网段是192.168.10.0/24VLANIF就配192.168.10.1/24终端网关填192.168.10.1。实际项目中我会额外注意几个点管理VLAN单独划一段不要跟业务VLAN混在一个段里。比如VLAN 99用来做设备管理网段192.168.99.0/24区域里所有交换机、AP的管理IP都在这个段方便远程维护。每段预留少量地址给网络设备本身避免DHCP地址池把整个网段占满后期做静态路由、ACL、DHCP排除地址时会被动。VLANIF地址要稳定一旦上线别随意改。改一个网关意味着所有终端默认网关、DHCP下发、路由协议、ACL策略全都要跟着改牵一发动全身。2.3 一个典型项目里的VLANIF表以一个中型办公区为例规划大概长这样业务VLAN网段网关VLANIF地址网关放置位置办公有线VLAN 10192.168.10.0/24192.168.10.1汇聚交换机访客WiFiVLAN 20192.168.20.0/24192.168.20.1汇聚交换机监控摄像头VLAN 30192.168.30.0/24192.168.30.1汇聚交换机服务器区VLAN 40192.168.40.0/24192.168.40.1核心交换机设备管理VLAN 99192.168.99.0/24192.168.99.1核心交换机这样设计的好处是办公、访客、监控之间天然隔离要互通就靠汇聚层的路由策略和ACL控制。服务器区放核心是因为服务器通常需要高速访问核心转发压力可控。管理网段放核心所有设备都能通过核心中转访问管理路径最短。3. 华为VLANIF配置实战从零打通VLAN间路由3.1 实验拓扑与VLAN规划下面进入正题。我用ensp模拟器搭一个最简单的三层交换环境拓扑逻辑如下一台核心交换机华为S5700系列模拟型号两台接入交换机S3700只做二层PC1在VLAN 10PC2在VLAN 20网络规模和实际项目比缩水很多但核心配置逻辑完全一致。规划如下设备VLANVLANIF地址说明核心交换机VLAN 10 / VLAN 20192.168.10.1/24 / 192.168.20.1/24业务网关接入交换机AVLAN 10无纯二层接入上联Trunk接入交换机BVLAN 20无纯二层接入上联TrunkPC1VLAN 10192.168.10.10/24网关192.168.10.1PC2VLAN 20192.168.20.10/24网关192.168.20.13.2 核心交换机配置VLANIF重点核心交换机上要完成VLAN创建、物理口放行和VLANIF配置三件事。# 创建VLAN Huawei system-view [Huawei] sysname Core-SW [Core-SW] vlan batch 10 20 # 与接入交换机互联的物理口配置成Trunk [Core-SW] interface GigabitEthernet0/0/1 [Core-SW-GigabitEthernet0/0/1] port link-type trunk [Core-SW-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 20 [Core-SW-GigabitEthernet0/0/1] quit [Core-SW] interface GigabitEthernet0/0/2 [Core-SW-GigabitEthernet0/0/2] port link-type trunk [Core-SW-GigabitEthernet0/0/2] port trunk allow-pass vlan 10 20 [Core-SW-GigabitEthernet0/0/2] quit # 配置VLANIF即虚拟路由接口 [Core-SW] interface Vlanif10 [Core-SW-Vlanif10] ip address 192.168.10.1 255.255.255.0 [Core-SW-Vlanif10] quit [Core-SW] interface Vlanif20 [Core-SW-Vlanif20] ip address 192.168.20.1 255.255.255.0 [Core-SW-Vlanif20] quit到这里核心交换机就有了两个三层接口分别对应VLAN 10和VLAN 20。路由表会自动生成两条直连路由[Core-SW] display ip routing-table能看到192.168.10.0/24和192.168.20.0/24都是Direct直连路由。这是三层交换机能实现VLAN间通信的根本原因——路由表里有目标网段的路由。3.3 接入层交换机的配套配置接入交换机不配业务VLANIF但要把VLAN从接入端口到上联Trunk口完整打通。Huawei system-view [Huawei] sysname Access-SW-A [Access-SW-A] vlan batch 10 # PC接入端口 [Access-SW-A] interface GigabitEthernet0/0/1 [Access-SW-A-GigabitEthernet0/0/1] port link-type access [Access-SW-A-GigabitEthernet0/0/1] port default vlan 10 [Access-SW-A-GigabitEthernet0/0/1] quit # 上联核心的端口 [Access-SW-A] interface GigabitEthernet0/0/24 [Access-SW-A-GigabitEthernet0/0/24] port link-type trunk [Access-SW-A-GigabitEthernet0/0/24] port trunk allow-pass vlan 10接入交换机B同理把VLAN 20的接入端口和Trunk上联配上。核心提示华为交换机Trunk口默认只放行VLAN 1其他VLAN必须手动允许少了port trunk allow-pass vlan这一句VLANIF配置得再对流量也过不来。这是新手最容易忽略的坑。3.4 验证VLAN间通信PC1终端配好IP后用ping命令验证PC ping 192.168.20.10能通说明核心交换机的VLANIF已经正确承担了网关的角色。此时在核心交换机上查看ARP表[Core-SW] display arp能看到192.168.10.10和192.168.20.10的ARP表项VLAN和接口信息都有。这就是VLANIF转发的基础——先有ARP解析再有路由转发。3.5 汇聚层交换机上的VLANIF中大型网络的关键差异如果网络规模上来了网关要放在汇聚层配置思路会有变化。汇聚层交换机的VLANIF地址通常用网段的第一个或最后几个可用地址取决于你预留的规划。比如VLAN 10这段核心层会配一个地址用于路由互联汇聚层也配一个VLANIF地址作为终端网关。终端网关指向汇聚层汇聚层向上跟核心层跑OSPF或静态路由把终端网段通告到核心。核心层再配一个互联VLANIF比如VLAN 100网段192.168.100.0/30与汇聚层相连。# 汇聚交换机示例网关终结在这台设备上 [Huawei] interface Vlanif10 [Huawei-Vlanif10] ip address 192.168.10.1 255.255.255.0 # 与核心互联的VLANIF [Huawei] vlan batch 100 [Huawei] interface Vlanif100 [Huawei-Vlanif100] ip address 192.168.100.2 255.255.255.252 # 静态路由示例把其他网段指向上联核心 [Huawei] ip route-static 0.0.0.0 0.0.0.0 192.168.100.1这样设计的好处是故障域被限制在汇聚层以内。某个汇聚交换机出问题只影响它下面挂的终端核心层不会被过多消耗。4. 别忘了这些配套端口安全、登录认证与DHCP中继4.1 三层交换机上的端口安全配置热词里有“ensp三层交换机开启端口安全”我顺便说一嘴。端口安全通常是在接入交换机上做但三层交换机如果接了终端比如核心兼汇聚的小型场景也可以开。端口安全的核心作用是限制端口允许学习的MAC地址数量防止有人乱接设备蹭网。# 接PC的端口只允许1个MAC学习并绑定粘滞MAC [Core-SW] interface GigabitEthernet0/0/10 [Core-SW-GigabitEthernet0/0/10] port-security enable [Core-SW-GigabitEthernet0/0/10] port-security max-mac-num 1 [Core-SW-GigabitEthernet0/0/10] port-security mac-address sticky [Core-SW-GigabitEthernet0/0/10] port-security protect-action restrictprotect-action restrict表示超过数量后丢弃报文并告警不建议用shutdown否则某次误插设备会导致端口直接errordown恢复麻烦。注意ensp模拟器的端口安全功能有的版本支持不完整配置后效果不一定和真实设备完全一样。真实设备上开端口安全前要确认终端MAC地址不会频繁变化否则一个个手动清MAC会搞得你怀疑人生。4.2 三层交换机的登录认证方式VLANIF配好之后怎么远程管理这些三层交换设备这才是登录认证问题的由来。华为三层交换机常见的登录认证方式有四种认证方式适用场景安全级别说明Console密码认证本地调试、首次部署低串口登录密码明文或密文Telnet认证内网调试低明文传输不建议跨公网SSHSTelnet认证远程管理首选高加密传输生产环境标配AAA本地用户认证中大型网络集中管理高可以对接RADIUS、TACACS生产环境一般用SSH AAA本地用户。配法也不复杂# VTY界面开启SSH登录 [Core-SW] user-interface vty 0 4 [Core-SW-ui-vty0-4] authentication-mode aaa [Core-SW-ui-vty0-4] protocol inbound ssh [Core-SW-ui-vty0-4] quit # 创建AAA本地用户 [Core-SW] aaa [Core-SW-aaa] local-user admin password cipher Admin123 [Core-SW-aaa] local-user admin service-type ssh [Core-SW-aaa] local-user admin privilege level 15 [Core-SW-aaa] quit # 开启SSH服务并生成密钥 [Core-SW] stelnet server enable [Core-SW] rsa local-key-pair create这样配置完就能用SecureCRT、Xshell等工具SSH登录交换机了。如果是Telnet只要把protocol inbound改成all或telnet但同时也要把authentication-mode配成aaa或password否则登录会报错。4.3 DHCP与DHCP中继让VLANIF真正“活”起来VLANIF作为网关之后最实用的配套就是DHCP。终端从DHCP服务器拿IP默认网关就是VLANIF的地址。华为设备上最省事的方式是核心交换机直接做DHCP Server[Core-SW] dhcp enable [Core-SW] ip pool vlan10 [Core-SW-ip-pool-vlan10] network 192.168.10.0 mask 255.255.255.0 [Core-SW-ip-pool-vlan10] gateway-list 192.168.10.1 [Core-SW-ip-pool-vlan10] dns-list 114.114.114.114 [Core-SW-ip-pool-vlan10] quit [Core-SW] interface Vlanif10 [Core-SW-Vlanif10] dhcp select global这里的核心逻辑是VLANIF10接口的地址和地址池的network必须在同一网段DHCP请求才能被正确分配地址。如果是多网段就得多建几个地址池然后把对应VLANIF的dhcp select global都配上。DHCP中继是另一种场景。DHCP服务器不在终端所在网段比如服务器放在VLAN 40而VLAN 10的终端要拿地址这时候VLANIF10就要开启中继功能把DHCP广播报文转成单播发给服务器[Core-SW] interface Vlanif10 [Core-SW-Vlanif10] dhcp select relay [Core-SW-Vlanif10] dhcp relay server-ip 192.168.40.10 [Core-SW-Vlanif10] quitDHCP中继的本质是VLANIF代替终端跟远端DHCP服务器通信所以中继接口必须能路由到DHCP服务器。如果你的路由不通中继配了也白搭。思科的对应配置长这样风格略有不同但逻辑完全一致interface vlan 10 ip address 192.168.10.1 255.255.255.0 ip helper-address 192.168.40.10一条ip helper-address就搞定了DHCP中继所以很多老网工习惯说“思科配DHCP relay快”。命令能记住最好关键是理解中继到底帮你做了什么。5. 常见问题与故障排查实录那些我踩过的坑5.1 VLANIF显示down问题出在哪三层交换机上配了VLANIFdisplay ip interface brief一看接口状态是down/downIP地址配了但不起作用。出现这种情况最常见的原因有三个VLAN没有创建只配了interface Vlanif10但没有vlan batch 10VLANIF自然不生效。VLAN没有up的成员端口VLAN里一个端口都没加或者加的端口都是down状态。交换机不会为一个空VLAN创建三层接口这是VLANIF最典型的“假配置”问题。接口被shutdown手误关了VLANIF当然起不来。排查时先看VLAN成员状态[Core-SW] display vlan 10 [Core-SW] display interface Vlanif10重点看VLANIF里的“Line protocol current state”是不是up。不是up就回到VLAN成员口层面查。5.2 能ping通网关但跨VLAN通信失败这个现象很经典终端能ping通自己的网关VLANIF地址但ping不通另一个网段的终端。VLANIF配置看着没问题路由表也有直连路由问题往往出在以下环节Trunk放行没做全核心交换机Trunk口只放行了VLAN 10没放行VLAN 20另一头的设备根本收不到VLAN 20的帧。对端设备网关指向错误PC2的默认网关没指向VLAN 20的VLANIF地址或者填错了IP。ACL策略拦截很多项目会配基于VLANIF的ACL做访问控制特别是访客WiFi和办公网之间默认不想通。如果两头业务上确实该通优先检查ACL规则是不是把流量丢弃了。端口安全触发端口安全限制MAC数量后新终端MAC被丢弃表现为跨VLAN通信时通时不通。排查思路是先从终端ping网关通了再ping对端设备IP再ping对端网关逐段缩小范围。别一上来就怀疑交换机有问题网络排错最忌讳跳着查。5.3 DHCP获取不到地址终端一直停留在169.254.x.x终端拿不到IP回退到自动私有地址这在VLANIF DHCP场景下最常见。几个高发原因地址池和VLANIF不在同一网段这是初学者最容易犯的错。VLANIF配了192.168.10.1/24地址池network写的是192.168.20.0终端肯定拿不到正确地址。DHCP全局没开忘了dhcp enable后面全白配。dhcp select global没配到对应VLANIF地址池建了但VLANIF接口下没有调用等于没有绑定关系。中继地址指向错误配了relay但server-ip写成了不通的地址或者中继接口没有路由到DHCP服务器。排查时在交换机上看DHCP日志和地址池使用情况[Core-SW] display ip pool [Core-SW] display dhcp server statistics如果地址池的used数量一直是0说明DHCP协商报文压根没到服务器重点查中继和二层链路。5.4 ens p模拟器和真实设备的差异用ensp做实验时有几个点跟真实设备感受不一样ensp里新建交换机默认没有VLANIF必须手动创建VLAN和对应的VLANIF。ensp的Trunk口默认放行VLAN 1其他VLAN需要手动allow跟真机一致但很多人习惯性忽略这一步。ensp里端口安全功能支持有限如果在模拟器里配置后没效果不一定是配置错了可能是模拟器版本对该功能的支持不完整。ensp里配置SSH后SecureCRT连不上时先检查交换机的SSH服务是否真的开启stelnet server enable以及VTY里protocol inbound是否匹配。6. 写在最后一点个人经验VLANIF这东西看着就是“给VLAN配个IP”几个命令的事但在真实项目里规划比配置重要得多。我个人习惯是不管网络多大先把VLAN和网段规划表做出来再动手敲命令管理VLAN单独划、业务网关尽量放汇聚层、DHCP和ACL跟着VLANIF走。做过几个项目之后你会发现只要VLANIF的规划不乱后面排起错来会省很多力气。最后再分享一个小技巧每配完一个VLANIF立刻用display ip interface brief看一眼状态顺手把display arp的结果也存一份。很多问题在刚配置完的几分钟内就能发现真等业务上线再去查压力就完全不一样了。
