libvirtd - 既存のブリッジを使用するための VPS の取得

libvirtd - 既存のブリッジを使用するための VPS の取得

CentOS 6.4でKVMを動作させようとしていたのですが、行き詰まってしまいました。VPSが接続するためのブリッジの設定に関するオンラインドキュメントをいくつか読み、手動で必要な変更を試みた後、ようやく次のことに気付きました。この記事これはそれを自動的に行う方法を示しています:

virsh iface-bridge eth1 br0

今、私brctl showは次の結果を得ました:

bridge name     bridge id               STP enabled     interfaces
br0             8000.001b78bb915a       yes             eth1

これまでのところ、すべて順調です。私のドメイン構成では、次のネットワーク構造になっています。

<interface type='network'>
  <mac address='52:54:00:a3:dd:2c'/>
  <source network='br0'/>
  <model type='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

しかし、ドメインを起動しようとすると、次のエラーが引き続き発生します。

error: Failed to start domain service-a-2
error: Network not found: no network with matching name 'br0'

さらに調べてみると、次のコマンドを発行することでハイパーバイザーで利用可能なネットワークを一覧表示できることがわかりました。

$ ->  virsh net-list --all

しかし私の場合は空です。この記事これは既存のブリッジを使用するための設定方法を示しています。私の設定は次のようになります。

<network>
  <name>br0</name>
  <forward mode="bridge"/>
  <bridge name="br0" />
</network>

を介してハイパーバイザーに追加しましたvirsh net-define /tmp/br0.xml。その後、ネットワークとドメインを開始しましたが、ifconfigコマンドを発行すると vnet0 エントリが表示されます。

vnet0     Link encap:Ethernet  HWaddr FE:54:00:A3:DD:2C
inet6 addr: fe80::fc54:ff:fea3:dd2c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

これは意味がありません。ドメインは既存の br0 ブリッジを使用するべきではないでしょうか? ハイパーバイザーによって開始されるすべての VPS に対して、新しい vnetX トンネル(?) が作成されますか?

答え1

これは完全に理にかなっています。ブリッジを設定すると、何も接続されていないダミーのブリッジ デバイスが作成されます (brctl showその下に NIC は表示されません)。

ブリッジを物理インターフェイスに接続すると、ブリッジに接続されたインターフェイスの 1 つとして表示され、実際のトラフィックが通過しますが、これはブリッジのインターフェイスの 1 つにすぎません。VM を起動するとタップ デバイスが表示されます。タップ デバイスもスイッチに接続する必要があります。これにより、スイッチは 2 つのインターフェイスを持つことができ、2 つのインターフェイス間でトラフィックを移動できます。ブリッジは、VM が接続され (タップは vnet0 デバイス)、実際の NIC も接続されるネットワーク スイッチと考えてください。このブリッジにはさらに多くの VM を接続できます。そのすべてのトラフィックは、ブリッジに接続された物理 NIC を介してネットワークに送信されます。

関連情報