Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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

  1. 关闭客户机虚拟机。
  2. 在终端窗口中,使用 virsh edit domain-name 命令打开所需 guest 虚拟机的 XML 文件。
  3. 编辑 <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>
      ...