XenでDomainUにネットワークを追加する方法


色んなサイトでも紹介されてるけど、ちょっと長ったらしくてめんどそうだったり、
実際うまく行かなかったりするので、自分がうまく行ったときの方法をご紹介。

以下は物理NICを追加するわけではなく、dummyのネットワークをDomain0に追加して、
DomainUでeth0(物理NICにくっつく)とeth1(dummyにくっつく)を使用する例です。
dummyでなく、物理NICでも応用できるので適宜読み替えてください。

まず、”/etc/modprobe.conf”に以下行を追加してDomain0を再起動。

# vi /etc/modprobe.conf
alias dummy0 dummy
options dummy numdummies=1

再起動後にifconfigすると、dummyのネットワークが見えてるはず。

# ifconfig | grep dummy
dummy0    Link encap:Ethernet  HWaddr XX:XX:XX:XX:XX:XX

次に、”/etc/xen/scripts/”以下に適当な名前のファイルを作って、こんな感じに記述します。

# vi tekitou
#!/bin/sh
dir=$(dirname "$0")
"$dir/network-bridge" "$@" vifnum=0 netdev=eth0
"$dir/network-bridge" "$@" vifnum=1 netdev=eth1

※ vifnumの意味は、xenbr(Domain0上の仮想スイッチ)の番号
  netdevは、xenbrに対応するDomainUからみえるNICの名前

そして、xendの設定ファイル、”/etc/xen/xend-config.sxp”で読み込むネットワーク構成参照ファイルの部分を、今作ったファイル名に変更。

# vi /etc/xen/xend-config.sxp
(network-script network-bridge)
  ↓
(network-script tekitou)

最後に、各DomoinUの設定ファイル(”/etc/xen/”以下にあるよ)のvifの部分を、こんな風に書き換えます。

vif = ["bridge=xenbr0","bridge=xenbr1"]

これでDomainUを起動すれば、あとはDomainU内のeth0とeth1を設定&起動すれば繋がります。
ちなみに、eth1側にdummyネットワークがくっつくから、dummyネットワークで外部には繋がらないので注意!!

<2011.2.19追記>
仮想マシンに対するインターフェイスの記述に関してですが、macアドレスを記載しないと、仮想マシンを起動する度に新しいmacアドレスがランダムに振られてしまいます。

これでは仮想マシンから見ると毎回新規のインターフェイスを追加したかのように見えてしまい、そうなると、もともとの仮想マシンのeth0や、eth1が、eth0.bakやeth1.bakになり、新規のeth0とeth1が出来てしまい、仮想マシンの起動の都度、インターフェイスの設定をしなければならない事態に陥ります。

これを避けるためには必ずmacアドレスを以下のようにして追加します。

vif = ["mac=00:XX:XX:XX:XX:XX,bridge=xenbr0","mac=00:XX:XX:XX:XX:XX,bridge=xenbr1"]
(XXの部分は任意の数字)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です