web-dev-qa-db-ja.com

qemuの「br0」デバイスのDHCPを有効にする方法は?

私は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ドライバーは正しくインストールされます。)

2
Boda Cydo

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を定義し、一貫した構成を作成するのも簡単です。 、および一般的にリソースを管理します。

virshvirt-installqemu-imgの組み合わせを使用して、CLI経由でこれを管理できます。 oVirtやVirtual Machine Manager(virt-manager)など、libvirtを管理するために代わりに使用できる他の多くのグラフィカルフロントエンドがあります。

3
Spooler