如何使用 libvirt 中的 SPICE 监听同一端口、单独的地址?

如何使用 libvirt 中的 SPICE 监听同一端口、单独的地址?

背景信息

在主机上

我有一个虚拟网桥设置,并配置了两个静态 IP:10.0.3.1/1610.0.3.2/16

主机是 Ubuntu 18.04 LTS,在撰写本文时是最新的。

对于虚拟机

虚拟机1设置为侦听10.0.3.1端口5900。当我 时sudo virsh start vm1,它会正确启动并且我可以连接到它。

它的 libvirt 配置如下所示:

    <graphics type='spice' port='5900' autoport='no' listen='10.0.3.1'>
      <listen type='address' address='10.0.3.1'/>
      <image compression='auto_lz'/>
    </graphics>

虚拟机2设置为侦听10.0.3.2端口5900

    <graphics type='spice' port='5900' autoport='no' listen='10.0.3.2'>
      <listen type='address' address='10.0.3.2'/>
      <image compression='auto_lz'/>
    </graphics>

当我sudo virsh start vm2收到错误时:

error: Failed to start domain vm2
error: internal error: Failed to reserve port 5900

sudo netstat -nltp显示以下内容:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 10.0.3.1:5900           0.0.0.0:*               LISTEN      32092/qemu-system-x

我需要什么?

我想为每个虚拟机使用不同的 IP,并使用相同的 5900 端口,但我收到这些错误,指出该端口已绑定(确实如此,只是在不同的地址上)。

我怎样才能让它使用相同的端口但在不同的地址上?

答案1

看起来像一个 libvirt 错误。它使用 检查端口冲突0.0.0.0,而不考虑侦听地址。

-spice您可以通过使用 qemu 命令行传递将libvirt 不会查看的有效参数传递给 qemu 来解决此问题。不是很友好,但如果你只是想让某些东西发挥作用,这是一个选择

相关内容