Xenで1台でルータ・DMZ・ファイアウォール・内部クライアントを構築
仕事でやったネタだけど、こっちで紹介。次の勉強会まで時間空いてるし。dom0にはNetBSDを使用。dom0自体は内部クライアントネットワークからしか見えなくする。
つまり
[外部ネットワーク]−[FireWall]−[Client] | [DMZ]
となる。このマシン3台を全てXenのdomUで提供する。つまり究極のリッチサーバ(わら
参考にしたサイト:http://www.akaumigame.org/document/netbsd_xen.html
1)Xenのインストール
/usr/pkgsrc/xentools20
をインストールする。この後、
/usr/pkgsrc/xenkernel20
をインストールする。これでdom0カーネルがダウンロードされる。
2)grubのインストール
/usr/sysutils/grubをインストールして、grub-installでルートファイルシステムを持っているディスクにgrubをインストールする。なお、grubのコマンドなどは/grubにインストールされる。
3)カーネルのコピー
/usr/pkg/xen-kernel/xen.gz
4)menu.lstの作成
grubの設定ファイル、/grub/menu.lstを作成する。
default 0 timeout 30 title Xen kernel (hd0,0,a)/grub/xen-2.0.6.gz dom0_mem=131072 module (hd0,0,a)/grub/netbsd-XEN0.gz console=pc
4)デバイスファイルの作成
cd /dev; sh MAKEDEV xen
5)再起動
ここでmenu.lstの設定間違えて起動しなくなってしまった。しょうがないのでFreeSbie落としてきてこれから起動して設定ファイル修正。
NetBSDのFTPサイトの配布物からnetbsd-XEN0.gzを拾ってきてmoduleとして指定したけど起動しない。ので、またもやFreeSbieから起動して、gunzipでカーネルを展開してみる。なので
module (hd0,0,a)/grub/netbsd-XEN0 console=pc
こうなる。これで起動したが、途中のRAID検出で固まった。
色々試してみたところ、VMWareの設定で、IDEとして作成したイメージファイルをSCSI扱いでmountしていたのがどうも怪しい。IDEに変更してそのまま起動。シングルユーザで
mount -rw /dev/wd0a /
して、/etc/fstabを修正してやっと起動。xendも立ち上がった。長かった・・・
6)domUで使用するディスクの作成
今回はdomUのOSとしてもNetBSDを使用する。また、バックアップ時の事を考えて、パーティションではなくディスクのイメージファイルを使用する。ddで空ファイルを作成する。
dd if=/dev/zero of=nbsd1.img bs=1m count=5196 (5GBのドライブ作成)
NetBSDのインストールCDをVMWare内にFTPで取り込む。
/usr/sbin/vnconfig -c vnd1 i386cd-3.0.iso
これをmountするのも微妙にはまった。正解は
/sbin/mount -t cd9660 /dev/vnd1a /mnt
なのです。や、Xenで使う分にはmountしないでいいんだけど。
7)xen設定ファイル作成
/usr/pkg/etc/xen/nbsd1として作成する。とりあえず動作させようと思ったので、ネットワーク無しで作ってみた。
kernel = "/grub/kernel/netbsd-INSTALL_XENU" memory = 128 name = "nbsd1" cpu = -1 nics = 1 vif = [ 'mac=aa:00:00:50:02:f0, bridge=bridge0' ] disk = [ 'file:/usr/pkg/etc/xen/i386cd-3.0.iso,cd0a,r', 'file:/usr/pkg/etc/xen/nbsd1.img,wd0d,w' ] root = "/dev/wd0d"
とりあえずNICは適当に。CDからインストールしてから、後で設定しよう。
8)NetBSDインストール
xm create nbsd1
で起動してインストールへ。CDのデバイス名がデフォルトでcd0aになってるので、これはxbd1に変更する必要がある。ちなみにdisk=で先に書いたほうがxbd1になって、後のほうがxbd0になる変な仕様。
9)ネットワーク
簡単に書くと、
ブリッジ作成->domU起動->dhclientでIP取得。
# brconfig bridge0 add pcn0 add xvif9.0 up
でブリッジ作成して、domUを起動した後にdhclientでDHCPでのアドレスを取得出来た。
間違ってるとこ一杯あると思うしまだ目的に到達してないけど、とりあえず記載。