9.6. 随机数字生成器(RNG)设备
virtio-rng
是一个虚拟 RNG(随机数生成器)设备,该设备向客户机虚拟机的操作系统提供 RNG 数据,从而在请求时为客户机虚拟机提供全新的熵。
当使用 RNG 的设备(如键盘)时,鼠标和其他输入不足以在客户机虚拟机上生成足够的熵。virtio-rng 设备可用于 Red Hat Enterprise Linux 和 Windows 客户机虚拟机。有关安装 Windows 要求的步骤,请参阅 注意。除非另有说明,否则以下描述适用于 Red Hat Enterprise Linux 和 Windows 客户机虚拟机。
当在 Linux 客户机虚拟机上启用了
virtio-rng
时,会在客户端虚拟机中创建 chardev,其位置为 /dev/hwrng/
。然后可以打开这个 chardev,并读取从主机物理机器获取熵。为了使客户机应用程序能够透明地使用 virtio-rng 设备的随机性,/dev/hwrng/
中的输入必须转发到客户机虚拟机中的内核熵池。如果此位置中的信息与 rgnd 守护进程合并(位于 rng-tools 中),则可以实现这一点。
这耦合会导致将熵路由到 guest 虚拟机的
/dev/random
文件。这个过程是在 Red Hat Enterprise Linux 6 客户机虚拟机中手动完成的。
Red Hat Enterprise Linux 6 客户机虚拟机与运行以下命令相结合:
# rngd -b -r /dev/hwrng/ -o /dev/random/
如需更多帮助,请运行 man rngd 命令以获得此处所示的命令选项的说明。有关更多示例,请参考 过程 9.11, “使用命令行工具实施 virtio-rng” 来配置 virtio-rng 设备。
注意
Windows 客户机虚拟机需要安装驱动程序
viorng
。安装后,虚拟 RNG 设备将使用 Microsoft 提供的 CNG(下一代)API 工作。安装完驱动程序后,virtrng
设备就会出现在 RNG 供应商列表中。
过程 9.11. 使用命令行工具实施 virtio-rng
- 关闭客户机虚拟机。
- 在终端窗口中,使用 virsh edit domain-name 命令打开所需 guest 虚拟机的 XML 文件。
- 编辑
<devices>
元素使其包含以下内容:... <devices> <rng model='virtio'> <rate period="2000" bytes="1234"/> <backend model='random'>/dev/random</backend> <source mode='bind' service='1234'> <source mode='connect' host='192.0.2.1' service='1234'> </backend> </rng> </devices> ...