web-dev-qa-db-ja.com

同じポートでリッスンする方法、libvirtからspiceを使用してアドレスを分離しますか?

背景情報

ホスト上

仮想ブリッジをセットアップし、10.0.3.1/1610.0.3.2/16の2つの静的IPを構成しました。

ホストはUbuntu18.04 LTSであり、この投稿の時点で最新です。

VMの場合

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ポートを使用したいのですが、ポートが既にバインドされている(つまり、異なるアドレスにある)というエラーが表示されます。

同じポートを別のアドレスで使用するにはどうすればよいですか?

1
Michael

Libvirtのバグのようです。リッスンアドレスを考慮せずに、0.0.0.0を使用してポートの競合をチェックします。

おそらく、qemuコマンドラインパススルーを使用して、libvirtが参照しない有効な-spice引数をqemuに渡すことで回避できます。あまり友好的ではありませんが、何かを機能させたいだけの場合はオプションです

1
Cole Robinson