ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

三层交换机与VLANIF配置实战:从原理到eNSP实验

三层交换机与VLANIF配置实战:从原理到eNSP实验 1. 三层交换机和VLANIF到底在解决什么问题1.1 二层交换机为什么管不了跨网段通信很多人第一次做综合实验时都会卡在同一个地方一台交换机下挂了几十个PC业务方要求财务部、技术部、行政部之间互相隔离又不能完全断联——毕竟要访问公司内部服务器。于是大家把不同的部门划到不同的VLAN里想着VLAN天然隔离广播域网络安全问题解决了。可紧接着问题就来了VLAN 10的主机ping不通VLAN 20的主机。这不是配错了而是二层交换机本来就不会做跨网段转发。二层交换机的核心工作是基于MAC地址表转发帧它眼里只有MAC地址和端口根本看不懂IP报文里的目的地址属于哪个网段。当PC1VLAN 10要给PC2VLAN 20发包时发现目的IP和自己不在同一网段它会把报文先发给自己的网关——也就是默认网关地址。而如果网关不在当前交换机上或者网关地址根本没有一个设备在响应这个包就永远送不出去。所以答案很明确不同网段要通信中间必须有一个具备路由能力的设备。这就是三层交换机存在的意义。eNSP里最常见的场景就是S5700系列交换机它既能像普通二层交换机一样划分VLAN又能像路由器一样在三层接口之间做路由转发。配好VLANIF接口以后一个网段一个网关各VLAN之间就能互通了。1.2 VLANIF这个名字到底是什么意思VLANIF拆开看就是VLAN加上Interface翻译过来是“VLAN的三层虚拟接口”。它是一个逻辑接口不属于任何物理端口而是绑定在某一个VLAN上。你给它配一个IP地址这个地址就等于该VLAN内所有主机的网关。为什么需要这样一个虚拟接口因为VLAN本身是二层概念它只负责把广播域隔开但它不能拥有IP地址。可路由判断需要IP所以华为在设计交换机时做了一个很巧妙的处理为每个需要互通的VLAN创建对应的三层接口让这个接口承担该网段的网关职责。这个接口就是VLANIF。举个例子你创建了VLAN 10接着执行interface vlanif 10进入这个逻辑接口然后配ip address 192.168.10.254 24。这时VLAN 10内的所有PC网关填192.168.10.254交换机就会从VLANIF 10收到它们的跨网段报文然后查路由表从VLANIF 20转发出去。整个过程对用户完全透明看起来就像一台路由器在使用多个子接口。1.3 三层交换机对比单臂路由为什么更推荐前者老教材里实现VLAN间路由的方案通常是单臂路由一台路由器一个物理口分成多个子接口每个子接口绑定一个VLAN并配一个网关地址。这个方案看起来很优雅eNSP里也能跑通但现实里用它的人越来越少了。原因很直接路由器转发性能有限而且配置和维护烦琐。每个子接口都要配dot1q termination vid接口要开ARP广播还要在物理口上做VLAN封装。一旦VLAN数量多配置量成倍增加。三层交换机不一样它的交换芯片本身就支持基于硬件的三层转发转发吞吐量和延迟表现远好于路由器软转发。现在园区网汇聚层基本都是三层交换机做主网关路由器只在边界或总部互联时才用。在eNSP里做实验我个人建议从S5700入手。它不仅支持VLANIF还能配DHCP、ACL、静态路由一个设备能模拟出完整园区网的大部分功能。你已经用路由器和二层交换机做过一次单臂路由实验后换成三层交换机再做一次感受会非常明显——命令少了一大半排错也轻松很多。2. 实验环境准备eNSP装好、设备不报错才是真的快2.1 eNSP安装和版本选择三层交换机配置本身不难难的是eNSP环境一天到晚出问题。启动设备报错40、AR1启动失败、设备卡在灰色状态这些我在教学中见过太多次了基本都是环境问题。先说版本选择。eNSP官方版本常用的是eNSP V100R003C00SPC100和V100R003C00SPC100T一般用户用前者就够了。现在很多人下载到的是别人网盘里二次封装的版本新手最容易踩坑的是安装路径不能包含中文目录名不要带空格。安装时右键“以管理员身份运行”否则装到一半可能提示组件注册失败。eNSP底层依赖VirtualBox早期的eNSP版本自带VirtualBox 4.2.24后面有些版本需要手动装。如果你电脑上的VirtualBox版本和eNSP不匹配最常见的后果就是设备启动失败、一直停在启动状态。我建议按顺序装先装VirtualBox再装eNSP最后把WinPcap或Wireshark相关组件一块装上。启动eNSP时也尽量以管理员身份启动防火墙和杀毒软件里的网络防护项能关就先关掉VirtualBox进程被拦截也可能导致设备起不来。eNSP Pro是另一个独立产品WEB界面实验功能更丰富但对电脑配置要求高而且离线版的安装包比较大新手不建议一上来就折腾它。练三层交换和VLANIF标准版eNSP完全够用。2.2 设备选型S5700为什么要选普通交换机而不是所有型号eNSP设备列表里有S3700、S5700、S6700等交换机三层功能和命令有细微差别。我一般选S5700因为它对VLANIF、DHCP、ACL、链路聚合等功能的支持都比较完整而且模拟器里性能占用也合理。有一点容易被忽略不是所有交换机的接口都默认支持三层。S5700上比如GigabitEthernet0/0/1这类普通接入端口默认是二层口你直接在这个接口上配IP地址会报错。步骤是先undo portswitch把端口切换成三层口再配置IP。不过做VLANIF网关的时候不需要切换端口因为VLANIF本身就是逻辑三层口。只有在用物理接口做路由口、比如三层交换机之间直连互联地址时才需要undo portswitch。拓扑选择上做基础实验用一台S5700加两台PC就够。做进阶实验可以加一台AR2220路由器模拟出口再加一台S5700模拟二层接入。不建议一开始就搭一堆设备eNSP对资源占用很敏感拓扑越大启动越慢排错越难。2.3 启动失败40先把这个坑给填平了搜索热词里频繁出现“ensp启动设备ar1失败40”这基本是每个eNSP新手的必经之痛。我见过太多人以为是自己配置问题结果查了半天发现设备根本起不来。报错40的本质是eNSP调用VirtualBox创建虚拟机的过程中出了问题。排查顺序我总结成以下几步第一步确认VirtualBox版本。高版本VirtualBox比如6.0以上和旧版eNSP经常不兼容。解决办法是卸载新版本安装eNSP自带的VirtualBox版本或者找对应分支的兼容版本。第二步清理残留。之前安装过eNSP又卸载不干净的注册表和驱动里可能残留WinPcap、npcap、VirtualBox Host-Only Network等组件。先用控制面板卸载再用工具清理注册表最后重启电脑。第三步检查Hyper-V。Win10/Win11上开着Hyper-V或内核隔离功能VirtualBox里的虚拟机和Hyper-V会冲突设备启动很可能失败。如果你平时不用Hyper-V关掉它能解决很多莫名其妙的问题。第四步确认启动顺序。先把防火墙和杀毒软件退出再以管理员身份打开eNSP创建拓扑后选中设备右键启动。如果还是报40把VirtualBox里对应的虚拟机手动删除回到eNSP重新启动设备。环境没问题之后配置学习才有意义。下面进入正题我用一台S5700和两台PC演示最经典的VLANIF配置再从交叉验证的角度把这个实验做完整。3. VLANIF配置全流程实操从拓扑搭建到全网互通3.1 先把组网规划写清楚再动手实验目标可以定义为交换机上创建VLAN 10和VLAN 20两台PC分别接入VLAN 10和VLAN 20PC1能ping通PC2也就是VLAN间可以互通。实际应用中这对应“一个交换机同时服务两个业务部门部门间需要互访”。规划一张表对象所属VLANIP地址网关PC110192.168.10.1/24192.168.10.254PC220192.168.20.1/24192.168.20.254SW1 VLANIF 1010192.168.10.254/24无SW1 VLANIF 2020192.168.20.254/24无eNSP里的PC需要手动填IP和网关。双击PC图标选择“IPv4配置”禁用DHCP后手动写入地址掩码和网关。这一步新手最容易漏PC没填网关的话跨网段ping是必然不通的。交换机的接口规划GE0/0/1接PC1划入VLAN 10GE0/0/2接PC2划入VLAN 20。有人可能会问为什么不把PC1也接成trunk口然后带tag因为PC网卡默认不识别802.1Q标签接入设备到PC的口必须是access口交换机剥掉tag后发帧给PC。这和交换机之间的链路完全不一样别搞混了。3.2 创建VLAN并配置VLANIF核心就5条命令进入交换机的命令行依次执行以下配置system-view sysname SW1 vlan batch 10 20 interface vlanif 10 ip address 192.168.10.254 255.255.255.0 quit interface vlanif 20 ip address 192.168.20.254 255.255.255.0 quit解释一下每条命令的作用。system-view进入系统视图所有全局配置都在这个视图下做。sysname SW1给设备起名方便多台设备时区分命令行前缀。vlan batch 10 20是一次性创建多个VLAN的简写命令比逐个vlan 10、vlan 20更高效。interface vlanif 10创建并进入VLANIF 10接口如果VLAN 10不存在这条命令会报错所以顺序上必须先创建VLAN再进VLANIF。配置完以后可以用display ip interface brief查看所有三层接口状态。正常情况下应该看到VLANIF 10和VLANIF 20的IP地址、物理状态和协议状态都是up。一个容易忽略的细节VLANIF接口的IP地址必须要和该VLAN内PC的网关一致否则PC发出的报文目的IP不是本机交换机也不会收。整个VLAN间互访的基础就是这个网关的一致性。3.3 接口放行VLANtrunk和access到底怎么分VLANIF只解决“三层网关”的问题PC的帧要进入交换机并带上正确的VLAN标签还得靠物理接口的VLAN放行配置来完成。这一步做错VLANIF配得再漂亮也白搭。接口类型分三类access口、trunk口、hybrid口。华为交换机默认是hybrid但为了方便理解绝大多数实验里都是手动改造成access或trunk。PC接入端口用access口它只属于一个VLAN收到不带标签的帧会打上PVID对应的VLAN标签转发给PC时会把VLAN标签剥掉所以PC完全感知不到VLAN的存在。配置命令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交换机之间的链路用trunk口它允许携带多个VLAN标签的帧通过通过port trunk allow-pass vlan命令指定放行哪些VLAN。如果两台交换机之间希望VLAN 10和VLAN 20都能透传配置如下interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 quit很多人的问题出在只配了allow-pass却忘了PVID。trunk口的PVID默认是VLAN 1如果不放行VLAN 1默认情况下标签为VLAN 1的帧无法通过。但实际实验里我们很少需要在trunk上跑VLAN 1的流量所以这个坑不太明显。更常见的坑是只allow-pass vlan 10忘掉vlan 20导致VLAN 20的帧被丢弃。3.4 验证连通性ping不通时怎么定位问题配置完成后先在PC1的命令行窗口ping PC2。打开PC1输入ping 192.168.20.1如果通了说明VLANIF和VLAN放行都正常。如果不通分两步排查。第一步在交换机上ping PC的网关看VLANIF接口本身是否正常ping 192.168.10.1 ping 192.168.20.1如果交换机ping不通PC问题出在接口放行或PC配置上。检查PC的IP地址、掩码、网关是否正确检查access口的VLAN划分是否正确。第二步在PC1上ping网关192.168.10.254。能通说明PC到交换机这条链路没问题。再ping PC2的网关192.168.20.254能通说明交换机三层转发没问题。最后ping PC2完整地址不通的话才可能是PC2侧的问题。我一直很推荐这种“分段ping”的排错方式它能把问题收敛到某一跳而不是对着整个网络瞎猜。VLANIF实验里90%的“ping不通”最后定位下来要么是PC没填网关要么是access口VLAN划错真正交换机配置出错的反而少见。4. 跨设备场景当你需要两台三层交换机配合时4.1 一台交换机不够用设备间链路怎么规划很多学校的综合实验都会布置这样的题目有两台S5700SW1下挂VLAN 10和VLAN 20的PCSW2下挂VLAN 30的PC要求三个VLAN全部互通。这时就涉及跨设备的三层路由。先明确一点SW1上需要配置VLANIF 10和VLANIF 20作为VLAN 10和VLAN 20的网关。VLAN 30的PC接在SW2上网关能不能也配在SW1上不行因为SW2只负责二层转发VLAN 30的PC发的报文要到网关必须经过SW1。要让SW2转发跨设备报文SW2上也得配置VLANIF 30作为该网段网关然后SW1和SW2之间通过三层路由互通。所以两种思路一种是把SW1当汇聚层网关SW2当接入层SW2上配VLANIF 30但和SW1之间跑trunkVLAN 30的流量以二层方式送到SW1由SW1统一路由。另一种是SW2也做三层网关两台交换机之间用三层互联地址跑路由。选哪种取决于项目规模和安全要求小实验用第一种更简单。4.2 在SW2上配置VLANIF 30并打通链路假设SW2下联PC3属于VLAN 30SW2和SW1之间的物理口用GE0/0/24互连这条链路走trunk并放行VLAN 30。SW2的配置要点system-view vlan 30 interface vlanif 30 ip address 192.168.30.254 255.255.255.0 quit interface GigabitEthernet0/0/1 port link-type access port default vlan 30 quit interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 30 quitSW1侧GE0/0/24也要配置trunk放行VLAN 30否则VLAN 30的帧过不了中间链路。SW1上VLANIF 10和VLANIF 20的配置和之前一样。此时PC1VLAN 10访问PC3VLAN 30的路径是PC1先发给网关192.168.10.254SW1查路由表发现192.168.30.0/24的下一跳是VLAN 30的网关地址192.168.30.254而且VLANIF 30接口在SW1上也是up的SW1就会直接把报文转发给SW2并交付给PC3。因此SW1上需要确认VLANIF 30存在且IP地址和SW2的VLANIF 30一致。如果SW1上配置了VLANIF 30它会在路由表中生成一条直连路由指向192.168.30.0/24网络。没有这条直连路由SW1就无法转发到VLAN 30网段。4.3 一个特别容易被忽略的细节网关要全局唯一跨设备场景最容易犯的错是给同一个VLAN在SW1和SW2上配了不同的VLANIF IP或者更隐蔽地在两个设备上都配了同一个VLAN的网关地址。比如SW1上VLANIF 30的IP是192.168.30.2SW2上VLANIF 30的IP是192.168.30.254PC3的网关填写192.168.30.254。这样流量先到SW2SW2的VLANIF 30地址是192.168.30.254它认为这个报文是发给自己的但目的IP又不是自己于是尝试做转发可它并不一定是通往192.168.10.0/24的最佳路径结果就是通不通全靠运气。我在实验里总是强调一个VLAN一个网关全局唯一。不管物理链路多复杂PC的网关永远指向那个在所有设备上语义一致的逻辑地址。跨设备做VLAN间路由时通常把网关放在汇聚层那台设备上接入层只负责二层透传。5. 进阶玩法VLANIF DHCP让主机自动获取地址5.1 在交换机上开启DHCP服务很多实际项目里PC主机数量多不可能一台台手动填网关和IP。常见做法是在三层交换机上直接开DHCP服务VLANIF接口作为网关和DHCP服务器把地址自动分发给终端。华为交换机开DHCP的流程分两步。第一步全局开启DHCP功能第二步为每个VLANIF接口配置地址池或引用全局地址池。完整配置如下system-view dhcp enable ip pool vlan10 network 192.168.10.0 mask 255.255.255.0 gateway-list 192.168.10.254 dns-list 114.114.114.114 8.8.8.8 lease day 1 hour 0 minute 0 quit ip pool vlan20 network 192.168.20.0 mask 255.255.255.0 gateway-list 192.168.20.254 dns-list 114.114.114.114 quit interface vlanif 10 dhcp select global quit interface vlanif 20 dhcp select global quitip pool vlan10创建一个全局地址池名字随意但建议和业务相关。network指定分配给客户端的网段gateway-list就是VLANIF接口的IP地址必须一致否则PC拿到地址后找不到网关。dns-list按实际填实验室里填一个公网DNS地址也行。lease配置租期默认一天。5.2 接口地址池和全局地址池怎么选华为交换机还有另一种配置方式叫接口地址池直接在VLANIF接口下用dhcp select interface开启系统自动把该VLANIF接口的IP地址作为网关把接口所在网段作为分配网段。优点是配置量小缺点是灵活性差没法精细化控制。interface vlanif 10 dhcp select interface dhcp server dns-list 114.114.114.114 quit全局地址池则可以在同一台设备上给多个网段分配不同范围的地址配合excluded-ip-address排除特殊地址段。比如ip pool vlan10 network 192.168.10.0 mask 255.255.255.0 excluded-ip-address 192.168.10.1 192.168.10.10 gateway-list 192.168.10.254这条排除命令会把192.168.10.1到192.168.10.10这段保留出来不分配给终端服务器、打印机这类需要固定IP的设备可以安心使用。5.3 DHCP服务与VLANIF联动的坑我在这里专门说几个真实环境中踩过的坑。第一个坑是忘开全局dhcp enable。很多人在VLANIF接口下敲了dhcp select global就以为配置完成结果PC一直获取不到地址查了半天才发现全局开关没开。第二个坑是PC端设置问题。eNSP里的PC默认是DHCP自动获取方式但如果你之前手动填过IPPC会一直使用静态地址必须在PC的IPv4配置里重新选中“DHCP”。这个设置很多人疏忽明明交换机配置是对的PC就是不拿地址。第三个坑是地址池名称冲突。华为设备的地址池名字在全局唯一如果两台交换机上用了同一个地址池名导入配置或合并实验时会出现各种莫名错误。第四个坑是地址池网段必须和VLANIF接口IP在同一网段。全局地址池工作原理是交换机收到DHCP请求后根据接收请求的VLANIF接口来判断所在网段去对应网段的地址池里分配地址。如果VLANIF 10接口的IP是192.168.10.254而地址池网络写成192.168.20.0分配必然失败。6. 踩坑实录eNSP三层交换配置常见问题排查指南6.1 问题速查表这里整理一张排查表工作时可以直接对照。现象可能原因排查/解决动作设备启动失败报错40VirtualBox版本不兼容/Hyper-V冲突更换兼容版本VirtualBox关闭Hyper-V清理注册表后重装PC获取不到IP地址全局dhcp enable没开/地址池网段与接口IP不一致确认dhcp enable检查地址池network与VLANIF IP同网段VLAN内PC能互访跨VLAN不通VLANIF接口没配/网关不一致/主机没填网关display ip interface brief查看三层接口逐段ping定位access口接的PC不通access口VLAN划错/PVID不对/网线位置插错display vlan查看端口所属VLAN检查接口状态是否uptrunk链路后VLAN不通allow-pass列表漏了VLAN/PVID冲突display port vlan查看trunk放行状态交换机ping不通远端VLAN路由缺失/对端VLANIF接口down检查直连路由display current-configuration看接口激活状态配置命令敲不进去视图不对/设备型号不支持确认是否已在system-view或对应接口视图S3700对VLANIF支持有限6.2 我在新手身上见过最多的三个错误第一个是设备已经开始运行了但命令行一直敲不进去因为忘了进系统视图。比如在SW1用户视图下直接敲vlan batch 10 20系统会提示错误。必须先输入system-view进入系统视图才能配置VLAN和接口。第二个是VLANIF接口的IP地址和PC的网关对不上。我在第一章就强调过网关一致性但实操中每次都会有人的网关填192.168.10.1、VLANIF配成192.168.10.254。PC报文发给网关192.168.10.1交换机根本不管这个IP报文就被丢弃了。第三个是不同VLAN的PC在同一个接口下面。比如两台PC都插在交换机的GE0/0/1口上然后期望一台在VLAN 10、一台在VLAN 20这不可能。一个access口只能属于一个VLAN一个物理口下接的所有终端属于同一广播域。做VLAN划分实验时接口规划一定要在拓扑搭建阶段就想明白。6.3 从排错角度重新理解VLANIF最后说点我个人的理解。VLANIF配置本身不难难的是脑子里有没有一张清晰的数据流图。PC1跨VLAN访问PC2涉及的环节至少有四个PC1把报文交给网关、交换机查路由表、交换机构造新二层头从VLANIF 20发出、PC2响应。每个环节对应一个配置对象PC的IP/网关、VLANIF接口的三层路由、VLANIF所属VLAN的接口放行、PC2侧的接口配置。所以排错的时候不用慌按这条链路一层层往下查。先用分段ping确认到哪一段断掉再用display ip interface brief确认三层接口状态用display vlan确认物理口的VLAN归属用display arp确认交换机是否能学到PC的ARP表项。大部分问题都会在这几步里现出原形。另外说个小细节eNSP里配置完如果长时间不保存设备关闭后所有配置都会丢失。实验做完记得在所有需要保存的设备上执行save按提示确认文件名后回车。多台设备逐台保存别看漏了。最后补一点个人经验做网络实验这么多年我的体会是三层交换机和VLANIF的组合是所有园区网实验的地基它比OSPF、BGP这些协议更值得反复练习。因为这个实验覆盖的知识点非常密集——VLAN划分、接口类型、三层接口、路由查找、ARP、DHCP任何一个概念模糊都会导致最终ping不通。每多做一次你对数据转发路径的感知就更清晰一些。建议把文章里的拓扑换成自己的地址段从一台交换机的VLANIF开始逐步扩展到跨设备、加DHCP、再往上接路由器做出口这一套练熟后做毕业设计里的校园网、企业网项目基本都不虚。
返回列表