QEMU on Fedora8 でブリッジ接続

Fedora8 で、qemuvirt-managerを使ってWindows仮想マシンを作成。

  • CPU:Athron X2 BE-2350
  • MEM:4GB
  • OS :FedoraCore8 (Fedora7からUpgrade) / 2.6.24.5-85.fc8

QEMU仮想マシンは、仮想マシンマネージャ(virt-manager)経由で作成した。
その際、仮想マシンの作成自体は問題なく行えるのだが、NICをブリッジ接続させるのが少々難しい。

ブリッジ接続ではなく、仮想ネットワーク接続(仮想LAN+NAT)であれば仮想マシンマネージャで簡単にできそうだが、ブリッジ接続は(brctlコマンドなどを使って)色々と手間がかかりそうだ。
そこで思いついたのが
xenのブリッジ接続用スクリプトを利用して、qemu仮想マシンをブリッジ接続する」
という方法。で、さっそくチャレンジ。

まず、以下のものをインストールする。

Xenはインストールするものの、そのサービス自体は使用しない。
使用するのは「/etc/xen/scripts/network-bridge」あたりだけなので、Kernelは(xen-kernelではない)通常のKernelで起動すること。
んでもって、/etc/init.d/xen-bridge を以下のような内容で作成。

#!/bin/bash
#
# xen-bridge    Script to start and stop the Xen-Bridge.
#
# chkconfig: 2345 98 01
# description: Starts and stops the Xen control daemon.
### BEGIN INIT INFO
# Provides:          xen-bridge
# Required-Start:    $network
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start:     3 4 5
# Default-Stop:      0 1 2 6
# Default-Enabled:   yes
# Short-Description: Start/stop xen-bridge
# Description:       Starts and stops the Xen-bridge.
### END INIT INFO

start() {
        echo "Starting xen-bridge script"
        /etc/xen/scripts/network-bridge start
}

stop() {
        echo "Stopping xen-bridge script"
        /etc/xen/scripts/network-bridge stop
}

RETVAL=0
case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart)
        stop
        start
        ;;
  *)
        echo $"Usage: $0 {start|stop|restart}"
        exit 1
esac

exit $RETVAL

んでもって「chkconfig --add xen-bridge」とかして自動起動するようにしておく。
おそらく「network」サービスより後に起動する必要があるので、起動は98、終了は01とした(networkはそれぞれ10と90)。
設定が終わったら、Fedoraを再起動。設定が誤っている場合は、ssh等でリモート接続できなくなるので注意。
なお、xendやxendomainのサービスは停止しておいても構わない。

で、再起動が完了したとする。そこで ifconfig -a 等を実行すると「eth0」と「peth0」が作成されていることが確認できる。
通常、1つめのNIC「eth0」は、論理的なIFも物理的なIFも意味合い的に含む(と思っている)が、xen-bridgeが起動すると論理IFは「eth0」、物理IFは「peth0」と分離されるらしい(eth0がpeth0にブリッジ接続しているイメージ。多分・・・)。
この状態であれば、Virt-Managerによりqemu仮想マシンを作成する際に、NICとして「eth0」を接続して、peth0へブリッジ接続することができる。具体的には、仮想マシン作成ウィザードの「ホストネットワークに接続」の項で、共有物理装置として「peth0」を選択することができるようになる。

なお、仮想マシンNICには(peth0と一致しない)適当なMACアドレスを設定しておくのがよいかも。