qemu でゲスト OS がインターネットにアクセスできるようにするにはどうすればいいですか?

qemu でゲスト OS がインターネットにアクセスできるようにするにはどうすればいいですか?

Windows XP イメージを作成し、qemu で起動しています。 経由で「ユーザー モード ネットワーキング」を使用すると-net user、ゲスト OS (Windows XP) に 10.0.2.15 IP が割り当てられ、10.0.2.2 に ping できるので、Windows ドライバーが正しくインストールされます。

残念ながら、他には何もアクセスできません。チュートリアルを読んでみると、「ユーザー モード ネットワーキング」では接続がインターネットに転送されず、TAP デバイスまたはブリッジ デバイスのいずれかを使用する必要があることがわかりました。

私はこれらのデバイスに詳しくなく、チュートリアルは非常にわかりにくく複雑です。

チュートリアルの 1 つで、qemu-bridge-helper を使用するように提案されました。/etc/qemu/bridge.conf を設定して br0 ブリッジ デバイスを許可し、 経由で br0 デバイスを作成しましたbrctl addbr br0

私はチュートリアルに従って、次のように WinXP を起動しました。

qemu-system-x86_64 --enable-kvm -m 2048 \
  -drive file=winxp.img,if=virtio \
  -net nic,model=virtio \
  -net bridge,br=br0

イメージは正常に起動しますが、IP アドレスを取得できません。原因は、Windows が DHCP を使用するように設定されているものの、「br0」は単なるブリッジ インターフェイスであるため、DHCP アドレスを提供していないことです (何らかの形で tap0 に関連付けられていますが、それが何を意味するのかはわかりません)。

私の質問は、DHCP 経由で Wi​​nXP にアドレスを与えるために「br0」をどのように構成するかということです。tap0 インターフェイスで DHCP サーバーを実行する必要がありますか? br0、tap0、eth0 はどのように関連していますか? (eth0 は静的 IP インターフェイスであり、唯一のインターネット インターフェイスです。)

2 番目の質問は、ゲスト OS への簡単なインターネット アクセスを許可するようにこれらすべてを構成するより簡単な方法があるかどうかです。

答え1

2 番目の質問は、ゲスト OS への簡単なインターネット アクセスを許可するようにこれらすべてを構成するより簡単な方法があるかどうかです。

単純なインターネットアクセスのために手動で設定する必要はありません(少なくとも、そうすべきではありません)。QEMUが自動的に処理します。ICMPプロトコル( で使用ping)をサポートしていない、外部ネットワークから見えない、同じ方法で動作する他の仮想マシンと通信できないなどの制限がありますが、単純な使用には十分機能します。アーチウィキ詳細については。

答え2

コマンドの後、新しいブリッジを実際のネットワーク インターフェイス (インターネットに接続されているbrctl addbr br0ものなど) に接続する必要があります。それには次のコマンドを使用します。eth0brctl addif br0 eth0

関連情報