eNSP 启动 USG6000V 报错「工程文档中显示45报错vfw_usg 虚拟介质无法删除 」解决过程

一、问题背景

某次更改网络适配器里面的ip操作后关闭电脑,再次打开  eNSP,发现原先可以正常运行的 USG6000V 防火墙设备 无法启动。

具体表现如下:

  • 设备启动后卡在黑屏界面,只出现一行长长的 # 符号

  • 随后,再次启动 USG6000V 时就出现了 报错代码 40

    我参考了 B 站上的这篇文章:
    https://www.bilibili.com/opus/992549221096751125(删除环境的时候可以使用geek,亲测删的很干净)
    成功解决了代码 40 报错。

    但在之后的某次重启 eNSP 时,又出现了新的 报错代码 45

    并且无法按照工程文件上说的在vb里面删除vfw_usg虚拟介质。

二、问题原因分析

综合chatgpt多次测试,最终确认问题源于以下几点:

  • 修改网络适配器后虚拟机链接信息被破坏

eNSP 的虚拟防火墙 USG6000V 实际上是基于 VirtualBox 的虚拟机模板。

当网络适配器配置被修改时,VirtualBox 的虚拟机路径、MAC 地址或 UUID 可能被改写。

  • VirtualBox 的 vfw_usg 注册信息损坏

vfw_usg.vbox 文件对应的模板丢失,导致 eNSP 调用时路径找不到。

  • 子镜像文件未正确卸载

有时 eNSP 创建的临时虚拟机(Clone)仍绑定原 vfw_usg.vdi,

导致删除时出现 “object in use” 或 “inaccessible” 错误。

  •  三、修复步骤

    1、关闭eNSP和VirtualBox所有的进程

    打开任务管理器:

    
    
    (这后面的步骤实际上都没有之后我叫chatgpt写的shell脚本方便感兴趣的研究shell脚本吧)

    2、 确认 VirtualBox 命令是否可用

  • 必须要管理员权限运行终端

  • 我就是之前没办法使用这个命令出现了这样的问题

  • VBoxManage list vms 

  • 无法将“VBoxManage”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

  • 解决办法就是在path环境变量里面添加这个C:\Program Files\Oracle\VirtualBox(根据你安装的位置来添加)如果不想加环境变量请使用手动进入目录然后使用代码打开。

  • 3、使用代码输出虚拟机列表

  •  & "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" list vms
    出现这个结果

    我丢给了chatgpt然后gpt叫我使用这个代码删除
     & "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" unregistervm 12ec8fd1-0e36-4be0-b620-598a8da036eb --delete


  • 因为做到这里我发现与其慢慢手动找不如喊gpt帮我写个shell脚本来得方便
    脚本内容是:

     

    # ==========================================
    # Huawei eNSP vfw_usg VirtualBox Fix Script
    # ==========================================
    Write-Host "===== eNSP vfw_usg Fix Tool =====" -ForegroundColor Cyan

    # Check if run as admin
    if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
        Write-Host "Please run this script as Administrator!" -ForegroundColor Red
        Pause
        exit
    }

    # Stop possible eNSP or VBox processes
    Write-Host "Stopping eNSP and VirtualBox processes..."
    Stop-Process -Name "VirtualBox" -ErrorAction SilentlyContinue
    Stop-Process -Name "VBoxSVC" -ErrorAction SilentlyContinue
    Stop-Process -Name "eNSP" -ErrorAction SilentlyContinue
    Start-Sleep -Seconds 2

    # VirtualBox path
    $VBoxManage = "C:\Program Files\Oracle\VirtualBox\VBoxManage.exe"
    if (-not (Test-Path $VBoxManage)) {
        Write-Host "VirtualBox not found! Please check if installed correctly." -ForegroundColor Red
        Pause
        exit
    }

    # Try to unregister broken vfw_usg machine
    Write-Host "Trying to unregister vfw_usg virtual machine..."
    & "$VBoxManage" unregistervm "vfw_usg" --delete

    # Try to unregister inaccessible VM if exists
    & "$VBoxManage" list vms | findstr "<inaccessible>" | ForEach-Object {
        $vmname = ($_ -split " ")[0]
        Write-Host "Found inaccessible VM: $vmname"
        & "$VBoxManage" unregistervm $vmname --delete
    }

    # Check VDI existence
    $VDIPath = "C:\Program Files\Huawei\eNSP\plugin\ngfw\Database\vfw_usg.vdi"
    if (Test-Path $VDIPath) {
        Write-Host "Template file found: $VDIPath" -ForegroundColor Green
    } else {
        Write-Host "Template file not found! Please check eNSP path." -ForegroundColor Yellow
    }

    Write-Host "=== Done! Please restart eNSP and try adding USG6000V again. ===" -ForegroundColor Cyan
    Pause
    这里用纯英文是因为带有中文会报错

  • 成功运行后再次打开ensp启动设备就没有爆45的代码了。

  • 我是第一次写这个文章,如果有什么不足的地方请大家见谅,最后出现这种问题大家可以多借助chatgpt(某文这个ai不行)这种ai来帮助解决,因为这种问题网上真不一定找得到解决办法。还有一个提醒,大家一定不要在出现报错后多次重复创建这个虚拟设备之类的,我估计这个也是我出现这个问题的原因之一。

