netbsd/xen NATモードの domU

bridgeモードではなく、NAT箱の中のdomUを作りたくなった。 domU起動の設定ファイルに

vif = [ 'ip=192.168.0.1, script=vif-ip' ]

と書けばいいらしいのだが、domUを起動してしばらくすると

Error: Device 0 not connected

とエラーを吐いてdomUが消滅する。なじぇ。

ならば、ということで、dom0でもうひとつの bridge I/F を作って、 それに tap I/F をくっつけて解決。隔離Webサーバ用のdomUを作りたかったので 「インタフェース番号は80番じゃろ!」てことで、 dom0で bridge80, tap80 を生成した。/etc/ifconfig.bridge80 を以下のように作成。

create
!ifconfig tap80 create inet 10.1.1.1/24 up
!brconfig $int add tap80 up

tap80を ifconfig.bridge80 の評価時に作ってしまうのがポイント。 この bridge80 をdomUの設定ファイルで、

vif = [ 'bridge=bridge80' ]

などとして利用すれば桶。

で、dom0の方でNATを効かすために /etc/rc.conf に

ipnat=YES

を追加。さらに、/etc/sysctl.conf に

net.inet.ip.forwarding=1

を追加。

/etc/ipnat.confはNATだけ定義。

map re0 from 10.1.1.1/24 to any 0/32

ほんとは pf 使いたかったのだけど、/stand/*/*/modules/pf/pf.kmod のロードのしかたが分からず断念。じゃ、npfか、と思ったけど、 /usr/share/examples/ に見本がなくて断念。

おおお、いま調べて判明。なんと、現時点でxenカーネルではmodload できないらしい。そうなの? がびん。ま、ipfでいっか。