背景信息
在主机上
我有一个虚拟网桥设置,并配置了两个静态 IP:10.0.3.1/16
和10.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 来解决此问题。不是很友好,但如果你只是想让某些东西发挥作用,这是一个选择