私はWindows XP=イメージを作成し、それをqemuで起動しています。qemu-bridge-helper
を使用してネットワークをセットアップしています。qemuのチュートリアルに従って、/ etcを構成しました/qemu/bridge.confは、br0
ブリッジデバイスを許可します。
これは私がWindowsを起動する方法ですXP qemuで:
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アドレスを提供していないためです。
私の質問は-DHCP経由でwinxpにアドレスを与えるように「br0」を構成するにはどうすればよいですか?
(-Net User
を介して「ユーザーモードネットワーク」を使用する場合、WindowsはIPを割り当てられるため、Windowsドライバーは正しくインストールされます。)
br0は、レイヤー2ネットワーキングの抽象化です-基本的には仮想スイッチです。ハイパーバイザーでDHCPサーバーを実行している場合は、DHCPサーバーが指している(ハイパーバイザー自体で)br0インターフェースにIPアドレスを割り当て、DHCPサーバーでレイヤー3のネットワークと一致するサブネットを定義します。適切な範囲でアドレスを指定すると、他のデバイスがなくても機能します。
ただし、ブリッジインターフェイスを使用する場合、ほとんどの場合、接続しているブロードキャストドメインにはすでにDHCPサーバーが存在します。 br0はスイッチとして機能するため、トラフィックはゲストに渡されます。問題の説明から、ほとんどの問題を解決する構成例を提供できます。
インターフェイスをスタックするときは、OSIモデルを尊重する必要があることに注意してください。つまり、ブリッジなどのレイヤー2の抽象化を作成する場合、その下にレイヤー3のアドレスを指定することはできません。それは単に機能しません。ブリッジはスイッチとして機能するため、ブリッジ自体にIPアドレスを割り当て、リンク層の容量でのみ他のインターフェースを接続します。これには、VMの仮想インターフェイスと、外部ネットワークをVMとハイパーバイザーにブリッジする物理インターフェイスが含まれます。
この構成では、eth0がbr0に接続され、br0がアドレスを取得します。 VMはbr0に接続し、DHCPサービス(ハイパーバイザ上にあるか、同じレイヤ2ドメイン上の外部にあるかに関係なく)がVMにアドレスを提供します。
# cat /etc/network/interfaces
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet dhcp
bridge_ports eth0
これは、br0のアドレスを取得するためにDHCPを使用していることを前提としています。そうでない場合、静的アドレス指定をbr0インターフェイスに適用する必要があります。
これが完了したら、ネットワークを再起動する必要があります(# systemctl stop networking && systemctl start networking
)。これによりリンクが切断されるため、構成が失敗した場合にマシンにアクセスするためのOOBメソッドが必要になります。正しい場合は、サービスの開始後にSSH経由で再接続できるはずです。ロックアウトされるのは非常に簡単なので、この種のタスクではOOB経由でマシンにアクセスできることが非常に重要です。
または、推奨
これは本当にlibvirtが処理する仕事です。 libvirtを使用すると、組み込みのNATネットワーキングを外部からアクセスする必要がなく、インターネットにアクセスする必要があるVMに簡単に使用できます。VMを定義し、一貫した構成を作成するのも簡単です。 、および一般的にリソースを管理します。
virsh
、virt-install
、qemu-img
の組み合わせを使用して、CLI経由でこれを管理できます。 oVirtやVirtual Machine Manager(virt-manager
)など、libvirtを管理するために代わりに使用できる他の多くのグラフィカルフロントエンドがあります。