多数の IP が割り当てられたサーバーがあります。各 VM に専用の IP が割り当てられるように、Xen ハイパーバイザーとして設定したいと考えています。現在、複数の IP を設定する方法は次のとおりです。
#IP addresses are examples, actual server has public IPs
auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
network 192.168.1.0
auto eth0:0
iface eth0:0 inet static
address 192.168.1.11
netmask 255.255.255.0
auto eth0:1
iface eth0:1 inet static
address 192.168.1.12
netmask 255.255.255.0
ブリッジングでさまざまなことを試しましたが、正直に言うと、自分で解決策を見つけられる望みは薄れつつあります。Xen で各ドメインに 1 つの特定の IP を使用するにはどうすればよいでしょうか?
答え1
各 VM の IP アドレスは、ホスト マシンではなく VM 自体で構成する必要があります。
各 VM とホストが独自のインターフェースを備えていると考えるとわかりやすいですが、物理ケーブルが出ているのはホストのみなので、ゲスト VM のインターフェースをホストのインターフェースにブリッジする必要があります。
次のように、/etc/networks/interfaces ファイルにブリッジを作成します。
auto lo br0 eth0
iface lo inet loopback
iface br0 inet static
bridge_ports eth0
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.1
これにより、ネットワーク スタックが起動したとき (ブート時など) に新しいブリッジが作成され、インターフェイスが追加され、ブリッジにホストの IP アドレスが割り当てられます。ここでブリッジを確認できます。
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.60a4ecf28d84 no eth0
br0 インターフェイスは、そこに含まれる eth0 インターフェイスと同じように扱うことができます。
ゲスト設定ファイルに次のような行があります。
vif = ['bridge=br0, mac=00:16:3E:12:16:19']
これは、「この VM に仮想インターフェイスを与え、それを br0 ブリッジに追加し、次の mac を与える」という意味です。
ここで MAC アドレスを設定する必要はありませんが、DHCP を使用してゲストに静的 IP アドレスを割り当てることができるように設定することをお勧めします。そうすれば、ホスト (および DHCP サーバー。私の場合は VM 自体) 以外の IP アドレスをハードコードする必要がなくなります。
次に、ゲストで他の Linux マシンと同じように設定します。
auto eth0
iface eth0 inet static
address 192.168.1.11
netmask 255.255.255.0
gateway 192.168.1.1
これは、ゲストマシンのネットワーク構成。
VM を起動すると、ブリッジに 2 つのインターフェースがあることがわかります。
$ brctl show
bridge name bridge id STP enabled interfaces
br0 8000.60a4ecf28d84 no eth0
vif1.0
vif1.0 はゲストの仮想インターフェースです。これで、ゲストはゲートウェイに ping を実行し、ケーブルで直接ネットワークに接続されているかのように通信できるようになります。