QEMUブリッジネットワーク接続環境

QEMU標準のネットワーク接続タイプには次の2種類あります。
・ユーザーモード(userモード) ※ゲスト側IPアドレスは10.0.2.x
・TAPモード ※ゲスト側IPアドレスは192.168.0.x
これらはいずれもホスト側の物理ネットワークと同じネットワークアドレス体系をゲスト側に適用することはできません。
しかしNetBSDの場合はbrconfigというコマンドが標準で組み込まれており、
そのbrconfigを利用すれば特別なパッケージを導入することなくNetBSDのQEMU環境で手軽にブリッジモードが使用可能となります。
※ブリッジモードとはゲストOSがホスト側の物理ネットワークと同じネットワークアドレス体系が使えるネットワーク接続タイプを指します。

VMware, Virtual PC, Xen等ではブリッジモードを標準でサポートしています。
一般的にレガシーOSを実行させるにはQEMUが適していますがどのプラットフォームのQEMUがよいか迷うところです。
もしレガシーOSでブリッジモードを使用したいのであればNetBSD環境のQEMUがお奨めかと思います。

ここではNetBSD 5.0をホストOSにした場合のQEMUブリッジネットワーク接続環境の構築手順について紹介します(TAPの応用)。
尚、ご参考扱いでLinuxでのQEMUブリッジネットワーク接続環境構築例についても触れます。


1.マシン環境


2.ホストOS側でのQEMU導入

ホストOSはNetBSD 5.0でXenも利用できています(詳細:Xen 3.1.4(NetBSD 5.0 on Netbook編))。
pkgsrcは導入済みとして以下のコマンドでQEMUをインストールします。
# export PKG_PATH=ftp://ftp4.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/5.0/All
# pkg_add qemu-0.9.1nb1.tgz


3.ホストOS側でのbridgeネットワーク構築

通常のNetBSDカーネルでブートし、以下のコマンドでbridgeネットワークを構築します。
Xen 3.1.4(NetBSD 5.0 on Netbook編)で紹介した/etc/ifconfig.bridge0は不要です。
# sysctl -w net.inet.ip.forwarding=1 ※これは省略可能です。
# ifconfig bridge0 create
# brconfig bridge0 add re0
# ifconfig bridge0 up

更にQEMU用のtapスクリプトを以下のようにして作成しておきます。
# vi /etc/myqemu-ifup
以下の3行を記述します。
#!/bin/sh
/sbin/ifconfig tap0 0.0.0.0 up
/sbin/brconfig bridge0 add tap0
# chmod 755 /etc/myqemu-ifup

4.ゲスト側でのbridgeネットワーク利用

bridgeネットワーク利用のゲスト起動のためには次のコマンドを実行します。
qemu -m 512 -hda Guest.img -net nic -net tap,ifname=tap0,script=/etc/myqemu-ifup

ゲスト側のDHCPでのIPアドレス取得ではホスト側物理ネットワーク上にあるDHCPサーバからIPアドレスが割り当てられます。
QEMU標準のTAPモードでの192.168.0.xという体系のIPアドレスではありません。
※ゲスト側で物理ネットワーク上のスタティックなIPアドレスを使用することもできます。

下記はゲスト側からインターネットに向けてping実行確認した様子です。
※ゲストOSはUbuntu 8.10 Server(JeOS)でXen 3.3(Fedora 10 Preview版付属Xenner編)で利用したvmu810jeosです。



[補足]
(1)bridgeネットワークですので物理ネットワーク上の他のマシンからこのQEMUゲストにssh接続したり、http接続したりできます。
(2)全く同じ手順でVMware Server上のNetBSD 5.0においてもQEMUブリッジネットワークが使用できます。
但し、VMware Server環境の場合は上記で示した「brconfig bridge0 add re0」の部分は「brconfig bridge0 add pcn0」とします。


5.NetBSD 5.0のQEMU 0.9.1ネットワーク制約事項

NetBSD 5.0のQEMU 0.9.1にはNE2000のISAカードをエミュレートできないという制約があります。
QEMUコマンドで「model=ne2k_isa」を指定すると指定メモリ量に関係なく「Memory fault (core dumped)」が発生します。
このためNE2000のISAカード用ドライバを使用するWindows 3.1はネットワーク接続不可のスタンドアロン実行となります。
尚、「-std-vga」の指定はできるのでGUI操作自体は可能です。
QEMUでのWindows 3.1 スタンドアロン実行例
※起動コマンド:qemu -M isapc -m 48 -hda qemuw31-flat.vmdk -std-vga


6.ゲストOSをVine Linux 5.0としたbridgeネットワーク適用例

QEMUのゲストOSとして2009年8月24日にリリースされたVine Linux 5.0を使用し、かつbridgeネットワークを適用してみました。

7.ご参考1:Linux(Ubuntu 8.04)でのQEMUブリッジネットワーク接続環境

Linuxでも一般的によく知られている方法でQEMUブリッジネットワーク接続環境を構築できます。
但しNetBSDより若干操作しづらい面があります。
ここではUbuntu 8.04をホストOSとした場合のQEMUブリッジネットワーク接続環境の構築手順例を紹介します。

8.ご参考2:Linux(Vine Linux 5.0)でのQEMU用ブリッジネットワーク接続環境

Vine Linux 5.0は標準では/dev/net/tunを備えていません。
しかしVirtualBox 1.3.8 for Linuxで示した方法と同じ要領でQEMU用のブリッジネットワークも構築できます。