HEADS UP: r185435 multi-IPv4/v6/no-IP jails in HEAD

Wow! 久しぶりにスゴイの来ましたね! 上手くいけば 7.2-RELEASE から使用できるそうです。

http://lists.freebsd.org/pipermail/freebsd-jail/2008-December/000631.html をいい加減に訳してみました。


こんにちは、

既にご存知かと思いますが、複数の IPv4/v6 または IP 無しの jail が HEAD に入りました。添付されているコミット・メッセージをご覧ください。

先に悪いニュース:jail を起動して複数の IP アドレスや IPv6 アドレスと共に使用可能なネットマスクを指定する際には IP アドレス設定のようなより曖昧な rc の機能を使うので rc スクリプトを更新することが期待されます。

良いニュース:これらの機能を使用しない場合、または 1IP の jail のみを使用する場合、全ては上手く動作し、何の変更もありません。

更なるニュース:
複数の IP アドレスや v4/v6 アドレスを混在させて使用したいのであれば、それらをカンマで区切り、コマンドラインrc.conf で指定します。

コマンドラインであれば次のように指定します。

   jail / example 192.0.2.250,2001:db8::75,2001:db8::99,2001:db8::55,2001:db8::14,192.0.2.254 /bin/sh

rc.conf であれば次のようになります。

   jail_example_ip="192.0.2.2,2001:db8::2,2001:db8::1,2001:db8::4,2001:db8::13,192.0.2.3"

IP アドレス無しの jail を起動したい場合はコマンドラインの引数を空文字列にします:

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


更に、-n オプションを使って jail に名前をつけることができます:

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

特殊文字や空白を使おうとは思わないかもしれませんが、単なる文字列ですので使用することもできます。何の制限もありませんので、10個の jail に同じ名前をつけることも可能です。jail 内部から名前を変更することはできません。jail の作成時に設定され、以後は変更できません。

それ以外の新機能: -h オプションは jail にホスト名から IP アドレスを解決させ、jail の IP に追加します。注意:メインの jail の IP アドレスに予期せぬ結果を引き起こす可能性があります。詳細は jail(8) をご覧ください。

jls は可能な限り後方互換性を維持します。つまり `jls` として呼ばれれば IPv4 アドレス 1つだけを表示するということです; 明らかにこれは IP 無しや v6 IP だけの jail には役立ちませんが、従来の設定を使用している人々のスクリプトを混乱させないように努めた結果です。

jls -v は以下のような全ての情報を表示します:

  • state: 通常は ACTIVE です。
  • '-a' オプションは jail の他の状態 - 例えば jail がソケットのタイムアウト待ちでプロセスが一つも残っていない場合は DYING - も表示します。
  • jail 個々に自身を起動したプロセスから継承した cpuset を取得します。jail ID(例:cpuset -g -j 8) や setid(例:cpuset -g -s 5) によって選択的に一覧表示しまた望めば変更すら可能です。jail 内のスレッドは jail 内であっても自身を更に制限することができますが、スコープ外については何もできません。詳細は cpuset のマニュアルを参照してください。

IP アドレスは次の順序で一覧表示されます:
the primary IP per AF which is the first IP of that AF given to the jail command and then they should be sorted in ascending order.


jexec は jail に接続するために jail の名前をオプションとして取れるようになりましたが、jail が一意に識別できないと拒否されます。jail の名前を使用する場合には次のように jail ID に空文字列を指定しなければなりません:

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

jail の名前と ID 両方を指定することができますが、その場合は両方が一致する必要があり、一致しないと文句を言われます。jail の ID のみの指定も未だに有効です。-h オプションは再び削除されました。今後、管理目的では jail の名前を使用するべきです。


jls の完全な出力例(これが美しい、とは言えませんが...):

sun$ jls -av
    JID  Hostname                      Path
         Name                          State
         CPUSetID
         IP Address(es)
     21  sun                           /
         hangtest                      DYING
         6
         192.0.2.99
      8  noip.example.net              /
         bz's private noip jail        ALIVE
         5
      3  j3.sunny.example.net          /local/jails/j1
                                       ALIVE
         4
         2001:db8::5
      2  j2.sunny.example.net          /local/jails/j1
                                       ALIVE
         3
         192.0.2.1
      1  j1.sunny.example.net          /local/jails/j1
                                       ALIVE
         2
         192.0.2.2
         192.0.2.3
         2001:db8::2
         2001:db8::1
         2001:db8::4
         2001:db8::13

オンラインマニュアルに記載されていないことに関する質問や何らかの問題が生じた場合などは、freebsd-jail@ を追いかけてください。

追伸: MFC についてはコミットメッセージにあるので、質問しないように。