最近如果你刚到手一台预装 Windows 11 的新电脑,想装华为 eNSP 做网络实验,我打赌你大概率会卡在同一个地方:软件全部装完,拓扑拖完,右键启动 AR1,几秒后报一个 40 错误;或者更折磨人的,AR1 停在终端窗口里,一整排#号刷完就没动静了。这十有八九不是 eNSP 本身的问题,而是 Win11 默认开启的基于虚拟化的安全性(VBS),跟 eNSP 自带的那套老版本 VirtualBox 在底层权限上互相占道,谁也绕不过谁。这篇文章把我实际折腾的一条完整路径写出来:先从原理讲清楚为什么 Win11 这么容易翻车,再给真机安装和关闭 VBS 的具体操作,接着是 AR 设备启动失败 40、一直#号的排障链路,最后讲为什么我后来改用 VMware17 虚拟机跑一个现成的干净环境。新手可以直接照着抄,老手也能从排查思路里找到点参考。
1. 为什么 eNSP 在 Windows11 上死活跑不起来:VBS 与老版 VirtualBox 的冲突真相
1.1 eNSP 到底是怎么运行网络设备的
很多人把 eNSP 当成一个普通的“软件”,其实它不是一个单体模拟器,而是一个“三明治”结构。最上层是华为的图形界面和拓扑逻辑,中间是设备镜像文件,底层则是 Oracle 的 VirtualBox。你每拖一台 AR 路由器到拓扑图上,eNSP 就会在后台调用 VirtualBox 启动一个对应的虚拟机,VRP 系统在这个虚拟机里跑起来,然后多个设备之间通过虚拟网卡互联,最终形成你看到的拓扑。
理解了这一层,很多问题就通顺了:只要 VirtualBox 起不来,eNSP 的设备就一定起不来。而你看到的“启动 AR1 失败,错误代码 40”,本质上就是 eNSP 在向 VirtualBox 要虚拟机实例时,VirtualBox 返回了异常。所以排查 eNSP 设备问题,第一反应不应该是怀疑配置写错了,而是应该先看底层的 VirtualBox 到底能不能正常工作。
1.2 VBS 是怎么把老版 VirtualBox 卡死的
Windows 11 从 22H2 开始,安全机制比 Win10 时代激进得多。默认情况下,它会打开基于虚拟化的安全性(VBS),里面最常见的就是“内存完整性”,也叫内核隔离。VBS 的思路是:Windows 自己先启动一个 Hypervisor(虚拟机监控程序),把内核关键区域隔离在一个受保护的内存环境里运行。
问题就出在这里:一旦 Hypervisor 启动,它就接管了 CPU 的硬件虚拟化能力,也就是 VT-x/AMD-V。VirtualBox 5.2 乃至 6.0 前中期的版本,默认是直接访问 VT-x 指令来运行虚拟机的,而不是像 VirtualBox 6.1+ 那样可以兼容 Hyper-V 后端。当 Windows 的 Hypervisor 已经占住 VT-x,老版 VirtualBox 再想用同一套硬件指令,就会跟系统管理程序打架,最终表现为 VirtualBox 打开虚拟机失败,eNSP 上层设备自然也就跟着报 40。
这里有个反直觉的点:很多人以为“只要任务管理器里 CPU 虚拟化显示已启用,VirtualBox 就能跑”,这是错的。任务管理器显示的是 BIOS 层面的 VT-x/AMD-V 开关,而 VBS 是在这之上又套了一层 Hypervisor。相当于硬件虚拟化的大门是敞开的,但门口被 Windows 自己的管理员堵住了,VirtualBox 只能在外面干瞪眼。
1.3 先判断你的电脑到底有没有中招
在动手关闭之前,先花十秒钟确认你机器到底是不是 VBS 引起的。
按Win + R,输入msinfo32回车,在系统摘要里往下找到一行“基于虚拟化的安全性”。如果显示“正在运行”或“已启用”,那基本可以断定你的 eNSP 设备起不来跟 VBS 有直接关系。如果显示“未启用”,那问题可能出在 VirtualBox 版本、驱动、防火墙或者安装顺序上,后面第三章再细查。
也可以用 PowerShell 查得更准确:
Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard | Select-Object VirtualizationBasedSecurityStatus这个状态值含义大概是:0 表示未启用,1 表示启用但未运行,2 表示启用且正在运行。如果你看到 2,别犹豫,往下走关闭流程。
2. 真机路线:关闭基于虚拟化的安全性的完整操作(含 Win11 家庭版)
2.1 界面入口最快的方法:先关“内存完整性”
关闭 VBS 最快的方式,是直接关掉“内存完整性”这个开关。路径在:
Windows 安全中心→设备安全性→核心隔离(有的系统版本叫“内核隔离”) →内存完整性→ 关闭。
操作完系统会提示重启。这一步对大部分普通用户来说就够了,因为很多 Win11 预装机器开 VBS 就是通过内存完整性实现的。
但说实话,只关这个开关并不一定能把 Hypervisor 彻底请走。有些系统上,即使内存完整性关掉了,底层 Hypervisor 还是被 Credential Guard 或者 Device Guard 占着。这就是为什么很多人明明关了“内存完整性”,重启后msinfo32里“基于虚拟化的安全性”依然显示“正在运行”。所以真正干净的关闭,建议把下面几招一起做。
2.2 家庭版没有组策略?注册表方案照样关
Win11 家庭版没有gpedit.msc组策略编辑器,这是很多教程最坑的地方——贴了一堆组策略步骤,家庭版用户根本找不到入口。其实不用组策略,用注册表也能把 Device Guard 和基于虚拟化的安全性关掉。
新建一个文本文件,把下面内容粘进去,后缀改成.reg,右键合并,然后重启:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard] "EnableVirtualizationBasedSecurity"=dword:00000000 "RequirePlatformSecurityFeatures"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceGuard\Scenarios\HypervisorEnforcedCodeIntegrity] "Enabled"=dword:00000000如果你用的是 Win11 专业版或企业版,更推荐走组策略,路径如下:
gpedit.msc→计算机配置→管理模板→系统→Device Guard→打开基于虚拟化的安全性→ 选择“已禁用”。
这里要注意的是:组策略里的“已禁用”和注册表里的键值本质上是同一个东西在写注册表,所以两套方案不需要重复执行,挑你系统能用的那套就行。没有组策略的家庭版,注册表是最靠谱的路。
2.3 用 bcdedit 关掉 Hypervisor 自启,以及后续影响
关完内存完整性和 Device Guard,还需要用bcdedit把 Hypervisor 的自启动关掉。这一步很关键,因为负责 VBS 的 Hypervisor 是跟着 Windows Boot Manager 走的,它不关,Hypervisor 还会在开机阶段抢先加载。
用管理员身份打开命令提示符或 Windows PowerShell,执行:
bcdedit /set hypervisorlaunchtype off执行成功后重启。以后想恢复,把off改回auto即可。
但必须提醒一句:这个命令会直接影响 Windows 的虚拟化全家桶,包括 Windows 沙盒、Hyper-V、WSL2,还有基于虚拟化的 Credential Guard。如果你日常工作重度依赖 WSL2,关掉 hypervisorlaunchtype 后 WSL2 会直接不能用了。我的建议是:这台电脑如果主要用来做网络实验,那就关;如果还要兼顾开发环境,建议走第四章的 VMware 虚拟机方案,把 eNSP 隔离到虚拟机里,宿主这边保留 WSL2。
2.4 重启后必须做的两项自检
关闭操作做完,重启之后别急着开 eNSP,先确认两个东西。
第一,去任务管理器性能→CPU,看“虚拟化”这一行是否显示“已启用”。这里只需要确认 BIOS 层面的虚拟化是打开的就行。如果这行显示“已禁用”,说明你的 BIOS 里没开 VT-x/AMD-V,需要重启进 BIOS,在 CPU 或高级设置里找到 Intel Virtualization Technology / AMD SVM Mode,打开后保存退出。
第二,再次运行msinfo32,看“基于虚拟化的安全性”这一行。如果现在显示“未启用”,说明 Hypervisor 已经把 VT-x 让出来了,VBS 问题解决。如果还是“已启用”,检查一下 BIOS 里的 Secure Boot 有没有被安全策略锁死,以及你的系统是不是企业域环境。域环境有时会通过策略强制重新开启 VBS,这种单靠本机设置是关不掉的,只能请管理员放出策略或者走虚拟机方案。
3. eNSP 安装、AR1 失败 40、路由器一直#号的完整排障链路
3.1 安装前先把依赖环境搞干净
VBS 关完之后,eNSP 能不能顺利跑起来,很大程度取决于安装顺序。我先讲最省心的安装路径:
- 如果有旧版 VirtualBox,先卸载干净,尤其别混着装 VirtualBox 7.x。eNSP 官方包在老版本(常见如 1.3.00.100)里配套的是 VirtualBox 5.2.x,个别 SP 包会用到 6.0.x,但核心原则是:保持 eNSP 安装包自带的 VirtualBox 版本,不要单独升级。
- 安装 WinPcap。可以用官方 WinPcap 4.1.3。如果系统提示驱动不兼容,可以换成 Npcap 的 WinPcap 兼容模式。但注意 Npcap 和 WinPcap 不要同时装,这俩驱动会冲突,装之前把老的清理干净。
- 以管理员身份运行 eNSP 安装包,安装路径用默认的英文路径,别手动改成中文目录。
- 装完 eNSP 后,右键 eNSP 快捷方式,选择“以管理员身份运行”。
很多第一次接触的人会在第 2 步偷懒不装 WinPcap,结果拓扑上的设备全起不来。这个依赖不用抓包功能,但 eNSP 靠它创建底层虚拟链路,缺了不行。
3.2 AR 设备启动失败 40 的逐级排查
如果你按上面装完还是报“启动 AR1 失败 40”,先别急着卸载,按这个顺序往下查。
第一步,确认 VBS 真的关了。不少人是关完“内存完整性”不重启就直接开 eNSP,当然没用;还有人是注册表没生效,msinfo32显示还开着。这一步通过第二节的自检确认。
第二步,确认 VirtualBox 能单独启动。手动打开 VirtualBox 主界面,看里面有没有 eNSP 导入的设备。如果 VirtualBox 里设备本身打着红色感叹号,说明 VirtualBox 运行环境有问题;如果 VirtualBox 主界面打不开或报错,多半是 VBox 驱动被禁用、杀毒软件拦截了 VBoxSVC。
第三步,检查虚拟网卡。打开控制面板 → 网络连接,看有没有 “VirtualBox Host-Only Network” 这张网卡。没有的话,去 VirtualBox 全局设置 → 网络 → Host-Only 网络里新建一张,或者直接卸载重装 VirtualBox。eNSP 设备间的通信全靠这张虚拟网卡,缺了它设备即使能启动也互相不通。
第四步,临时退出杀毒软件和 Windows Defender 的实时防护再试一次。很多安全软件会在 eNSP 启动设备的瞬间锁定 VirtualBox 的进程和 .vdi 镜像文件,导致启动超时报 40。如果退出安全软件后正常,请把 eNSP 安装目录、VirtualBox 安装目录和你的拓扑保存目录加入白名单。
我用一个表把这个链路的判断方式列出来,方便你对号入座:
| 现象 | 大概率原因 | 先试哪一步 |
|---|---|---|
| 启动设备立即报 40 | VBS/Hypervisor 还没关干净 | msinfo32确认 VBS 状态,执行bcdedit /set hypervisorlaunchtype off |
| VirtualBox 界面正常,eNSP 启动失败 | 杀毒/Defender 实时防护拦截 | 添加白名单或临时退出安全软件 |
| 缺少 Host-Only 网卡 | VirtualBox 网络组件损坏 | VirtualBox 全局设置新建 Host-Only 网络,或卸载重装 |
| 启动报错提示 VT-x 不可用 | BIOS 未开虚拟化,或 VM 嵌套未开 | 任务管理器确认“虚拟化”状态,进 BIOS 开启 |
| 装了新版本 VirtualBox | 与 eNSP 不兼容 | 卸载,改回 eNSP 自带的 5.2.x/6.0.x |
3.3 路由器启动一直#号:别急着删除重来
AR1 启动后终端里一直是#号,很多人以为是死机了,其实这更像是“卡在启动流程中”。eNSP 的路由器镜像本质上是完整在虚拟机上加载 VRP 系统,首次启动时需要解压内存镜像,比较慢,尤其在你电脑内存小、硬盘是机械盘的情况下,等个两三分钟都是正常的。
但如果你等了五分钟以上还是#,就需要排查了。最常见的两个原因:一是设备文件被安全软件锁住,虚拟机的 CPU 空转;二是你的拓扑里拖了太多设备,CPU 已经跑满,每个设备分到的资源不够。
我的习惯做法是:遇到一直#,先打开 VirtualBox 主界面,右键对应设备看 CPU 占用率是不是在跳。如果在跳,说明系统还在加载,再等一会儿。如果 CPU 占用一直是 0%,说明这个虚拟机的进程被卡住了,右键删除设备,重新拖一台出来,再启动。
还有一个小技巧:右键 eNSP 的“启动”按钮不一定非要双击设备图标,可以直接用 eNSP 工具栏里的批量启动。但批量启动会在同一时间拉起大量虚拟机,电脑扛不住的话,反而更容易出现#卡死。所以我的建议是逐个启动,启动完一个等它#变成路由器命令行提示符,再启动下一个。
3.4 重装大法(实用向)与防火墙/杀毒例外
如果以上都试过还是不行,那确实可以上最后的兜底方案:彻底卸载重装。但这里说的“彻底”不是简单添加删除程序,而是清理干净所有残留。
步骤是:先卸载 eNSP,再卸载 VirtualBox,再卸载 WinPcap/Npcap,然后重启。重启后搜索 C 盘里跟Huawei、eNSP、VirtualBox相关的目录和注册表残留,有强迫症的话可以用系统优化工具清一次注册表,但至少要把用户目录下的 eNSP 隐藏配置目录删掉,位置一般在C:\Users\你的用户名下面,名字带.eNSP开头。不删干净就重装,大概率还是会复现同样的问题,因为 eNSP 第一次启动时会尝试重新加载设备模板,但残留的 VirtualBox 配置会干扰它。
装完之后,Windows Defender 里给 eNSP 和 VirtualBox 目录设置排除项,再重启一次,然后按第三章的顺序安装。这套组合拳我在好几台 Win11 机器上验证过,成功率很高。
4. 不愿动系统?用 VMware17 虚拟机跑 eNSP,绕开所有兼容性折磨
4.1 为什么 VMware17 比在 Win11 真机硬扛靠谱
说实话,eNSP 是很多年前的老软件,华为官方对 Win11 的适配一直不是很积极。就算你把 VBS 关了,也可能碰到 Win11 某个更新后内核又变了、VirtualBox 老版本驱动又掉链子的情况。所以我自己实际用下来,最省心的方案是:不要在 Win11 真机里硬扛 eNSP,而是在 VMware Workstation 17 里开一台 Windows 10 虚拟机,eNSP 跑在虚拟机里。
这个思路的好处有三个:
- 虚拟机里的系统环境是可控的,不受宿主 Win11 更新影响。
- eNSP 需要的老版 VirtualBox 在 Win10 里兼容性更好,不需要跟 VBS 死磕。
- 打完干净快照后,怎么折腾都行,崩了恢复快照就回到原始状态。
对普通学习来说,VMware Workstation 17 个人使用现在是免费的,不需要满网找破解和许可证。安装完提示许可证时,按个人非商业用途注册登录即可。所以不要被网上一堆激活码帖子带偏,免费路径是官方有的。
4.2 导入现成模板时的三个关键设置
如果你拿到的是已经装好的 VMware17 虚拟机模板,操作会比从头搭建简单很多。解压到本地后,用 VMware Workstation 17 打开.vmx文件(如果是 OVA/OVF 则走“打开”导入流程)。开机之前有三个地方一定要检查:
第一,路径不能有中文。模板解压后如果放在D:\网工实验\ensp-wm这种带中文的路径里,VMware 可能在启动时提示找不到文件或虚拟磁盘加载失败。改成全英文路径最稳妥。
第二,开机时如果弹出“该虚拟机是否已移动或复制”,一定要选“我已移动该虚拟机”。这个选项影响虚拟网卡的 MAC 地址策略,选“我已复制”会重置网卡,可能导致虚拟机内 Wind 7/10 的网络标识变化。虽然 eNSP 主要靠 VirtualBox 的 Host-Only 网卡通信,但避免节外生枝,还是选“我已移动”最好。
第三,确认虚拟机的“虚拟化引擎”选项勾上了。方法是:右键虚拟机 → 设置 → 处理器,在“虚拟化引擎”区域勾选“虚拟化 Intel VT-x/EPT 或 AMD-V/RVI”。这个选项决定虚拟机内能不能再嵌套运行一层 VirtualBox。
4.3 在 VMware 里再跑 VirtualBox 的嵌套虚拟化注意点
很多人第一次听说“虚拟机里再跑虚拟机”会觉得别扭,但 eNSP 在 VMware 虚拟机里的运行方式确实就是这样:VMware 为客户机虚拟化出一台“完整的物理机”,在这台 Win10 客户机里面再安装 VirtualBox 来跑 eNSP 的设备。只要三个阶段都满足,它就能稳定跑:
- 宿主 Win11 的 VBS/Hypervisor 处于关闭状态,或者在 VMware 设置里允许向客户机透传 VT-x。
- VMware 虚拟机的处理器设置里勾选了“虚拟化 Intel VT-x/EPT 或 AMD-V/RVI”。
- 客户机 Win10 系统里不要开启 Hyper-V、内核隔离这些功能。
如果中间断了一环,你在 Win10 虚拟机里启动 eNSP 时通常会提示“虚拟机监控程序功能对该用户不可用”。这句话的意思是 VMware 没有把硬件虚拟化能力完整传递给这台客户机。优先检查宿主的 VBS 是否还开着,其次检查 VM 设置里的虚拟化引擎有没有勾。很多人只看 VM 设置,忽略了宿主 VBS,所以一直解决不了。
另外,虚拟机的资源配置不要太抠门。eNSP 启动一台 AR 设备就要吃几百 MB 内存,多台设备拓扑对内存和 CPU 都是压力。模板默认配置如果只有 2 核 4G,跑三台设备可能就卡到怀疑人生。我的经验是最少给 4 核、8G 内存,硬盘如果是 SSD 就更好。
4.4 如何把虚拟机模板做成自己的“免折腾环境”
拿到现成模板后,建议先做一次“初始化快照”。开机进入 Win10 虚拟机桌面后,确认 eNSP 能正常启动一台路由器、能跑通一个最小的两台路由器互联拓扑,然后关机,右键虚拟机 → 快照 → 拍摄快照,命名“干净可用”。以后实验做到一半把系统搞崩了,回到这个快照就是全新状态。
如果以后想把这套环境搬到别的电脑,或者分享给同学,用 VMware 的“文件 → 导出为 OVF”功能直接导出c:\xxx.ova即可。再配合 VM 设置里把内存、CPU 改成新电脑合适的值,一套可复制的 eNSP 环境就做好了。这台 VMware 虚拟机在我的工作流里,某种程度上比实体机上的 eNSP 更重要——它负责屏蔽所有宿主系统带来的不确定性。
5. 长期稳定使用 eNSP:维护细节和几个必须记牢的坑
5.1 系统更新后 VBS 可能又被打开
我用 Win11 真机跑 eNSP 时踩过最防不胜防的坑,就是 Windows 更新后,msinfo32里“基于虚拟化的安全性”又从“未启用”变回了“正在运行”。这不是玄学,安全补丁有时会把“内存完整性”开关重置为开启状态,尤其大版本功能更新后很容易出现。
所以我的习惯是:每次系统更新完,花三十秒跑一次第一节的检查。如果 VBS 被重新开启,按第二节的流程再关一遍。这一步不能省,因为 eNSP 报 40 的速度往往比发现系统更新还快。
5.2 别把 WSL2、Hyper-V 和 eNSP 硬塞在一起
前面提过,关闭 VBS 会影响 WSL2 和 Hyper-V。如果你的工作流里必须保留 WSL2,那我强烈建议直接放弃真机 eNSP,改用第四章的 VMware 虚拟机方案。这样宿主 Win11 的 VBS/Hyper-V 可以按你的开发需求保留,eNSP 在自己的 Win10 虚拟机里独立运行,两边互不干扰。
我自己就遇到过因为绷不住“既要 WSL2 又要 eNSP”的贪心,反复开关hypervisorlaunchtype,最后折腾到系统引导都出了小问题。后来老老实实分离到虚拟机里,一劳永逸。
5.3 杀毒软件白名单和拓扑备份
在 eNSP 日常使用中,最容易被忽略的是杀毒软件。Windows Defender 实时防护有时会对 eNSP 安装目录下的某些设备文件产生误报,导致启动时设备文件被锁。我的做法是在 Defender 的“排除项”里加上 eNSP 安装目录、VirtualBox 安装目录、topo 文件保存目录,这样既不用关闭实时防护,又能保证 eNSP 正常读设备文件。
拓扑文件本身很小,建议养成定期备份的习惯。我的习惯是建立一个“实验版本”文件夹,每个拓扑文件命名带上日期和实验名称,比如2025-06-26-静态路由-三台路由,攒一段时间后统一丢进网盘。eNSP 的软件问题和系统环境问题可以通过快照解决,但自己手写的实验拓扑丢了才是真的血亏。
最后说点个人体会。我在 Win11 上折腾 eNSP 那几天,一度把问题归结为“Windows 太烂”,后来冷静下来才发现,本质原因就是老软件和新系统之间的虚拟化栈不兼容,而 VBS 只是压垮骆驼的第一根稻草。所以如果你也在反复重装中烦躁,我的建议是优先走 VMware 虚拟机这条路线,而不是在真实系统上跟安全机制死磕。模板导入后先拍快照,再把内存调到 8G,后续的 eNSP 学习体验会稳定很多。这个方案陪我从静态路由做到了 OSPF 综合实验,再也没有因为“设备启动失败”打断过实验节奏。