仮想ブリッジをセットアップし、10.0.3.1/16
と10.0.3.2/16
の2つの静的IPを構成しました。
ホストはUbuntu18.04 LTSであり、この投稿の時点で最新です。
VM 110.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>
VM 210.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
VMごとに異なるIPを使用し、同じ5900ポートを使用したいのですが、ポートが既にバインドされている(つまり、異なるアドレスにある)というエラーが表示されます。
同じポートを別のアドレスで使用するにはどうすればよいですか?
Libvirtのバグのようです。リッスンアドレスを考慮せずに、0.0.0.0
を使用してポートの競合をチェックします。
おそらく、qemuコマンドラインパススルーを使用して、libvirtが参照しない有効な-spice
引数をqemuに渡すことで回避できます。あまり友好的ではありませんが、何かを機能させたいだけの場合はオプションです