FreeBSD Daily Topics

2008年12月2日≪注目≫マルチIP・IPv4 IPv6混在・IPを指定なし動作を可能にするJail機能登場、大雑把ながらもCPUリソース制御機能も

heads-up

Multi-IPv4/v6/no-IP Jails

current - Jail開始時にインターフェースにIPを設定したり、複数のIPv4/IPv6に設定可能なネットマスクを設定するといった記述がよりいっそう曖昧になってしまうという難点はあるものの、待望のマルチIP・IPv4 IPv6混在・IPを指定しないといったJail構築を可能にするパッチが8-CURRENTに取り込まれました。ただし心配する必要はありません。Jailごとに単一のIPしか割り振っていないとか、これら新しい機能を使わない場合、従来の設定を変更する必要なくそのままJailを使えるように互換性は保たれています。

複数のIPやIPv4とIPv6を混ぜたアドレスを使いたい場合、次のようにカンマで区切ってコマンドを実行したりrc.confファイルを記載します。

例1
jail / example 192.0.2.250,2001:db8::75,2001:db8::99,2001:db8::55,2001:db8::14,192.0.2.254 /bin/sh
例2
jail_example_ip="192.0.2.2,2001:db8::2,2001:db8::1,2001:db8::4,2001:db8::13,192.0.2.3"

IPを割り振らない場合は空の引数をコマンドラインで渡します。

例3
jail / noip.example.net "" /bin/sh

また、-nオプションを使うことでJailに対して名前を設定することもできます。

例4
jail -n "bz's private noip jail" / noip.example.net "" /bin/sh

名前はただの文字列として処理されます。また複数のJailが同じ名前を持っていても問題はありません。Jailの内部では名前は変更されていません。ただし複数に同じ名前がつけられているような状況では、jexecで名前を指定しても動作しません。

例5
jexec -n "bz's private noip jail" "" /bin/sh

そのほか新しい機能として、Jailのホスト名をIPアドレスに変換してJail IPに取り込むためのオプション-hが新しく追加されています。これはプライマリJail IPに対して予期しない結果を招く可能性もあるため利用には十分に注意してください。

新しいjlsは可能なかぎり後方互換性を維持するように動作します。つまりjlsとして呼ばれた場合、IPv4のみを表示します。IPを設定していない場合やIPv6のみを使っている場合には都合がよくないわけですが、後方互換性を考慮した動きというわけです。jls -avでフルに情報が表示されます。状態やcpusetなどの情報が出力されます。Jailはプロセスのcpusetを引き継ぎますが、これはcpuset(8)で設定することができます。うまく組み合わせると仮想化とリソース制限が可能になります。

今回追加されたこれら機能はJailの適用範囲を広げることになる強力な機能です。コア割り当ての設定をあとから変更できるようになったことで、大雑把ながらもプロセスリソース制限ができるようになったことになります。可能であれば、この変更はFreeBSD 7.2-RELEASEまでには7系にもマージされる見通しです。

おすすめ記事

記事・ニュース一覧