我在 Proxmox VE 8.2(在 Debian 12 上)下运行 Windows 客户机,并且想向客户机隐藏有关底层物理硬件的信息。
动机
我已全额支付了某库存管理软件的永久许可证费用,但该软件的支持已“终止”,供应商已决定关闭其许可证服务器。他们已向我颁发了离线访问证书,但问题在于:
- 如果他们的 Windows 应用程序(在我的计算机上)检测到其底层硬件的变化,则证书无效。
- 如果我重新安装该应用程序,我不知道有任何机制可以导入以前颁发的证书。
为了降低应用程序检测到重大硬件变化的可能性,我已将应用程序安装在 Windows 虚拟机上。(主机是 Linux 上的 KVM。)我希望能够自由地将 VM 迁移到不同的物理机,在必要时升级运行虚拟机管理程序的 PC 上的硬件等。
VM 所感知的硬件
我不知道该应用程序用来检测硬件变化的算法,但我怀疑它可能会考虑以下事项:
- CPU 序列号
- 网络接口 MAC 地址
- BIOS 字符串
- 硬盘UUID
其中一些信息(例如 Windows 系统信息应用程序中显示的 CPU 信息)似乎是从 VM 主机获取的,并通过虚拟机管理程序传递给客户机。
您能告诉我应该调整哪些 Proxmox(或 Qemu/KVM)设置来隐藏(或覆盖或冻结)VM 客户机可见的硬件标识符吗?
在 Proxmox VE 中,您可以设置 Qemu“标识符”的子集,包括以下内容:
dmidecode
实用程序来查看这些信息,我无法为 Windows 推荐一个全面的实用程序。Qemu 能够为其他虚拟设备设置各种数据,但 Proxmox 不会通过其工具公开这种可能性。您仍然可以通过手动编辑VM 配置文件(可用作)来使用它;它的格式非常具有自描述性。例如,您可以按照此处
/etc/pve/qemu-server/<VMID>.conf
所述向硬盘添加序列号:只需附加到驱动器定义即可,即或或,如果您不够了解 VirtIO 带来的性能优势,或。,serial=524352134
scsiN
virtioN
sataN
ideN
您还可以使用 向 Qemu 命令行添加任意参数
args:
;其值将简单地附加到生成的命令行。这是我过去向虚拟机添加虚拟软盘或虚拟 USB 闪存设备的方式,用于依赖“密钥软盘”或“密钥闪存”的软件许可。请注意;之后通过 GUI 进行编辑不会删除您的
args:
,但可能会删除您添加到其他项目的内容。此外,请注意,如果您在自定义添加中引用外部文件,则这些文件将不被视为标准 Proxmox 备份;我曾经陷入过这个漏洞,当时我的虚拟软盘映像(引用自 )args:
没有与虚拟机一起备份。您必须自己单独备份这些文件。您可以通过运行查看它根据配置文件生成的命令行
qm showcmd <VMID>
;这将使您更好地理解 Qemu 命令行是什么样的以及配置文件是如何解释的。