一部の仮想マシンをVNCディスプレイタイプからSPICEに切り替えています。
VNCディスプレイタイプは、to=
QEMUが定義された範囲の最初の空きポートを自動的に使用できるようにする非常に便利なパラメータを提供します。
-display vnc=127.0.0.1:0,to=100
ここで、QEMU は、新しい VNC ディスプレイサーバーごとに 5900 ~ 6000 のポートを使用します。
SPICEディスプレイでこれを達成するための最もクリーンな方法は何ですか(しかし私はlibvirtを使用していません)?
現在、私はnetstat
grepの出力をテストして、未使用のポートを見つけて次に渡すスクリプトを書いています。
-spice addr=127.0.0.1,port=${unused_port}
競争条件を除いて、VNCと比較してこのアプローチはやや醜いと考えられます。 ~からQEMU マンページ非常に徹底していないようですが(to=
たとえば、VNCパラメータは言及されていないようです)、SPICEに対応するパラメータがあるかどうか疑問に思います。
答え1
(現在)QEMUにSPICEの次の無料ポートを選択させることはできません。これは実装の詳細が原因で発生します。 QEMU使用これspice_server_settings_port数値パラメータのみが許可されます。
今できる最善の方法は、QEMUの外部からポート番号を選択して、今のように割り当てることです。
これがあまりにも厄介な場合は、DNSを使用して最初に利用可能な無料のIPアドレス+ポートにバインドすることを検討してください。これSPICEサーバーコード各アドレスは成功するまで試行されるため、local.test
127.0.0.1、127.0.0.2、127.0.0.3などにマッピングすると、成功するまで各インターフェイスにバインドしようとします。悪く聞こえますが便利です。この方法は、ワイルドカードアドレスの同じポートを受信する他のサービスがない場合にのみ使用できます。
答え2
私はこれが古い質問であることを知っていますが、人々はまだより良い解決策を探していると信じています。ここにいる:
Qemuの設定-spice port=5900,addr=127.0.0.1,disable-ticketing=on
次に iptables を使用します。iptables -t nat -I PREROUTING -p tcp --dport 5900 -j DNAT --to 127.0.0.1:5900
vncなどを邪魔したくない場合は、特定のインターフェイスに制限したり、ソースポートを変更したりできます。
ついにsysctl net.ipv4.conf.all.route_localnet=1
この構成により、すべてのサーバーのIPアドレスを使用してSPICEに接続できます。