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でいっか。