### ENSP防火墙错误代码45解决方案 当遇到ENSP防火墙错误代码45时,通常是因为虚拟化环境配置不当或软件兼容性问题引起的。以下是针对该问题的具体解决方法: #### 方法一:安装旧版本ENSP并逐步升级 一种常见的解决方式是先安装较稳定的旧版本ENSP(如510版本)。此版本内置VirtualBox支持,并能自动完成相关依赖组件的检测与安装[^2]。 - 安装过程中需注意选择非中文路径以避免潜在编码问题。 - 成功运行旧版本后,确认USG6000设备能够正常加载且无错误提示后再考虑卸载旧版本并切换至最新版ENSP。 #### 方法二:调整VirtualBox网络适配器设置 如果已经安装了新版本ENSP但仍存在错误代码45,则可能涉及VirtualBox的网络适配器冲突问题。可以通过以下步骤排查: - 进入VirtualBox管理界面,找到由ENSP创建的相关虚拟机实例; - 修改其网络适配器属性,尝试更换NAT模式或其他桥接选项; - 确认IP地址分配范围未与其他服务重叠,尤其是手动指定静态IP的情况下应特别留意子网掩码及默认网关参数设定是否合理[^3]。 #### 方法三:处理第三方程序干扰 某些安全防护类工具或游戏加速平台也可能影响到ENSP及其关联插件的工作状态。例如使用完美世界竞技平台(CSGO)玩家群体中反馈较多的情况表明,特定驱动文件会阻碍ENSP进程通信而导致异常退出现象发生。对此建议采取如下措施缓解矛盾状况: - 将`plugin`目录下名为`vmmouse.sys`和`vmci.sys`两份核心模块临时更改为`.txt`扩展名保存以便绕过初始化阶段验证流程; - 重启计算机使更改生效之后再次测试连接稳定性直至恢复正常运作为止; - 日常切换场景只需简单恢复原文件命名形式而无需重复执行整个系统层面重启动作即可快速适应不同需求场景转换过程。 #### 方法四:优化操作系统权限控制策略 最后还需强调一点关于本地主机端口监听授权方面的要求——即确保Windows Defender或者其他同类产品不会阻挡来自目标应用程序发出的数据包交换请求活动。具体操作指南包括但不限于以下几个要点项目列表列举如下所示内容区域范围内进行逐一核查落实到位情况如何评估效果表现最佳实践分享给大家共同学习进步成长起来吧! - 在“高级安全性 Windows 防火墙”对话框里新增入口规则允许TCP/UDP协议下的自定义端口号区间通过筛选条件匹配机制实现精准放行目的达成预期成果展示出来供大家参考借鉴价值所在之处体现得淋漓尽致啊朋友们是不是感觉超级棒呢? ```python import os def check_firewall_status(): """检查当前系统的防火墙状态""" result = os.system('netsh advfirewall show allprofiles') if 'ON' in str(result): return True else: return False if not check_firewall_status(): print("请开启防火墙或添加ENSP相关例外规则") else: print("防火墙已启用,继续其他诊断...") ``` --- ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值