jail のあれこれ

あけましておめでとうございます。
本年もよろしくお願いします。

さて、前回 qjail の話題を取り扱いましたが、今回はjail を使う上で、時々出る問題と解決法についてです。

qjail というより、jail 全般ですが、特にネットワークがらみで低レイヤーを触ろうとすると、動かない場合があります。
たとえば、ISC DHCPD を動かそうと思うと、 bpf が見つからなくて起動できません。
これは devfs のルールセットを書き換えることで対応できます。

まず最初に、jail を動かす親環境に /etc/devfs.rules を作り、中を以下のようにします。

[devfsrules_jail_bpf=5]
add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login
add path 'bpf*' unhide

つぎに
# qjail config -b [ルール番号] [jail名]
で、動くはずなのですが、動かないので
/usr/local/etc/qjail.local/ の下にある [jail名]というファイルを開いて
rules の行を先ほど作ったルール番号5に変更します。

そして qjail start すれば bpf が見えるようになります。

また、zabbix や postgresql のように sysvipc が必要なもののばあい、
親環境で、
# sysctl security.jail.sysvipc_allowed=1
しておく必要があります。また、再起動しても設定されるように /etc/rc.conf に
jail_sysvipc_allow="YES"
を追加しておきます。

qjail 環境の中で、 icmp が使いたい場合は、
# qjail config -k [jail名]
で、使えるようになります。ping や traceroute する際に必要になります。

--未解決--
jail 環境内で、 iaxmodem を動かす方法が未解決です。
上記の devfs.rules でどうにかなりそうだと思ったのですが、どうにもなりませんでした。
とりあえず、親環境で動かすということでしのいでいますが、なにかすっきりしません。
ご存知の方がいらっしゃいましたら教えてください。