简介:面向ICT从业者、华为认证备考人员及网络技术学习者,这份eNSP使用与实验教程系统讲解华为企业网络仿真平台的功能、使用与实验操作。文档从基本界面与设备选型讲起,依次覆盖PC、客户端、服务器、MCS、STA、Mobile等终端配置,云设备、Hub、帧中继连接方式,交换机、AR路由器和WLAN中AC、AP的配置实验,配有拓扑示例与连通性测试方法,可帮助读者快速熟悉华为数通产品的操作、配置与排错思路。各专题结合组网示意图与验证命令,读者可边读边练,完成从基础连通到路由与交换、无线接入的常用实验。资源包共1个文件,为PDF文档,大小约1.14MB,目录结构清晰,便于按章节检索学习。已有1909人学习下载,适合希望系统提升企业ICT网络规划、建设与运维能力,以及备考华为认证的初学者和一线工程师。
1. eNSP到底是什么:为什么网络工程师的电脑里都装着它
eNSP(Enterprise Network Simulation Platform)是华为推出的企业网络仿真平台,它借着Windows上的一组虚拟设备,把真实VRP网络操作系统的命令行、接口、路由演进都搬进了个人电脑。凡是靠一份PDF就想把网络实验串起来的人,十有八九会卡在AR1启动失败40这一步。这也是我推荐先弄懂eNSP本身、再回头翻文档的原因——模拟器就是你学习、验证和复现的底座。
它能解决的是:没有真机也能完成VLAN交换、OSPF、BGP、防火墙策略等实验;备考HCIA/HCIP/HCIE、做校园网络毕业设计、在给客户出方案前先在自己的电脑上把拓扑跑一遍。适合网络方向的学生、刚入职的运维工程师,以及需要输出"可复现实验方案"的工程师。也提醒一句:eNSP经典版跑SRv6这类新特性基本拉不动,真要在里面验证Segment Routing,一般得靠新仿真平台或真机。
2. eNSP安装与环境准备:装得干净、启动不报错的关键
2.1 安装前检查:Win11兼容、依赖三件套与路径卫生
很多人在Win11上第一次装eNSP,双击安装包能弹窗,安装完却启动不了。常见原因不是安装包本身有问题,而是环境和路径的问题。先把三件事检查完再动手。
一是依赖三件套。eNSP本身不是一个孤立的模拟器,它要借助虚拟化软件来承载AR和USG设备,借助WinPcap/Npcap来提供PC到设备的报文通道。常见做法是:先装抓包库,再装虚拟化软件,最后装eNSP主程序。一旦装反或漏装,后面抓包、双机互联都可能出现"PC能启动但ping不通任何设备"的玄学问题。
二是路径卫生。安装目录、模拟器默认工程目录都别放中文和空格,最好也不要把eNSP工程放在OneDrive这种同步目录下。我们踩到过一个很典型的坑:用户名是中文,导致VirtualBox创建的虚拟网卡无法正常继承权限,AR启动直接失败40,重装一次也没救回来,最后新建了一个纯英文管理员账号才解决。
三是系统与软件冲突。杀毒软件的实时防护偶尔会把eNSP的进程当异常行为处理;开启Hyper-V的主机,虚拟化软件容易抢不到网卡资源。建议安装前先关闭实时防护,安装后再加白名单;有条件的话在BIOS里把Intel VT/AMD-V打开。
| 检查项 | 推荐状态 | 后果 |
|---|---|---|
| 操作系统 | Win10/Win11 64位,建议8G内存以上 | 内存不足时多开设备直接卡死 |
| 抓包库 | WinPcap或Npcap先装好 | 缺了它PC设备之间抓不到包 |
| 虚拟化软件 | 使用安装包自带的版本,不要乱升级 | 版本不匹配常见AR1启动40 |
| 安装路径 | 纯英文、无空格、非同步盘 | 中文路径引发虚拟网卡权限异常 |
| 管理员权限 | 右键以管理员身份运行 | 权限不足时设备虚拟化创建失败 |
2.2 安装步骤:装得干净,卸载不留后悔药
安装顺序我一般固定为:抓包库 → 虚拟化软件 → eNSP主程序。抓包库一路默认安装即可;虚拟化软件安装时要注意,它会在系统里创建一张虚拟网卡(通常叫VirtualBox Host-Only Ethernet Adapter),这张网卡是eNSP后续做PC和路由器桥接用的,禁止在安装后手动禁用。
eNSP主程序的安装向导里会询问是否注册右键菜单和关联工程文件,保持默认就好。真正容易忽略的是:安装向导结束时不要立刻打开eNSP,先重启一次系统。重启能让虚拟网卡和内核驱动完成注册,也能让依赖项彻底生效。
另外强烈建议在安装前建好固定的工程目录,例如 D:\ensp-lab,并在eNSP的"工具—选项—工程保存路径"里指过去。这样后续的拓扑、抓包文件和配置备份都集中在一个目录里,卸载时也方便检查哪些残留文件是不是你自己存的。
安装完成后不要急着堆设备。先做最小验证:新建空白工程,拖一台AR3266路由器到画布,右键启动。如果设备能走到命令行,再继续往上加交换机、防火墙。
提示:首次启动设备时如果弹窗提示找不到设备镜像(例如USG6000V),说明对应设备的系统镜像没有被正确注册,需要到eNSP安装目录下的设备包里去确认或重新导入镜像。
2.3 验证环境:用一条命令判断模拟器真的就绪
很多人启动AR1之后看到的就是黑窗口,误以为设备已经好了,其实那个窗口只是控制台。判断设备是否真正就绪,看的是能不能弹出 的用户视图提示符。
启动完成后,在设备控制台敲一条display version,能正常回显VRP版本号和相关硬件参数,说明这台设备活了。如果敲进去没反应,先等十几秒,AR设备的启动过程比较慢,特别是内存偏小的时候,命令行会像卡住一样,这不是设备死了,是还在加载进程。
再把PC和路由器串起来做一次连通性检查。拖动一台PC,用自动连线连到路由器,PC的IP配成192.168.1.10,路由器接口配上192.168.1.1,在PC的命令行里ping 192.168.1.1。能通,说明虚拟网卡、链路和协议栈都正常。这之后再往下做VLAN或OSPF,才能保证遇到问题时是真的路由配置问题,而不是环境问题。
做好这一步,模拟器的底座就算立住了。很多人在纠结"是不是该换eNSP Pro"的顾虑,也可以暂时放一放:经典版能覆盖HCIP绝大多数实验,只有跑到SRv6、大流量模型这类场景,才需要去考虑更重的平台或者真机。
3. eNSP基础操作与设备配置:拓扑搭建与命令行入门
3.1 拖拽建拓扑:连线之前先想清链路类型
打开eNSP的主界面,左边是设备列表,往下拖AR路由器、交换机、PC到灰色画布。常见拓扑里,交换机和路由器之间用"自动连线",PC接交换机也用自动连线,然后右键链路可以查看两端接口编号。这里有一个新手很容易犯的错:链路接到设备上时默认可能落在管理口或者光口上,导致配置了半天接口不生效。所以每连好一根线,习惯性双击链路看一下两端接口名再开工。
PC设备在eNSP里用的是虚拟网卡加命令行窗口的形态,右键点击PC可以打开命令行,里面有ipconfig和ping一类工具。PC上的IP配置不是用图形界面改,而是要在命令行里敲,或者右键选择"设置"填IP和网关。常见做法是右键设置去填,命令行更适合验证。
画布上设备的摆放顺序也影响排错。原则是网络流向从左到右:PC在左、接入交换机居中、路由器靠右,这样后面抓包头也不容易乱。拓扑设备太多时,尽量分批启动。我一般一次只启动一组链路,验证通了再开下一组,避免所有设备同时开机把CPU占满。
3.2 华为VRP命令行:system-view、display与undo的日常用法
华为设备的命令行视图体系是分层的。默认落在用户视图 ,敲system-view进入系统视图[Huawei],在系统视图下可以改设备名、创建接口配置等。进接口再往下还有接口视图,比如[Huawei-GigabitEthernet0/0/0]。这个层级关系是后续所有配置的地基。
刚上手时只需要记住三组命令:
- system-view或sys进入配置视图;
- display开头的命令负责查看状态,比如display ip interface brief、display vlan、display ospf peer;
- undo前缀用来取消配置,例如undo ip address会删掉接口IP。
入门的配置习惯是"改一步、看一步、存一步"。每改完一段配置,先敲display this看当前视图下已有的配置,确认没写错,再进下一步。改完所有内容,回到用户视图敲save保存。很多人做完实验直接关掉模拟器,下次打开发现配置全丢了,就是漏了这个save。
命令行窗口刷屏时,<Ctrl+L>可以清屏,<Ctrl+Z>可以从任意配置视图退回用户视图。这两个快捷键是后悔药,配置敲到一半迷路了,先Ctrl+Z再重新进。
3.3 最小实验:让PC和路由器讲上话
下面这套配置是eNSP里最基础的连通实验。设备连接关系是:PC1用网线接到AR1的GigabitEthernet0/0/0接口。
路由器侧配置:
system-view sysname R1 interface GigabitEthernet0/0/0 ip address 192.168.1.1 255.255.255.0 undo shutdown quit说明:sysname改成R1只是为了后续display信息好认。接口IP必须与PC同网段,undo shutdown是保险动作,华为多数接口默认开启,但写成显式配置能避免旧版本模拟器接口默认关闭的差异。PC侧配好192.168.1.10,网关填192.168.1.1。
验证连通:
# PC1 的命令行窗口里执行 ping 192.168.1.1 -c 4能收到四个reply,说明数据链路已经通了。如果超时,优先检查PC的网关是否填错、路由器接口是否配在同一个接口上,以及链路两端接口编号是否是自己以为的那个。用display ip interface brief看接口状态,物理和协议都要是Up。
这一步跑通之后,VLAN交换、静态路由、OSPF都是在这条链路模型上叠加出来的。不要急着做复杂实验,接口能Up、ping能通,这份"地基"才算真的稳。
4. eNSP路由协议与二层实验:OSPF、BGP、跨VLAN与链路聚合
4.1 跨VLAN通信:Access、Trunk与VLANIF网关
交换机上划分VLAN后,不同VLAN的PC默认互相隔离,要通信就得让交换机起三层网关。eNSP里最常见的是"单台三层交换机+两个VLAN",做成一个最小的跨VLAN互通实验。
先建VLAN再放接口。PC1属于VLAN 10,PC2属于VLAN 20,交换机两个接口分别配置成access口。
system-view vlan batch 10 20 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 link-type trunk和port trunk allow-pass vlan 10 20。access口负责接终端,trunk口负责交换机之间搬运多个VLAN的报文,这个分界要记牢。
有了VLAN之后,给VLANIF配上IP作为各VLAN的网关。
interface Vlanif10 ip address 192.168.10.1 255.255.255.0 quit interface Vlanif20 ip address 192.168.20.1 255.255.255.0 quit这里最容易踩的坑是:VLANIF要生效,对应VLAN底下得有处于Up状态的物理接口。如果VLAN 10里一个access口都没放,Vlanif10会一直Down,PC的网关自然不通。验证时用display vlan、display ip interface brief,看到Vlanif10状态是Up再继续。
链路聚合也属于二层配置里高频出现的实验点。把两根GE口绑成一个Eth-Trunk:
interface Eth-Trunk1 port link-type trunk port trunk allow-pass vlan 10 20 quit interface GigabitEthernet0/0/3 eth-trunk 1 quit interface GigabitEthernet0/0/4 eth-trunk 1 quit绑完之后用display eth-trunk查看成员口状态。聚合的意义不只是带宽翻倍,更重要的是链路冗余——一根线断了报文还走另一根。eNSP里验证断线故障特别方便,右键链路选择"断开",再ping对端地址,通了就说明聚合切换生效。
4.2 OSPF单区域:把静态路由的体力活交给协议
多台路由器静态路由也能通,但每加一条链路就要动一遍全局路由表,改错一个下一跳就全网翻车。OSPF的价值是让路由器自己发现拓扑并计算路由,适合作为学习动态路由的起点。
eNSP里跑OSPF的套路比较固定:给路由器配环回口做Router ID,宣告每个直连网段,然后看邻居建立和路由学习情况。三台路由器R1、R2、R3直连成链式拓扑,R1上配置:
system-view interface LoopBack0 ip address 1.1.1.1 255.255.255.255 quit ospf 1 router-id 1.1.1.1 area 0 network 1.1.1.1 0.0.0.0 network 192.168.12.0 0.0.0.255 quit注意network命令写的是接口地址加反掩码,不是掩码。192.168.12.0 0.0.0.255表示匹配192.168.12.0这个网段内的接口地址。R2、R3按同样格式把各自的直连网段宣告进area 0即可。
验证命令有两个:display ospf peer看邻居状态,Full代表邻接建立;display ip routing-table看路由表里是否出现对端环回口路由。如果邻居停在Init或ExStart,优先检查两端的area编号、Router ID是否冲突、宣告网段的反掩码有没有写错。R1上ping 3.3.3.3能通,就说明OSPF算路已经生效。
OSPF的收敛和邻居机制比静态路由复杂得多,但实验时只要把Router ID唯一、区域一致、网段宣告准确这三件事做对,成功率就很高。剩下那些DR/BDR选举、LSA类型的细节,完全可以等把基础实验跑通后再回去啃文档。
4.3 BGP邻居与路由控制:从建邻到控制路由方向
BGP在eNSP里的实验场景通常是跨AS建EBGP邻居,或者AS内建IBGP邻居,然后观察路由传播和选路。这里以典型的双AS场景为例:R1属于AS 100,R2属于AS 200,两台直连路由器之间建EBGP邻居。
# R1 system-view bgp 100 peer 192.168.12.2 as-number 200 quit # R2 system-view bgp 200 peer 192.168.12.1 as-number 100 quit配置完成后在R1上执行display bgp peer,看到Established状态才算邻居成功。BGP邻居建起来之后,默认不会自动传输路由,需要显式宣告。在BGP视图里宣告路由用的是network命令加掩码:
# R1 宣告自己的环回口路由 bgp 100 network 1.1.1.1 255.255.255.255BGP的network与OSPF完全不同:OSPF宣告的是接口所在网段,BGP宣告的是本地路由表里精确存在的路由条目,掩码必须和路由表完全一致,少一位都不会进BGP表。这是新手最容易卡住的地方。
路由控制是BGP实验的重点。常见的需求是"让流量优先走某条路径"。BGP有很多可选属性,实验里最容易操作的是preferred-value。给某个邻居的路由抬高优选值,可以让来自该邻居的路由成为优选路径:
# R1 针对 R2 邻居的路由设置优选值 bgp 100 peer 192.168.12.2 preferred-value 200设置后用display bgp routing-table看路由条目的Preferred Value列,再对比另一条路径的值,就能直观看到选路变化。再配合route-policy、ip-prefix做前缀过滤和属性修改,能拼出一套完整的BGP路由控制实验。这些实验在eNSP里都能跑通,而且是HCIP和HCIE考试中的高频动手点。
5. eNSP避坑指南:启动失败40、USG6000V井号与卸载残留
5.1 AR1启动失败40
现象:启动路由器控制台弹出报错,设备图标旁显示错误码40,日志提示"启动失败"。
原因:这是eNSP里出现频率最高的问题。通常是虚拟化软件和eNSP版本不匹配,或上一次没卸载干净留下虚拟机残留,也可能是系统用户名是中文或路径含中文。Hyper-V开启时虚拟化软件取不到虚拟化资源也会有类似报错。
解决:先卸载干净重装一次,顺序是卸载eNSP、卸载虚拟化软件、卸载抓包库,然后手动检查注册表残留和C盘用户目录下的虚拟化软件隐藏文件夹,清干净再重装。重装后用管理员身份启动eNSP,第一次开设备前先确认BIOS里的虚拟化已开启。如果还报40,把拓扑里的设备删掉重新拖一台新的再启动,避免读旧设备配置卡住。
5.2 USG6000V启动总是井号
现象:防火墙设备启动后控制台窗口一直刷#号,刷了十几分钟也不见 提示符,或者最后直接启动失败。
原因:USG6000V这类防火墙镜像体积大,对虚拟机的内存要求比AR高得多。默认分配的内存偏小或者镜像没有正确导入,都会导致设备起不来。#号其实是设备在加载大镜像时的正常刷屏,但一直刷不退出,说明镜像没加载完或加载失败。
解决:在设备属性里给USG6000V分配更大内存,常见做法是给到1GB以上,CPU核数也适当加;确认设备镜像文件存在于安装目录,并且防火墙的镜像路径在eNSP的设备包管理里有注册记录。改完参数后重新启动,耐心等它刷完#号,一般就能进命令行。另外防火墙登录默认是admin账号,首次进入后马上改密码,避免下次实验用旧密码卡住。
5.3 卸载不干净导致重装后旧配置复活
现象:卸载eNSP后重装,新建工程拖出来的设备居然还带着上次实验的配置,甚至一启动就执行旧脚本,排错排到崩溃。
原因:eNSP的配置并不全存在安装目录,用户目录、注册表、工程保存路径里都可能有残留。直接删安装目录的重装方式,完全没有清理这些位置,所以旧配置被新实例拾了回来。
解决:卸载时先退出所有eNSP进程,用控制面板正常卸载eNSP,再卸载虚拟化软件和抓包库。之后清掉几处残留:注册表里HKEY_CURRENT_USER\Software\eNSP相关键值、用户目录下的.eNSP配置文件、自定义的工程保存目录。全部清完再装。这台机器以后就当作"只跑eNSP的实验机",不在这台机器上折腾Hyper-V、Docker这类也会改动虚拟网络的东西,能少很多玄学报错。
5.4 Telnet/SSH登录不上设备
现象:PC上用telnet 192.168.12.1登录路由器,几秒后超时,或者SSH报"Connection closed by remote host"。
原因:最常见是设备上的VTY用户界面没有开启对应协议,或者没有配置登录认证。很多人只配了接口IP,没在设备上启用Telnet服务,PC自然连不上。另一个原因是设备没启动完就急着登录,进程没起来。
解决:先用ping确认PC和路由器三层通了,再在路由器上把登录配置补全。Telnet场景最少要配一个登录用户和VTY的认证方式,示例配置:
system-view telnet server enable aaa local-user admin password cipher admin@123 local-user admin privilege level 15 local-user admin service-type telnet quit user-interface vty 0 4 authentication-mode aaa protocol inbound telnet quitSSH同理,需要先rsa local-key-pair create生成密钥,再在VTY里把protocol inbound改成ssh,最后把local-user的service-type加上ssh。配完在PC端重试,还连不上就看设备控制台的报错日志,重点排查协议和认证两处。
5.5 保存配置后重启设备配置丢失
现象:做完实验明明敲了save,关掉eNSP再打开同一台设备,配置回到出厂状态。
原因:save保存的是当前配置到默认存储,但模拟器关闭时如果不正常结束,或工程文件没有真正写盘,重启后会从启动配置文件重新加载旧内容。另外很多人保存完没看提示,保存失败时数据根本没落盘。
解决:养成三步走的习惯。配置完成后在用户视图敲save,确认回显显示写入成功;再敲display startup,看下次启动要加载的配置文件是不是刚才写入的那份;最后在eNSP里正常关工程,不要直接杀进程。这样再重启设备,display current-configuration里的内容就是上次实验的状态。这招对做综合实验尤其重要,不然每次都要从头敲一遍VLAN和路由配置。
6. eNSP进阶实践:用Python3.9 Telnet脚本接管AR1
6.1 为什么用Telnet做自动化验证
eNSP里的设备支持从PC侧通过Telnet登录,模拟器的虚拟网络天然适合用脚本批量改配置。Python 3.9自带的telnetlib库足够用,不用引额外依赖,适合实验场景;SSH自动化虽然更安全,但需要paramiko这类第三方库,没网的环境里装起来费劲。实验环境没有敏感流量,Telnet是最快的路径。
不建议拿这套脚本直接去生产设备上跑。生产环境用SSH加堡垒机,别拿Telnet当常规通道——这是血泪经验,实验归实验,边界要守住。
6.2 让脚本自动登录并回读配置
前提是R1已经按上一章的方法配好Telnet登录,PC到R1的网络是通的。然后确认R1在eNSP里的端口映射,AR系列默认从2000开始按设备序号递增,AR1对应本机TCP 2000端口。
import telnetlib import time HOST = "127.0.0.1" PORT = 2000 USER = "admin" PASS = "admin@123" tn = telnetlib.Telnet(HOST, PORT, timeout=10) time.sleep(1) tn.read_until(b"Username:", timeout=5) tn.write(USER.encode("ascii") + b"\n") time.sleep(0.5) tn.read_until(b"Password:", timeout=5) tn.write(PASS.encode("ascii") + b"\n") time.sleep(1) tn.write(b"system-view\n") time.sleep(0.5) tn.write(b"sysname R1-Python\n") time.sleep(0.5) tn.write(b"quit\n") time.sleep(0.5) tn.write(b"display current-configuration | include sysname\n") time.sleep(1) output = tn.read_very_eager().decode("gbk", errors="ignore") print(output) tn.write(b"quit\n") tn.close()这段脚本做的事情很直白:先建立到本机2000端口的Telnet连接;到了Username和Password提示之后,依次写入预设账号和密码完成登录;登进用户视图后进入系统视图,把设备名改成R1-Python;回到用户视图只回显配置里和sysname相关的行,验证修改是否生效。读取时用gbk解码是因为VRP回显默认是中文编码环境,用utf-8反而会看到乱码。
telnetlib脚本有个习惯要养成:每条命令之间留sleep,让设备把回显吐完再发下一条。read_until要配合"Username:"这类提示符用,别只靠sleep硬等,网络慢的时候容易读超时。把这个脚本扩展成循环,还能批量给一组设备下发VLAN、路由协议配置,把eNSP里的综合实验从手敲变成半自动验证。
这个方向我建议所有做运维的同学都搭一遍。别嫌Telnet老,它帮你把"登录设备、敲命令、看回显"这三个动作拆成了代码里的最小单元,以后换paramiko、换Netmiko,逻辑完全一样,只是换传输层而已。我自己的习惯是先让脚本跑通一台AR1,再逐步加入异常判断和配置回滚段,把实验从"能通"做到"坏了能自己检查"。希望以上的步骤和坑位能帮你在eNSP上少走弯路,把时间省下来留给真正的业务场景。
本文还有配套的精品资源,点击获取