QEMU でゲスト オペレーティング システムの IP アドレスを決定する方法は?

QEMU でゲスト オペレーティング システムの IP アドレスを決定する方法は?

qemu で Windows XP を起動すると、DHCP サーバーから IP が割り当てられます。質問は、Windows XP に接続できるように、Windows XP に割り当てられた IP をどのように確認すればよいかということです。

私のセットアップの詳細は次の通りです:

tun0 インターフェイスで実行していますdnsmasq。10.10.10.0/24 の範囲から IP を割り当てるように設定しました。qemu-net tunに使用します。複数の Windows XP ゲスト インストールを実行しているため、静的 IP アドレスは使用できません。

答え1

一般的なアプローチは、Qemu ゲストエージェント特定のコマンドを実行すると、ゲストネットワークの取得インターフェースネットワーク設定を取得します。

これを機能させるには、まずゲスト エージェント ソケットを VM 構成に追加する必要があります。Qemu は次のように実行する必要があります。

qemu-system-x86_64 ... \
 -device virtio-serial,id=qga0 \
 -device virtserialport,chardev=qga0,name=org.qemu.guest_agent.0 \
 -chardev socket,path=base.qga,server=on,wait=off,id=qga0 \
...

base.qgaこれにより、現在のディレクトリにソケット ファイルが作成されます。その後、 を使用してこのソケットに接続できますsocatが、利便性 (コマンド ライン編集と履歴) のために、 で囲むことをお勧めしますrlwrap

rlwrap socat STDIO UNIX:base.qga

ゲスト OS には、シリアル VirtIO (準仮想化) ドライバーとゲスト エージェント サービスをインストールする必要があります。これらは両方とも、virtio ドライバー ISO イメージの形式で提供されます。これは、Fedora VirtIO Windows ドライバー プロジェクトから取得できます。Linux OS では、すべての主要ディストリビューションの配布リポジトリで入手できます。または、Qemu ソースから自分でビルドすることもできます。

ゲスト エージェントは、ホスト (ハイパーバイザー) と VM 間の通信を行う強力な手段です。他の仮想化テクノロジでも、同様の統合機能 (VMWare Additions、VirtualBox Additions など) のためのエージェントが提供されています。Qemu ゲスト エージェントを使用すると、ゲストに関するさまざまな情報を取得できるだけでなく、ゲスト内でコマンドを実行して設定することもできます。Debian と Qemu をベースとする Proxmox VE も、ゲスト エージェントを使用して、バックアップを取る前にディスクをフリーズしたり、その他のエンタープライズ グレードの機能を実行したりします。

答え2

dnsmasq のリースのリストは、設定オプション で指定されたファイルに保存されますdhcp-leasefile。アップストリーム バージョンの場合、デフォルトの場所は です/var/lib/misc/dnsmasq.leases

答え3

起動するとホスト名がわかります。それを使って (もちろん適切に設定された) DNS を照会します。結局のところ、これは DNSmasq です。

関連情報