読者です 読者をやめる 読者になる 読者になる

qjail-3.1 Jman

NAME
     qjail - jail環境の配置のためのユーティリティ

コマンド一覧
     qjail install [-z zone] [-h ftp host] [-f ] [-l]
     qjail create  [-z zone] [-n interface] [-a archive] [-f flavor]
                   [-A archive zone] [-c] [-i size] [-d duplicate#]
                   [-4 IPv4...] [-6 IPv6...] jailname
     qjail list    [-z zone] [jailname...]
     qjail start   [-z zone] [jailname...]
     qjail stop    [-z zone] [jailname...]
     qjail restart [-z zone] [jailname...]
     qjail console [-z zone] [-e]  jailname
     qjail archive [-z zone] [-A] [-s] [jailname...]
     qjail delete  [-z zone] [-A] [jailname...]
     qjail restore [-z zone] [-s] [jailname...]
     qjail config  [-z zone] [-c newnic] [-n newname] [-b rule#] [-A -d -h]
                   [-B -F -k -K -l -L -m -M -q -Q -r -R -S -t -T]
                   [-v -V -W -x -X -y -Y]
                   [-f value] [-s value] [-w value]
                   [-4 newIPv4...] [-6 newIPv6...] jailname
     qjail update  [-z zone] [-b] [-p] [-P] [-S] [-l on|off]
     qjail logmsg  [text....]
     qjail help    [manual]

注釈
     注意 注意 注意 注意 注意 注意 注意 注意
     qjailのこのバージョンは、9.1-RELEASEで使えるようになった jail(8)
     のjail.confを用いるため、古いjailで用いられていた rc.dとrc.confを使わない
     ように変わりました。このアップグレードは供給するjailのベースにより以下の
     新しいオプションを有効にする機能を提供します。
     allow.raw_sockets
     devfs_ruleset
     allow.sysvipc
     allow.quotas
     allow.mount.nullfs
     allow.mount.zfs
     securelevel
     cpuset.id
     exec.fib
     vnet.interface
     vnet

     vnetオプションはjailに実験的なvimageを用いた jail自身のネットワークスタッ
     クを与えます。このqjailのバージョンは9.2-RELEASEよりも新しいFreeBSDに限定
     されます。 vnetオプションはi386amd64のみでテストされました。

     qjailはqjailがインストールされているマシン内のqjail環境と全てのjailを管理
     するのみ用いられます。

     jailの数が15を超えるようならjailそのままでは楽な管理はできません。多数
     のjailの配置のために、qjailは作成者の管理を簡単にするように設計された2つ
     の機能を提供します。 1つ目の機能は、グループをまとめるための接頭辞の抜粋
     能力です。それは大きい規模でも小さい規模でも、どのような規模のjailを管理
     する際にでも有効です。グループはワイルドカードとして、等号である"="を前に
     置きます。その時グループとして扱いたいjail達の接頭辞としてグループ名を置
     けばそれをグループとして扱うことを可能にします。 2つ目の機能は、複数
     のjail環境を作成するqjailの能力です。このようにより簡単な管理のためにグル
     ープ化された一般なjailをまとめるためにもう1つの方法を提供します。もしホス
     トコンピュータのシステム資源が十分であるならば、何百ものjailの大規模な配
     置は可能です。そして、jailの命名規則は管理しやすいグループにjailを分ける
     のに用いられます。このユーティリティは2つの異なるjailのタイプを配置します
     。 1つ目のタイプは、ディレクトリツリーに基づきます。このタイプには無制限
     なディスク業域に成長する可能性があります。それはホストコンピュータのディ
     スク領域を共有します。ホストコンピュータが出さない限り、jailはそのディレ
     クトリの場所から決して出られません。 2つ目のタイプはスパースイメージファ
     イルに基づきます。スパースファイルは論理ファイルのサイズと物理的なファイ
     ルのサイズが異なります。実際に書き込まれたサイズの分しか物理的なファイル
     のサイズが大きくなりません。例えば、スパースファイルは5Mのサイズを割り当
     てました。しかし、7つのファイル(それぞれ1kのサイズ)は物理的なディスク領域
     を7kしか専有しません。内容が加えられて、追加された物理的なディスク領域
     は5Mが上限となりふさがれます。スパースファイルはmdconfigコマンドを使いメ
     モリディスクとしてマウントされ、jailのディレクトリツリーとして取り付けら
     れます。この構成はスパースイメージジェイルと呼ばれています。これによっ
     てjailが消費するディスク領域の上限を設定することができます。これは、jail
     がホストコンピュータが止まってしまうくらいのディスク領域を消費している暴
     走したプロセスからホストコンピュータを守る機能を付加的に提供します。

     ホストコンピュータの /etc/rc.confファイルにqjail_enable="YES"と追加すれば
     、システム起動時に全てのjailを起動させることができます。

     "qjail"コマンドに続くコマンドは、サブコマンドです。それぞれのサブコマンド
     には、独特のオプションを持っています。 qjailは /usr/local/binから実行され
     、インタプリタはボーンシェルで、root権限が必要です。

qjail install
     ディレクトリ構造の割り当てはqjailによって用いられ、ホストコンピュータで動
     いているものと同じRELEASEバージョンで動かされます。セキュリティの目的のた
     めに、qjailのディレクトリ構造はOSの無垢な状態で取り付けられます。無垢とい
     うのは"きれいな、汚れていない、インターネットに晒されていない"という意味
     で、ソースコードから新しくコンパイルされインストールされた新鮮なものか
     、isoイメージファイルからインストールされたものか、オリジナルディストリビ
     ューションファイルのことです。デフォルトで、qjailは無垢なバージョンのディ
     スク構造を取り付けるためにオリジナルディストリビューションファイルをダウ
     ンロードします。

     これは、OSのリリースバージョンのみでできます。これらは、"X.X-RELEASE"とラ
     ベルされているバージョンによって見分けられて、またこれらはisoイメージファ
     イルかFreeBSD FTPサーバからダウンロードすることのできるオリジナルディスト
     リビューションファイルからなります。

     リリース前のバージョンである"X.X-BETAxとX.X-RCx"は、ユーザによるテストの
     ためのFTPサーバのisoイメージファイルとして利用可能となるだけです。最後
     のX.X-RXxバージョンは、全ての人にリリースされる次のX.X-RELEASEバージョン
     になります。あなたはこのコマンドを用いてこれらのプレリリースバージョンを
     用いたqjailのディレクトリ構造をインストールすることができます。 "qjail
     install -f [ファイルパス]" (ファイルパスとはcdromに焼いてあるisoファイル
     かハードディスクにあるisoファイルのファイルパスのこと)

     "X.X-STABLE"と"X.X-PRERELEASE"と"X.X-CURRENT"バージョンはFreeBSDのソース
     コードをコンパイルし作成されたものに限定されます。 Qjailはこれらのバージ
     ョンをホストコンピュータで動いているバージョンにインストールしません。あ
     なたは以下のコマンドを使うことによってこれらを動かすことができます。
         setenv UNAME_r "X.X-RELEASE"  このコマンドはバージョンを
                                                           X.X-RELEASEに見せか
     けます。
         qjail install           これは上記のバージョンをqjailに読み込みます。
         qjail update -b        qjailシステムにホストのバイナリをコピーします

     "qjail install"プロセスの間に、以下のディレクトリ構造は割り当てられます:

     sharedfsはリードオンリーファイルとしてオペレーティングシステムの実行可能
     なライブラリの全てを含んで、全ての個々のjailでシェアされる"nullfs"として
     マウントされます。それは、オペレーティングシステムバイナリの無垢なバー
     ジョンとして取り付けられます。この設計は更新または削除される全ての実行可
     能なファイルを効果的に守り、またjailの中で動いているプロセスによって作成
     される、新しい実行可能なファイルを含むディレクトリも守ります。これ
     は"usr/src"と"usr/ports"ディレクトリも含まれます。ホストコンピュータ
     の"usr/ports"ファイルシステムはこのように"mv"コマンドを用いてjailに一時的
     に利用可能となることができます:
     mv /usr/ports /usr/jails/sharedfs/usr 戻す時は、
     mv /usr/jails/sharedfs/usr/ports /usr

     テンプレート(templete)はオペレーティングシステムコンフィギュレーション
     ファイルを含みます。それはそれぞれのjailのベースファイルシステムにコピー
     されます。

     アーカイブ(archive)は"qjail archive"コマンドによって作成されたアーカイブ
     ファイルが保管されます。

     フレーバー(flavors)は"default"と"ssh-default"の元々のフレーバーを含み、ユ
     ーザが作成したカスタムフレーバーも含みます。

     以下の4つの管理ディレクトリは作成され、それぞれのjailにそれぞれの情報とし
     て取り付けられます。
     /usr/local/etc/qjail.fstab
     /usr/local/etc/qjail.local
     /usr/local/etc/qjail.global
     /usr/local/etc/qjail.vnet

     このコマンドはあなたのカスタマイズされたフレーバーや存在するjailを妨げて
     いない間、ゼロからsharedfsとテンプレートを再構築するためにいつでも動かす
     ことができます。 "default"と"ssh-default"フレーバーは"user.saved"というプ
     レフィックスをつけ、新鮮なバージョンと置き換えられ、名前を変えます。

     もしより新しいメジャーRELEASEへ行くならば: 6.4から7.1にアップデートし、
     7.2から8.0にアップデートします。それから、既存の全てのjailのportsとパッケ
     ージは新しいメジャーRELEASEバージョンに適応するためにアップデートを必要と
     することを覚えておいてください。他方、もし同じメジャーRELEASEバージョン内
     のマイナーバージョンアップを行いたいのならば: 7.1から7.2へのアップデート
     と、 8.0から8.1のアップデートは、jail内のportsとパッケージのアップデート
     は必要ありません。


     以下のオプションはこのコマンドの後に続きます:

     -z      複数のユニークなqjail環境を作成するためにこのオプションを用いてく
             ださい。用いられたzoneの値は /usr/jailとして/ust/jail.zoneと、
             /usr/local/etc/fstab.qjail.zoneと/usr/local/etc/qjail.local.zone
             がユニークなqjailの環境に分離します。全ての". - /"、ゾーンの名前
             を標準化するアンダースコア"_"は、ゾーンの名前では、変わります。他
             の全てのqjailのサブコマンドは、ここで作られるゾーンに対して同じゾ
             ーンの名前にしなければならない。(MUST) もし、それがなけれ
             ば/usr/jailと/usr/local/etc/qjail.fstab
             と/usr/local/etc/qjail.local/ が使われます。

     -h      このオプションはオリジナルディストリビューションファイルを取得す
             るリモートホストのURLを指定します。このオプションを用いられなけれ
             ば、デフォルトホストであるftp2.freebsd.orgが使われます。あなたは
             "-h ftp7.freebsd.org"オプションを用いてデフォルトを変えるかもしれ
             ません。以下で、選択するFTPサーバの完全なリストを読んでください。
             www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/mirrors-
             ftp.html

     -f      このオプションは、qjailのディレクトリ構造を取り付けるソースとして
             、3つのRELEASEのいずれかのソースコード絶対パスを指定します。こ
             れはマウントされたcdromのdisc1や、またはダウンロードされ
             た"disc1.iso"isoイメージファイルや、またはダウンロードされたオリ
             ジナルディストリビューションファイルです。

     -l      これは/var/log/qjail.logに全てのqjailコマンドとエラーメッセージの
             ログを有効にします。これらのログエントリーは 日付/時間 とコマンド
             を実行したユーザアカウントの名前 というプレフィックスになっていま
             す。このエントリは/etc/newsyslog.confによりqjail.logファイルに自
             動で作成されます。

qjail installの例
     1.  qjail install (オプション無し)
               qjailのディレクトリ構造を取り付けるために使われる
               RELEASEバージョンのディストリビューションファイルは
               ホストコンピュータと同じRELEASEバージョンがFreeBSD
               FTPサーバから取得されます。新しいRELEASEバージョンが
               発行されたときなど、FTPサーバへのダウンロードがタイム
               アウトするかもしれません。または多くのユーザによる
               ダウンロードにより接続が拒否されます。再度このコマンド
               を発行すれば再び最初からFTPダウンロードを始めます。

     2.  qjail install -h ftp6.freebsd.org -l
               このコマンドは-hオプションにより指定されたFTPサーバを用い、
               またロギングを有効にします。

     3.  mount_cd9660 /dev/cd0 /mnt
         qjail install -z env1 -f /mnt/usr/freebsd-dist
               このオプションは指定されたcdromにあるdisc1 RELEASEを
               qjailのディレクトリ構造を取り付けるためのオリジナル
               ディストリビューションとしてマウントします。さらに、
               ユニークに名前を付けられたqjailのゾーンは"env1"という
               名前をつけられてつくられます。

               インストールが完了した後、disc1 RELEASE cdromを
               取り出しなさいという以下の命令を実行してください。
                    cd /usr
                    umount  /mnt

qjail create
     qjailの範囲内で新しいjailを作成します。テンプレート、またはこれまでに作成
     されたアーカイブ・ファイルからディレクトリツリータイプまたはスパースイメ
     ージファイルのjailを作成する際に素晴らしい柔軟性を持ちます。これは、自動
     でjailを複製し、高速に多数のjailを配置するために、能力を結合させました。
     JailnameとIP addressは必須のパラメータです。

     プロセスがjailを作成を完了する間に、3つの管理ファイルはjailごとに作成され
     ます。それらは
     /usr/local/etc/qjail.fstab/jailname/usr/local/etc/qjail.local/jailname 、
     /usr/local/etc/qjail.global/jailname です.

     以下のオプションはこのコマンドの後に続きます:

     -z     "install"サブコマンドにて指定したゾーンと同じゾーンを指定します。

     -n      これは、jailのIPアドレスにサービスを提供する"ネットワークインター
             フェイス名"です。 qjailがjailを起動させる時、"ネットワークインタ
             ーフェイス名"上でjailのIPアドレスのためにエイリアスを自動的に作成
             します。 qjailがjailを停止させる時、エイリアスを自動的に削除しま
             す。 "-n [値]"がないとき、インターネットに接続しているデフォルト
             ネットワークインターフェイスのデバイス名を確認して、自動的に"-n [
             値]"に定義されるように"route コマンド"は使われます。

             複数の静的IPアドレスの為の、オプションの正しい"ネットワークインタ
             ーフェイス名"は、IPアドレスがホストコンピュータに入ることができる
             、インターネットに面したNICの名前です。ホストコンピュータのプライ
             ベートLAN上のjailの為の、オプションの正しい"ネットワークインター
             フェイス名"は、IPアドレスが出て、ホストコンピュータに入れるホスト
             コンピュータのプライベートLANに面したNICの名前です。インターネッ
             トにアクセスするプライベートLANのための予約されているjailのIPアド
             レスを割り当てるために、jailの上でNATを実行するように構成しなけれ
             ばなりません。詳細は"-4"のオプションを見てください。

             非常に重要な警告的なメモ: DHCPサーバがダイナミックに割り当ててい
             るLAN IPアドレスの範囲に注意してください。それらのIPアドレス
             をjailに割り当てないでください。さもなければ、jailが起動しエイリ
             アスが作成されるとき、LANに接続しているユーザはネットワークへのア
             クセスを失います。

     -a      新しいjailを作成するテンプレートとして、アーカイブファイルを使用
             することができます。アーカイブされたjail名がオプションの値になる
             ならば、そのjail名に合致している最も最新のアーカイブファイルがソ
             ースとして使われます。完全なアーカイブファイル名をオプションの値
             として使うこともできます。プレフィックスとしてjail名と日付と時間
             がついたアーカイブは、接頭辞として追加されて作成されます。最も最
             新のアーカイブファイル以外を選びたいなら、完全なアーカイブファイ
             ルをオプションの値として使ってください。アーカイブされたjailと同
             じ状態のjailのクローンを作るために、このオプションは使われます。
             オプションに"-a"がついていないのであれば、テンプレートが使われま
             す。ノート:"-a"と"-f"オプションを同時に使うことはできません。設計
             上、アーカイブファイルから作成されるjailはフレーバーをつけている
             はずがありません。全てのアーカイブファイル名をリストするために
             、"ls /usr/jails/archive/"を使ってください。

             イメージ化されたjailのアーカイブは新しいディレクトリツリー型
             のjailや、より大きなサイズのスパースイメージのjailを作成すること
             ができます。ディレクトリツリー型のjailのアーカイブは新しいディレ
             クトリツリー型のjailや、イメージ化されたjailを作成することができ
             ます。アーカイブファイルの、"-n インターフェイス"オプションのNIC
             の名前は削除されます。

     -A      "-A アーカイブ名 ゾーン名"を用いて、新しいjailを作るためのテンプ
             レートとして、異なるゾーンからアーカイブファイルを選ぶことができ
             ます。オプション"-a"と共に使われる時、"-A"のみ有効となります。
             "-z"オプション、または"-a"と"-A"オプションの組み合わせを使えば、
             他のゾーンからアーカイブファイルを選ぶことができます。

             デフォルトのjail環境での例; "-z"オプションを省いた"qjail install"
             コマンドは特例です。 "-z"、または"-a"と"-A"オプションの値の操作は
             、デフォルトのjail環境からアーカイブされたjailを選ぶこと以外をカ
             バーします。 nozoneと呼ばれる、特別に予約された値はデフォルト
             のjail環境のアーカイブを指すために、"-A"をオプションとして使われ
             るかもしれません通常、"-z"オプションの値は指定されたゾーンで作成
             コマンドを適用するために、"-A"オプションはゾーンのアーカイブファ
             イルを指定するために、"-a"オプションは"-A"オプションによって示さ
             れるゾーンの名前または完全なアーカイブファイル名を指定するために
             あります。


     -f      フレーバー(flavor)オプションを用いて、新しいjailにフレーバーを適
             用することができます。 "-f"オプションが用いられるならば、選択され
             たフレーバーのディレクトリ構造は新しいjailのディレクトリ構造にマ
             ージされます。フレーバーオプションが用いられないのであれば
             、"default"フレーバーが新しいjailのディレクトリ構造にマージされま
             す。 Qjailには、不必要なフレーバーディレクトリを削除するような機
             能はありません。ホストコンピュータの"rm -rf
             /user/jails/flavor/name"コマンドを用いて不必要なフレーバーを削除
             することは、自己責任で行ってください。ノート:"-f"と"-a"オプション
             を同時に使うことはできません。設計上、アーカイブファイルから作成
             されるjailはフレーバーをつけているはずがありません。

             "install"サブコマンドの一部として、フレーバーベースのディレクトリ
             は"default""ssh-default"と名付けられた2つのフレーバーからな
             る"/usr/jails/flavors/"から作成されます。これらのフレーバーの両方
             とも、jailで動くためにカスタマイズされた3つのファイルを含みま
             す(make.conf,periodic.conf,rc.conf)。これらのカスタマイズされたホ
             ストファイル"/etc/resolv.conf , /etc/localtime"はjailの使用を簡単
             にするために"default","ssh-default"からコピーはされます。検査をす
             る際、これらのファイルが通常のディレクトリ構造の場所にあるのがわ
             かるでしょう。自身でフレーバーをカスタマイズする時、新しいjailに
             自分でカスタマイズしたフレーバーのディレクトリ構造を手動でマージ
             する必要があります。

             "ssh-defualt"フレーバーは、"default"フレーバーが持つ全てを含み、
             さらにsshサポートを有効化し"qjail"と名付けられた、パスワード
             が"qjail"のアカウントが作成されています。最初のログイン時、基本的
             なセキュリティ対策として新しいパスワードを入力することをユーザは
             促されます。 qjailユーザは"root"にアクセスするための"su"が使える
             ように"wheel"グループに属します。

             あなたが自身のフレーバーを作成するとき、常にベースとして"default"
             や"ssh-default"フレーバーをコピーしてください。

     -c      このオプションはsshを有効にし、ID,パスワードにjailの名前が入った
             ユーザアカウントを作成します。最初のログイン時、基本的なセキュリ
             ティ対策として新しいパスワードを入力することをユーザは促されます
             。 qjailユーザは"root"にアクセスするための"su"が使えるよう
             に"wheel"グループに属します。

             "-c"オプション付きで作成されるjailの初回起動時、オプションをjail
             に適用するためにsshの構成を変更し、ユーザアカウントを生成します。
             適用には"qjail restart jail名"または、"qjail stop jail名"のあと
             に"qjail start jail名"を行うことを要求されます。

     -i      スパースイメージファイル形式のjailを作成するとき、このオプション
             を使用してください。このオプションが使用されないならば、ディレク
             トリツリー型のjailが作成されます。 "-i"オプションが使用されるとき
             、スパースイメージファイルのサイズがこのオプションの後に続かなけ
             ればなりません。接尾語がmまたはMの時はメガバイト、gまたはGの時は
             ギガバイトとして有効なエントリになります。スパースイメージファイ
             ルは接尾語に.imgを持っていて、1つのファイルとしてjall名ディレクト
             リに配置されます。イメージ化されたjailが停止した時、jail名.imgは
             見えます。 "ls -lh jail名.img"を発行すれば割り当てられたサイズを
             示します。そして、"du -h jail名.img"を発行すれば消費しているディ
             スク領域を示します。イメージ化されたjailが割り当てられたディスク
             領域の全てを消費するならば、手順に従い、より大きな"-i"オプション
             の値を入力としてイメージ化されたアーカイブを使用することによりデ
             ィスク領域を増やすことができ、またアーカイブすることができ、削除
             することができます。 "-i"オプションの値"10m"はイメージ化され
             たjailのためのぎりぎりの最小限のサイズです。

     -d      このjail名の作成を何回繰り返すか、数を入力してください。接頭語は
             共通してjail名で始まっていて、重複ごとに1つづつ増加する番号が、各
             々の新しく作られたjail名に追加されます。 100より大きな数は無効で
             す。 1つのIPv4アドレスが必要になります。重複サイクルの繰り返しご
             とに、IPv4アドレスの最後のオクテットは、1だけ増加します。

     -4      これはグローバルIPv4アドレスかプライベートIPv4アドレスです。 1つ
             以上のIPv4アドレスをjailに割り当てることができます。複数のIPv4ア
             ドレスは、前後にスペースを付けずにコンマで区切られなければなりま
             せん。
             例: 10.0.0.2,10.0.0.3,10.0.0.4
             次のフォーマットもまた利用できます。"xl0|10.0.0.2,lo1|127.0.0.1"
             (訳者注:存在するネットワークインターフェイスの指定が必要です。)
             ""で囲む必要がある点に注意してください。

             RFC1918によると、インターネットに決して接続していないプライベート
             なIPv4ネットワークのために、以下の範囲のIPアドレスを使うことがで
             きます。これは通常ローカル・エリア・ネットワークを目的とします。
                           #
                           #       10.0.0.0        -   10.255.255.255
                           #       172.16.0.0      -   172.31.255.255
                           #       192.168.0.0     -   192.168.255.255
                           #

             インターネットに到達できる静的なIPアドレス(永久的な、決して変化し
             ない)はあなたが利用するISPによって割り当てられています。もしイン
             ターネットに到達できる静的なIPアドレスの連続ブロックを購入するな
             らば、それぞれのjailはそのブロックから個々のIPアドレスの1つを割り
             当てることができます。

             通常ケーブル・プロバイダとDSLプロバイダは、ダイナミックな(変動す
             る)IPアドレスを割り当てます。リース時間が期限切れになる、またはシ
             ステムを再起動するとき、割り当てられたIPアドレスが変わるかもしれ
             ません。

     -6      これはjailに割り当てるIPv6アドレスです。 1つ以上のIPv6アドレス
             をjailに割り当てることができます。複数のIPv6アドレスは、前後にス
             ペースを付けずにコンマで区切られなければなりません。 IPv4IPv6ア
             ドレスは、"-4"と"-6"のオプションを使用することによってjailに割り
             当てられるかもしれません。 "-d"オプションがjailの重複を可能にする
             ために使用されるならば、1つのIPv4アドレスが必要とされます。

     jailname
             1つのjail名だけ有効になります。 jail名は英数字、ダッシュ"-"、アン
             ダースコア"_"のみ使うことが出来ます。全ての数字はjail名には無効で
             す。よりよく大規模なjailの配置を管理するために、機能またはユーザ
             グループによってjailをグループ化するような命名規則にすることを助
             言します。最大のjail名のサイズは、50文字です。 jail名は、全てのゾ
             ーンでユニークでなくてはなりません。あなたがこのjail名や、全ての
             サブコマンドを使う時のいくつかのプレフィックスを入力する際に、意
             味がありかつ短いjail名にすることに努めることを覚えておいてくださ
             い。

             jailはアルファベットの昇順(aからzまでのjail名のつづり)で開始され
             、停止され、再起動されます。選択したjailが他のものの前に始まるこ
             とを望むならば、jail名の前に数字を置いてください。

qjail create の例
     1.  qjail create -n rl0 -6 21:470:1f15:1ee7::102 webserver
               IPv6アドレス付きでテンプレートディレクトリツリーを用い1つの
               新しいディレクトリツリー型のjailを/usr/jails/webserverに作成し
     ます。
               自動的にエイリアスは有効化されます。

     2.  qjail create -n rl0 -c -f myflavor -4 10.0.10.20 bld21a-floorA-cell01
               テンプレートディレクトリツリーを用い1つの新しいディレクトリ
               ツリー型のjailを/usr/jails/bld21a-floorA-cell01に作成し、
               myflavorディレクトリのディレクトリツリーをbld21a-floorA-cell01
               ディレクトリにコピーします。自動的にエイリアスは有効化されます
     。
               そしてsshアクセスは有効化されます。

     3.  qjail create -a cell-a -4 10.0.10.20,10.0.10.30 prison-B
               新しいjailのためにテンプレートディレクトリツリーを用い、
               cell-aと名付けられたアーカイブファイルを用いて1つの新しい
               ディレクトリツリー型のjailを/usr/jails/prison-Bに作成します。
               自動的にエイリアスは有効化されます。

     4.  qjail create -a cell-a -d 15 -4 10.0.10.20 room
               新しいjailのためにテンプレートディレクトリツリーを用い、
               cell-aと名付けられたアーカイブファイルを用いてディレクトリ
               ツリー型のjailを作成し、これを15回繰り返します。jail名は、
               room-1からroom-15が作成されます。同時にIPアドレス、
               "10.0.10.20"の最後のオクテットは、1つずつ増加します。
               room-1 10.0.10.20   room-2 10.0.10.21   room-15 10.0.10.34
               自動的にエイリアスは有効化されます。

     5.  qjail create -n rl0 -d 15 -4 10.0.10.20 room
               新しいjailのためのテンプレートディレクトリツリーを用い、
               ディレクトリツリー型のjailを作成し、これをroom-1から
               room-15まで15回繰り返します。自動的にエイリアスは
               有効化されます。同時にIPアドレス、"10.0.10.20"の最後の
               オクテットは、1つずつ増加します。
               room-1 10.0.10.20  room-2 10.0.10.21  room-15 10.0.10.34

     6.  qjail create -n rl0 -d 15 -c -4 10.0.10.20 room
                先程の5.のjailとほとんど同じですが、これは"-c"オプションが
                付いているためsshアクセスが有効化されます。

     7.  qjail create -i 100m -4 10.0.10.20 class
               100メガバイトの最大割り当てサイズのイメージをテンプレート
               ディレクトリツリーに配置し、1つの新しいスパースイメージ
               ファイル型のjailを作成します。
               自動的にエイリアスは有効化されます。

     8.  qjail create -d 15 -c -i 100m -4 10.0.10.20 class
                先程の7.のjailとほとんど同じですが、"-c"オプションが
                付いているためsshアクセスが有効化され、また"-d"
                オプションがついているためこれをclass-1からclass-15
                まで15回繰り返します。同時にIPアドレス、"10.0.10.20"の
                最後のオクテットは、1つずつ増加します。
               class-1 10.0.10.21  class-2 10.0.10.22  class-15 10.0.10.34

     9.  qjail create -c -a cell-a -i 1g -4 10.0.10.20 room
               cell-aと名付けられたアーカイブファイルを用いて1ギガバイトの
               最大割り当てサイズのイメージをテンプレートディレクトリ
               ツリーに配置し、1つの新しいスパースイメージファイル型の
               jailを作成します。自動的にエイリアスは有効化されます。
               そして、sshアクセスは有効化されます。

     10. qjail create -z env1 -a cell-a -i 1G -4 10.0.10.20 room
               先程の9.のjailとほとんど同じですが、"-z"オプションが
               付いているため"env1"ゾーンとして作成されます。

     11. qjail create -z env1 -a cell-a -A env2 -4 10.0.10.20 room
               "env2"ゾーンにある"cell-a"と名付けられたアーカイブファイルを
               用いて"env1"ゾーン上に"room"と名付けられた新しいjailを作成
               します。

     12. qjail create -z env1 -a cell-0 -A nozone -4 10.0.10.20 room
               qjailのデフォルトの環境にある"cell-0"と名付けられたアーカイブ
               ファイルを用いて、"env1"ゾーン上に"room"と名付けられた
               新しいjailを作成します。"nozone"というキーワードが使われます。

qjail list
     qjailの範囲内のjailについてのリスト情報。 jail達は英数字の昇順で示されま
     す。そしてそれはjail名のつづりに基づきます。

     リストは5つの列の情報を示します。左から始まる。
      1列目は2つのフラグからなる文字の状態で、最初の文字はディレクトリツリー構
     造ベースのjailだと(D)で、イメージベースのjailだと(I)で示されます。第二の
     文字は現在jailを走らせている状態だと(R)で、停止している状態だと(S)で示さ
     れます。
      オプションの3つ目の文字(N)はjailがnorunステータスの状態にあることを意味
     します。または、(M)はjailが手動で起動された状態であることを意味します。
     norun設定を"qjail config"サブコマンドの"-r"オプションを用いて有効化、"-R"
     オプションを用いて無効化することができます。手動設定を"qjail config"サブ
     コマンドの"-m"オプションを用いて有効化、"-M"オプションを用いて無効化する
     ことができます。
     2列目は起動している時のみ有効化される、jailのjidです。
     3列目は"create -n"オプションで指定した、または"config -w"オプションで指定
     した、vnet jailのネットワークインターフェイス名です。
     4列目はjailのIPアドレスで、"create"コマンドで指定したIPアドレス、また
     はvnet jailならば、"|"によって切り離される3つのフィールドを示します。文字
     通り"vnet"はこれがvnet jailであることを意味します。そして、ネットワーク方
     法がどれを使われるかについて示している、"be"または"ng"が続きます。最後に
     どのファイアウォールがvnet jailで使われるかについて示している、"ipfw"また
     は"none"が続きます。
     5列目は、jail名です。

     -z      "install"サブコマンドにて指定したゾーンと同じゾーンを指定します。
             このオプションが使用されるとき、"Jails in zone xxxx"が見出しの先
             頭に追加されます。 "xxxx"はゾーン名です。

     jailname
             このオプションが使用されないのであれば、全てのjailのリストが表示
             されます。このコマンドにはスペース区切りで複数のjail名を入力する
             ことを許されています。グループ接頭辞オプションは有効化されていま
             す。"xxxx="は"xxxx"という文字列にマッチしている全てのjail名のリス
             トを表示します。等号"="は、jailのリストを作成するために使われ、等
             号の左側の全ての文字列が検索文字列として用いられるようになってい
             ることを示すワイルドカード記号です。

qjail [start | stop | restart] jailname.....
     起動、停止、再起動のコマンドがjail名を付けずに発行したとき、qjailがコント
     ロールしている全てのjailが処理されます。起動、停止、再起動のコマンド
     がjail名を付けて発行した時、それらのjail名だけ処理されます。それぞれ
     のjailが処理されたとき、"Started successfully jailname"または"Already
     running jailname"または" Stopped successfully jailname"または" Already
     stopped jailname"または"Bypassed norun status jailname"と1行のインフォメ
     ーションメッセージが出されます。

     jailはアルファベットの昇順(aからzまでのjail名のつづり)で開始され、停止さ
     れ、再起動されます。選択したjailが他のものの前に始まることを望むならば
     、jail名の前に数字を置いてください。 norun状態にあるjailは全て無視されま
     す。

     以下のサブコマンドが続きます:

       start  jail名が無いのなら、すぐに全てのjailを起動する

       stop   jail名が無いのなら、すぐに全てのjailを停止する

       restart  jail名が無いのなら、すぐに全てのjailを再起動する

     コマンドの後に以下のオプションが続きます:

     -z      "install"サブコマンドにて指定したゾーンと同じゾーンを指定します。

     jailname
             このオプションが使用されないのであれば、全てのjailのリストが表示
             されます。このコマンドにはスペース区切りで複数のjail名を入力する
             ことを許されています。グループ接頭辞オプションは有効化されていま
             す。"xxxx="は"xxxx"という文字列にマッチしている全てのjail名のリス
             トを表示します。等号"="は、jailのリストを作成するために使われ、等
             号の左側の全ての文字列が検索文字列として用いられるようになってい
             ることを示すワイルドカード記号です。 qjailの範囲内の全てのjailを
             リストするために、"qjail list"コマンドを使用してください。

qjail console
     ホストコンソールを選択したjailにアタッチします。デフォルトでrootとしてロ
     グインします。コマンドラインプロンプトはjailの名前とパスを示します。
     "exit"でコンソールを終了します。 jailが現在起動していないならば、そのjail
     のコンソールを動かすことが出来ません。これは、管理としての使用を目的とし
     ます。通常、Portsまたはパッケージをインストールして、カスタムシステムにす
     るために用いられます。

     -z      "install"サブコマンドにて指定したゾーンと同じゾーンを指定します。

     -e      このオプションを使わなければ、"/usr/bin/login -f root"コマンドが
             ロギングされながら実行されます。 jailで作成されたいくつかのユーザ
             ーアカウントを、IDとパスワードを入力してログインするような標準的
             なログインプロンプトは、"-e /usr/bin/login"を使うことで達成するこ
             とが出来ます。

     jailname
             jail名は必須パラメータです。 1つのjail名のみ、有効です。全て
             のjail名のリストを表示するために、"list"サブコマンドを使ってくだ
             さい。

qjail archive
     1つまたは全てのjailのバックアップを作成します。指定されたjailのディレクト
     リツリーは、tarファイルとしてバックアップされます。 "archive"コマンドがア
     ーカイブを実行する前にアーカイブされるjailは停止状態にあることを要求され
     ます。 sharedfsとテンプレートはアーカイブされることもできます。しかし
     、"archive"コマンドで1つのみjailが指定される時のみです。アーカイブされた
     ファイルの名前は、jail名、アーカイブされた日付、時間です。デフォルトのア
     ーカイブディレクトリは"/usr/jail/archive"にあります。 "archive"コマンドが
     削除を実行する前に削除されるjailは停止状態にあることを要求されます。


     qjailはアーカイブファイルを削除する機能はありません。ホストコンピュータ
     の"rm"コマンドを用いて不必要なアーカイブを削除することは、自己責任で行っ
     てください。アーカイブが作成された時の理由の記述をファイル名につけること
     もユーザ側の責任であるので、必要に応じて正しいアーカイブをリストアさせる
     ことができます。

     -z      "install"サブコマンドにて指定したゾーンと同じゾーンを指定します。

     -s      このオプションは、アーカイブディレクトリにqjailの内部の定義と制
             御ファイルのバックアップを作成する"system.bkup"にプラス
             で"pgm.bkup"という、アーカイブディレクトリへのqjailの実行可能ス
             クリプトを作成します。 VIMAGE(仮想ネットワークスタック)はホストシ
             ステムがフリーズをしてどんなオープンファイルの内容でも全て消えて
             しまう場合がある、非常に実験的な機能です。時々これがqjailの内部の
             定義と制御ファイルに、そしてqjailの実行可能スクリプトに影響をあた
             えることが、少ない頻度で起こったことを経験しました。 vnet jailを
             使っているのならば、現在のシステムのバックアップをするよう強く勧
             めます。


     -A      "-A"以外の他のパラメータなしで使われる時、全てのjailはアーカイブ
             されます。 "-A"を使うならば、同時に他のパラメータを記述してしまう
             と構文エラーになります。

     jailname
             このオプションが使用されないのであれば、全てのjailのリストが表示
             されます。このコマンドにはスペース区切りで複数のjail名を入力する
             ことを許されています。グループ接頭辞オプションは有効化されていま
             す。"xxxx="は"xxxx"という文字列にマッチしている全てのjail名のリス
             トを表示します。等号"="は、jailのリストを作成するために使われ、等
             号の左側の全ての文字列が検索文字列として用いられるようになってい
             ることを示すワイルドカード記号です。 jail名は必須パラメータです。
             "norun"ステータス、または"man"ステータスのjailはアーカイブのする
             ための候補でもあります。

             jail名がsharedfsまたはtempleteであるならば、それはアーカイブされ
             ます。最小限のシステムインストールだけを含んでいるsharedfsは、ア
             ーカイブを完了するのに1分もかかりません。 portsnapがダウンロード
             したports treeを含むsharedfsは、アーカイブを完了するのに最高7分か
             かります。テンプレートとその他の全てのjailは、アーカイブが完了す
             るのに15秒もかかりません。全てのjailをリストするために、"qjail
             list"コマンドを使用してください。

             アーカイブをリストアするために"qjail restore"を使用してください。

qjail delete
     jail名のディレクトリ、"/usr/jails/jail名"と3つの管理制御ファイル
     、"/usr/local/etc/qjail.fstab/jail名""/usr/local/etc/qjail.local/jail
     名""/usr/local/etc/qjail.global/jail名"を全て削除します。 "delete"コマ
     ンドが実行する前に削除されるjailは停止状態にあることを要求されます。


     -z      "install"サブコマンドにて指定したゾーンと同じゾーンを指定します。

     -A      このオプションは、qjailの制御下にある全てのjailを削除します。これ
             を行う前に全てのjailをアーカイブするように勧めます。

     jailname
             このオプションが使用されないのであれば、全てのjailのリストが表示
             されます。このコマンドにはスペース区切りで複数のjail名を入力する
             ことを許されています。グループ接頭辞オプションは有効化されていま
             す。"xxxx="は"xxxx"という文字列にマッチしている全てのjail名のリス
             トを表示します。等号"="は、jailのリストを作成するために使われ、等
             号の左側の全ての文字列が検索文字列として用いられるようになってい
             ることを示すワイルドカード記号です。 jail名は必須パラメータです。
             "norun"ステータスのjailは削除されることから除外されません。

qjail restore
     アーカイブファイルから新しいjailを作成します。デフォルトアーカイブのディ
     レクトリは"/usr/jails/archive"です。リストアするjailと同じ名前のjailが存
     在している場合、リストアは停止されます。リストアをする前に、既存の同じ名
     前のjailを削除しなければなりません。 "norun"ステータスまたは"manual
     start"ステータス状態を持つアーカイブされたjailは"norun"ステータスまた
     は"manual start"ステータスを持つ状態でリストアされます。

     -z      "install"サブコマンドにて指定したゾーンと同じゾーンを指定します。

     -s      このオプションは、アーカイブディレクトリの"system.bkup"か
             らqjailの内部の定義と制御ファイルのバックアップすることにプラス
             で"pgm.bkup"という、アーカイブディレクトリへのqjailの実行可能ス
             クリプトをバックアップします。 VIMAGE(仮想ネットワークスタック)は
             ホストシステムがフリーズをしてどんなオープンファイルの内容でも全
             て消えてしまう場合がある、非常に実験的な機能です。時々これがqjail
             の内部の定義と制御ファイルに、そしてqjailの実行可能スクリプトに影
             響をあたえることが、少ない頻度で起こったことを経験しました。 vnet
             jailを使っているのならば、現在のシステムのバックアップをするよう
             強く勧めます。

     jailname
             jail名に合致する最も最近のアーカイブファイルはリストアされます。
             より以前のファイルをリストアするために、アーカイブの日付と時間を
             付けた完全なアーカイブのファイル名を指定しなければなりません。こ
             のコマンドにはスペース区切りで複数のjail名を入力することを許され
             ています。グループ接頭辞オプションは、このコマンドでは無効です。
             jail名は必須パラメータです。全ての完全なアーカイブのファイル名を
             見るために "ls /usr/jails/archive"コマンドを発行してください。

             jail名がsharedfsまたはtempleteであり、そしてコマンドで1つのみjail
             が指定される時のみ、リストアをします。最小限のシステムインストー
             ルだけを含んでいるsharedfsは、リストアを完了するのに1分もかかりま
             せん。 portsnapがダウンロードしたports treeを含むsharedfsは、リス
             トアを完了するのに最高7分かかります。リストアが始まる前に、既存
             のsharedfsまたはテンプレートはprevious.sharedfs
             とprevious.templeteに名前を変えられます。

qjail config
     特定のjailのパラメータを管理します。このコマンドがjailを処理する前に、処
     理するjailは停止状態にあることを要求されます。

     以下のオプションが続きます:

     -z      "install"サブコマンドにて指定したゾーンと同じゾーンを指定します。

     -A      このオプションは、"-i"、"-n"、"-d"以外の全てのオプションで有効で
             す。このオプションを使用する時、jail名は無効です。この"-A"オプシ
             ョンは、"norun"と"man"ステータスの状態を含むjail名の全てを選択状
             態にします(ALL)。

     -b      ホストの"/etc/devfs_rules"ファイルに追加したカスタムルールセット
             を表している番号を"-b"オプションはjailにその番号のdevfs_rulesetを
             配置します。 "-b rule#"が省略されるならば、デフォルトルールセット
             の4番が使われて、殆どの場合それで十分です。

             慣習として、devfs_rulesetは常にルールナンバー4番をホスト
             の"/etc/defaults/devfs_ruleset"からコピーして、使っていない数のあ
             なたの作成したルールセットを"/etc/devfs_ruleset"に作成します。
             jailの中から生のディスク装置へアクセスする権限を決して与えないで
             ください。jailのコンテナを出て、jailの外側のファイルを修正するの
             を、プロセスが許すかもしれません。アクセスを制限して、適切なデバ
             イスノードだけをjailに曝すためのdevfs_rulesetを作成する方法に関す
             る情報のために、"man devfs"をタイプしてください。

             例:jailがjail内でOpenVPNを走らせることになっているならば、ルール
             ナンバー4番が含まない、"tun"デバイスへのアクセスを必要とします。
             これは、カスタマイズされたルールセットが要求される時です。

     -B      "大文字B"オプションは、それぞれのjailのdevfs_rulesetオプションを
             無効にして、デフォルトルールナンバー4番に戻します。

     -c      選択したjail名のネットワークインターフェイスバイス名(NIC)を新し
             いNICに入れ替えます。 "-c NIC jail名"

     -d      "/usr/local/etc/qjail.local/jail名"にあるjail内部の定義レコードを
             画面に表示します。 "-d jail名"

     -f     jailの中からコマンドを実行するとき、FIB(ルーティング・テーブル)を
             使用するためにセットします。これは、非常に特別な状況下で使われる
             先進の機能です。 "-f 数字"を用いて、jailがどのルーティングテーブ
             ルを使うか定義してください。

             例えばm"option ROUTETABLES=3"でカーネルコンパイルするか
             、"/boot/loader.conf"内に"net.fibs=3"を記載してください。ホストル
             ーティングテーブルの数を3つに増やすことができます。結果、
             0 = デフォルトルーティングテーブル、
             1 = 追加的なルーティングテーブル、
             2 = 第二の追加的なルーティングテーブル
             の3つにルーティングテーブルが拡張されます。それから、ホストコンソ
             ールで以下の様なコマンドを発行してください。
             "setfib 1 route add default "That jails default route ip address"
             そうすれば追加的なルーティングテーブルにデフォルトゲートウェイが
             追加されます。このルートテーブルは、ホストマシンが再起動するまで
             残ります。 "/etc/rc.conf"にコマンドを加えれば、ホストマシンの起動
             時に毎回このコマンドを起こすことが出来ます。

             それから、"-f"オプションとそのオプションの値に1を入れて、選択し
             たjailにルーティングテーブルを割り当ててみてください。詳細
             はsetfib(8)を見てください。

     -F      大文字Fオプションは、それぞれのjailのsetfibを無効にします。

     -h      このオプションはsshを有効にし、ID,パスワードにjailの名前が入った
             ユーザアカウントを作成します。最初のログイン時、基本的なセキュリ
             ティ対策として新しいパスワードを入力することをユーザは促されます
             。 qjailユーザは"root"にアクセスするための"su"が使えるよう
             に"wheel"グループに属します。

             "-h"オプション付きで作成されるjailの初回起動時、オプションをjail
             に適用するためにsshの構成を変更し、ユーザアカウントを生成します。
             適用には"qjail restart jail名"または、"qjail stop jail名"のあと
             に"qjail start jail名"を行うことを要求されます。

     -4      選択したjail名のIPv4アドレスを新しいIPv4アドレスに置き換えること
             が出来ます。 1つ以上のIPv4アドレスをjailに割り当てることができま
             す。複数のIPv4アドレスは、前後にスペースを付けずにコンマで区切ら
             れなければなりません。
              .br 例: 10.0.0.2,10.0.0.3,10.0.0.4
             "-4 new-IPv4 jail名"

     -6      選択したjail名のIPv6アドレスを新しいIPv6アドレスに置き換えること
             が出来ます。 1つ以上のIPv6アドレスをjailに割り当てることができま
             す。複数のIPv6アドレスは、前後にスペースを付けずにコンマで区切ら
             れなければなりません。
              .br "-6 new-IPv6 jail名"

     -k      このオプションは"jail"の安全を否定しており、インターネットに近
             いjailで決して使われてはいけません。小文字kは、それぞれのjail
             の"allow.raw_sockets"オプションを有効にします。通常、jail内でping
             コマンドを発行すると、"Operation not permitted"をいうエラーを得ら
             れます。これはjail環境のデフォルトのセキュリティ設計です。このセ
             キュリティ機能は、ユーザまたはjail内のアプリケーションが生のソケ
             ットを生成するのを許しません。生のソケットを有効にしたjailユーザ
             はPerlPythonやその他のPortユーティリティを、インターネットへの
             攻撃を開始するために使うことが出来ました。 jailがインターネット接
             続をするならば、インターネット上の攻撃者はjailを危うくするかもし
             れなくて、ホストコンピュータまたは公共のネットワークへの攻撃を開
             始するかもしれません。 jailの中からpingコマンドを便利に使うことは
             セキュリティリスクがあるということを考慮しなければなりません。し
             かし、この制限はこのオプションを使うことにより無効にされるかもし
             れません。インターネットアクセスを確かめるためにはdig(訳者
             注:FreeBSD10以降はdrill)コマンドまたはwhoisコマンドを用いることを
             お勧めします。

             個々のjail(例えば動かすためにローカルUNIXソケットを要求するmysql
             またはphpまたはPostgreSQL)のために"allow.raw_sockets"を有効化する
             ために、いくつかの有効な状況があります。

     -K      大文字Kのオプションはそれぞれのjailの"allow.raw_sockets"を無効に
             します。

     -l      小文字lはそれぞれのjailの"allow.mount.nullfs"を有効にします。これ
             はnullfsがjailの中のディレクトリにマウントすることに制限されます
             。 jailのファイルシステムを常に有効にするためにホストコンピュータ
             からnullfsをマウントしていることとは無関係です。jail内から出され
             る全てのmount_nullfsコマンドはjailが動いている間だけです。 jailが
             停止する時、確立したnullfsのマウントは無効にされます。
             "exec.prestart"または"exec.poststart"パラメータは、望まし
             いmount_nullfsコマンドを発行することを自動化するのに用いられるか
             もしれません。これはjail(8)で文書化されています。

     -L      大文字Lはそれぞれのjailの"allow.mount.nullfs"を無効にします。

     -m      このオプションは選択したjailを"manual start"状態にします。
             もしホストコンピュータの"/etc/rc.conf"ファイル
             に"qjail_enable="YES"が存在している時、全てのjaillはホストコンピ
             ュータの起動時に起動されますが、"man"状態にあるjailはこれらから外
             され、自動起動されません。

     -M      大文字Mオプションは選択されたjailの"man"状態を無効にします。

     -n      選択したjailのjail名を新しい名前に置き換えることが出来ます。これ
             はjail名とjailのディレクトリ名を変えます。 "-n new-jail-name
             current-jail-name" jail名は英数字、ダッシュ"-"、アンダースコア"_"
             のみ使うことが出来ます。全ての数字はjail名には無効です。

     -q      小文字qオプションはそれぞれのjailの"allow.quotas"オプションを有効
             にします。このオプションを有効にするためにまず初めにホストコンピ
             ュータのカーネルをクォータ機能を付けてコンパイルする必要がありま
             す。カーネル定義ファイルに"option QUOTA"を追加してください。
             jail(8)で文書化されています。

     -Q      大文字Qオプションはそれぞれののjailの"allow,quotas"オプションを無
             効にします。

     -r      このオプションは選択したjailを"norun"状態にします。
             もしホストコンピュータの"/etc/rc.conf"ファイル
             に"qjail_enable="YES"が存在している時、全てのjaillはホストコンピ
             ュータの起動時に起動されますが、"norun"状態にあるjailはこれらから
             外され、自動起動されません。

     -R      大文字Rオプションは選択されたjailの"norun"状態を無効にします。

     -s      このオプションはそれぞれのjailのsecurelevelオプションを有効にしま
             す。 jail(8)で文書化されています。これらは5つのセキュリティレベル
             があります。どんなスーパーユーザのプロセスでもレベルを上げること
             は出来ますが、下げることは出来ません。セキュリティレベルは以下の
             ようになっています:
             (訳者注:ここからjman securelevelの内容を引用)

              -1    常に危険なモード  システムは常にレベル 0 モードで走行しま
             す。これ は初期値のデフォルトです。

              0    危険なモード  変更不可 (immutable) フラグや追加のみ
             (append-only) フラグはオフにできます。全てのデバイスは、そのパー
             ミッションに従っ て読み書きされます。

              1     安全なモード  変更不可フラグや追加のみのフラグはオフにでき
             ません。 マウントされたファイルシステムのディスクおよび /dev/mem
             や /dev/kmem や (プラットフォームにあれば) /dev/io は read-only
             となり ます。カーネルモジュール (kld(4) 参照) は、ロードおよびア
             ンロードで きません。

              2     安全度の高いモード  レベル 1 のモードの効果に加え、ディス
             クはマウ ントされていようといまいと、 (mount(2) を除き) 常に
             read-only とな ります。このレベルは、ファイルシステムをアンマウン
             トして変更を加え ることを不可能にします。また、システムがマルチユ
             ーザで走行中に newfs(8) を実行することも出来なくなります。
              .br
              更に、カーネル時間の変更は 1 秒以内に制限されています。これ以上
             変更 しようとすると、 Time adjustment clamped to +1 second という
             メッセージをログします。

              3    ネットワークの安全モード  安全度の高いモードに加え、 IP パ
             ケット フィルタルール (ipfw(8), ipfirewall(4), pfctl(8) 参照) を
             変更不可能 とし、 dummynet(4) や pf(4) の設定を修正不可能とします
             。
              .br (訳者注:引用ここまで)

             実行可能な読み込み専用のnullfsであるシステムの全てが、ファイル内
             容を変えたり、ファイルをそれらのディレクトリに加えることを不可能
             にするファイルシステムをマウントしたので、このqjailのjailシステム
             に本当に当てはまりません。これはそれぞれのjailの原則にもとづいて
             提供することができるため、securelevelのパラメータよりもはるかに強
             いjailのセキュリティの形です。

     -S      大文字Sのオプションは、それぞれのjailのsecurelevelオプションを無
             効にします。

     -t      小文字tのオプションは、それぞれのjailの"allow.mount.tmpfs"オプシ
             ョンを有効にします。これは、jailの中のディレクトリにマウントす
             るtmpfsに制限されます。

     -T      大文字Tのオプションは、それぞれのjailの"allow.mount.tmpfs"オプシ
             ョンを無効にします。

     -v      小文字vのオプションはそれぞれのjailの"vnet"オプションを有効にしま
             す。
             警告:VIMAGE(仮想ネットワークスタック)の10.0-RELEASEバージョンは
             非常に実験的な機能で、信頼できません。
             より新しいRELEASEバージョンで恐らくここに別の情報を伝えるでしょう
             。 vnet機能を動かす前に、Vimageはホストコンピュータのカーネル定義
             ファイルに追加してコンパイルする必要があります。 "option VIMAGE"
             をカーネル定義ファイルに追加してください。

             ファイルはそれぞれのjail名のために"/usr/local/etc/qjail.vnet"で作
             成されます。そしてそのvnet jailのためにjail(8)の定義ステートメン
             トを含みます。ユーザは必要ならばjailの定義ステートメントを修正す
             るかもしれません。そしてそれはネットワークをセットアップするため
             のスクリプトである"/usr/local/bin/qjail.vnet.be"
             と"/usr/local/bin/qjail.vnet.ng"を複製するか修正することも含まれ
             ます。これらのスクリプトは、ホストコンピュータのIPアドレススキー
             ムかNAT構成で動かないと保証されるテンプレートです。ホストコンピュ
             ータのIPアドレススキームとNAT構成、またはどちらかをvnet IPアドレ
             スのスクリプト割り当てに取り込むのに選ぶ方法のために、あなたは一
             方を修正しなければなりません。

             vnet/vimage jailを停止する時、再起動から復旧したときの失われたメ
             モリページについて、エラーメッセージが手に入ります。詳細は
             PR#164763を見てください。聞こえは普通よりも悪く聞こえます。 1000
             回の起動/停止サイクルを行ったとき、失ったメモリの量はたった30メガ
             バイトに終わったことをテストが示しました。この結果がvnet/vimage
             jailを使うことに対する"名演技"であるか、または嘘かを決めるのはあ
             なた次第です。

             ベースシステムで提供される3つのファイアウォールソリューションのう
             ち、IPFWファイアウォールだけは、ホストコンピュータとvnetの両方で
             同時に動かすことが出来ます。 vnet jailの中でIPFWを機能させるため
             にカーネルコンパイル時、"option IPFIREWALL"と"option
             IPFIREWALL_DEFAULT_TO_ACCEPT"は"option VIMAGE"と一緒に含まれてい
             なければなりません。
             IPFW dummynetとカーネルNAT は起動時にシステムのフリーズを引き起こ
             します。ホストコンピュータの"/var/log/security"ファイルにホストコ
             ンピュータのIPFWのログと一緒にvnet jail のIPFWのログが混ざってい
             ます。
             IPFILTERは起動時にページフォールトを引き起こします。
             PFファイアウォールはホストコンピュータで動きますが、vnet jailでは
             動きません。

             vnet jailの起動と停止の構成と、コントロールは単純です。本当に難し
             い部分は、LANやインターネットと通信を交換するvnet jailのためのネ
             ットワークアクセスを作成するところです。これを達成するために、2つ
             の方法が利用できます; if_bridge/epairを使う方法と、netgraphを使う
             方法です。 netgraphを使う方法は、使える用途が素晴らしく広いが、ネ
             ットワークについて先進の知識をユーザに要求します。
             ig_bridge/epairを使う方法は、より単純で、通常の使用であれば十二分
             に適切です。これは使用について推薦された方法です。 "ifconfig
             vnet"コマンドは、vnet jailの名前が最大12文字に制限されています。
             スクリプトはそれらの独特な要求のために修正するかもしれない両方の
             方法に対して用意されています。警告:あなたが使用に選んだどんな方法
             も、vnet jailのために使われなければなりません。この方法を一緒に使
             うと、ホストシステムをフリーズさせると保証します。

             ホストシステムを覆い隠すように増加するフリーズやページフォールト
             のため、vnet jailはjailのディレクトリツリー型のファイルシステムの
             みに制限されます。これらを修復するために要求された手動の努力は、
             許可されたイメージ化jailタイプはありませんでした。時々、vnetシス
             テムのフリーズはどんなオープンファイルの内容でもファイル名だけを
             残して消えてしまう原因になる場合があることを、経験は示しました。
             qjailの内部の定義と制御ファイルに、そして少ない頻度でqjailの実行
             可能なネットワークスクリプトに影響をあたえるます。これらのファイ
             ルの現在のバックアップを作成するために、"archive -s"オプションを
             使用するよう、強く勧めます。 "restore -s"オプションを使えばvnetシ
             ステムがフリーズしたあとでもとても単純なリカバリプロセスによりそ
             れらのファイルをリストアします。

     -V      大文字Vオプションは、それぞれのjailの"vnet"オプションを無効にしま
             す。

     -w      このオプションはそれぞれのjailの"vnet.interface"オプションを有効
             にします。あなたがvnet[vimage]にて通信を交換したい、インターネッ
             トに面しているか、LANサーバに面しているNIC(ネットワークインターフ
             ェイスデバイス名)を配置してください。

     -W      大文字Wオプションは、それぞれのjailの"vnet.interface"オプションを
             無効にします。

     -x      小文字xオプションは、それぞれのjailの"allow.mount.zfs"オプション
             を有効にします。そのオプションを用いる前に、必須なホストコンピュ
             ータの条件があります。ホストコンピュータはzfsで定義されアクティブ
             になっているハードディスクスペースの一部または全部を持っていなけ
             ればなりません。 zfsファイルシステムをjail内から作動するように構
             成する方法に関する情報については、zfs(8)を見てください。
             "exec.prestart"または"exec.poststart"パラメータは、望ましいzfsコ
             マンドを発行することを自動化するのに用いられるかもしれません。
             これはjail(8)で文書化されています。

     -X      大文字Xオプションは、それぞれのjailの"allow.mount.zfs"オプション
             を無効にします。

     -y      小文字yオプションは、それぞれのjailの"allow.sysvipc"オプションを
             有効にします。 System V IPC(セマフォ)へのjailのアクセスの範囲内で
             、プロセスを与えます。有効にしたsysvipcは共有メモリに関してかなり
             安全ではありません。もし必要不可欠でなければ、この機能が使われて
             はいけません。その時、他のいかなるオプションも使用できません。
             ,br これはipcs(1)で文書化されています。

             例:naigosの主要な競争相手であるZabbix(システム管理ツール)は
             、"allow.sysvipc"の有効化を必要とします。

     -Y      大文字Yオプションは、それぞれのjailの"allow.sysvipc"オプションを
             無効にします。

     jailname
             "-d","-i"と"-n"以外の全てのオプションについては、スペース区切りで
             複数のjail名を入力することを許されています。グループ接頭辞オプシ
             ョンは有効化されています。"xxxx="は"xxxx"という文字列にマッチして
             いる全てのjail名のリストを表示します。等号"="は、jailのリストを作
             成するために使われ、等号の左側の全ての文字列が検索文字列として用
             いられるようになっていることを示すワイルドカード記号です。 jail名
             は必須パラメータです。 qjailの範囲内の全てのjailをリストするため
             に、"qjail list"コマンドを使用してください。

qjail update
     sharefs上のPorts collectionの追加または更新と、sharedfsのホストシステムバ
     イナリとそれらを同期する能力を提供します。

     -z      "install"サブコマンドにて指定したゾーンと同じゾーンを指定します。

     -b      FreeBSD jailの基本的な必要条件は、jail環境とホストコンピュータが
             システムバイナリの同じバージョンを走らせるということです。
             FreeBSD-updateユーティリティがRELEASEのバージョンを測定するために
             ホストシステムを調べるだけであるので、jail環境では適用できません
             。 sharedfsのソース上でmake buildworld/installworldを実行すること
             は、努力の浪費で、(qjail updateは)既にこうした後の資源です。この
             オプションは、qjail環境においては"make buildworld/installworld"を
             時代遅れにします。

             このオプションは、sharedfsと、ホストシステムバイナリからsharedfs
             にコピーしたものから全てのシステムバイナリを削除します。セキュリ
             ティ最新版を適用するか、1つのRELEASEからもう1つの新しいRELEASEま
             でGENERICホストをアップグレードするためにホストシステム
             でFreeBSD-updateを走らせたあとに、またはシステムバイナリを更新し
             ているホストで"make buildworld/installworld"を実行して更新された
             システムバイナリを使われることを目的とします。基本的に、ホストシ
             ステムを更新して、両方の環境を同期させているsharedfsへコピーして
             ください。

             ノート:同じ主要なRELEASEの中で1つのサブバージョンからより新しいサ
             ブバージョンへ行くとき、例えば; 8.0から8.1へ行くときはインストー
             ルされたports/packageをアップデートする必要はありません。より新し
             いメジャーリリースへ行くとき、例えば; 8.1から9.0に行くときはイン
             ストールされたports/packageをアップデートする必要があります。

     -p      このオプションは"portsnap FreeBSD.org"(475MB)から取得し展開す
             るportsnapユーティリティを呼び出します。設計上、sharedfsファイル
             システムは"qjail install"によって自動的では取り付けられな
             い"usr/ports"ディレクトリを含みます。

             "sharedfs/usr/ports"に取り付けるためにportsnapを実行することに代
             わるものは、一時的にこのように"mv"コマンドを用いてjailが利用でき
             るホストコンピュータの"/usr/ports"ディレクトリツリーを作成するこ
             とです:
              mv /usr/ports /usr/jails/sharedfs/usr このコマンドを実行をした
             あと、
              .br
              mv /usr/jails/sharedfs/usr/ports /usr

              Portsnapはまず最初に完全なPorts Treeを含んでいる圧縮ファイルをダ
             ウンロードします。
              通常、ダウンロードには15分以上かかります。
              最初の実行時、展開は実行され、"/usr/ports"のサブディレクトリに作
             成されます。
              以降の実行時では、/usr/portsディレクトリが存在しているとき
             、/usr/portsディレクトリツリーは変更されたか加えられたものだけの
             時に取り付けられます。
              これは、portsnapのデフォルトの振る舞いです。この振る舞い
             は"/usr/local/etc/qjail.portsnap.conf"ファイルの内容を変えること
             によっていくらか変更することできます。あなたが"/usr/ports"ディレ
             クトリツリーに指定したportsカテゴリを取り付けることを望まないなら
             ば、REFUSEステートメントを追加します。 REFUSEへの理想的な候補は、
             英語以外の言語、astro,biogy,cad,finance,games,math,mboneとscience
             です。そこから、通常のjailのportの使用に基づいくREFUSEに、あなた
             はさらなるカテゴリを選ぶことができます。詳細は、FreeBSD Handbook
             のAppendixA.6-Using Portsnap and Chapter 24.3 Portsnapと"man
             portsnap"を見てください。

     -P      大文字Pオプションを使う時、既存のportsディレクトリツリーを削除し
             て、ホストコンピュータの"/usr/ports"ディレクトリツリーか
             ら"/ust/jails/sharedfs/usr/ports"ディレクトリツリーにコピーします
             。

     -S      大文字Sオプションを使う時、既存のsrcディレクトリツリーを削除して
             、ホストコンピュータの"/usr/src"ディレクトリツリーか
             ら"/ust/jails/sharedfs/usr/src"ディレクトリツリーにコピーします。

     -l      これは/var/log/qjail.logに全てのqjailコマンドとエラーメッセージの
             ログをオンまたはオフにするためのオプションです。。これらのログエ
             ントリーは 日付/時間 とコマンドを実行したユーザアカウントの名前
             というプレフィックスになっています。このエントリ
             は/etc/newsyslog.confによりqjail.logファイルに自動で作成されます
             。

qjail logmsg
     このサブコマンドは、サブコマンドのあとに原文のコメントを入力し、qjailのシ
     ステムログに毎回投稿します。彼ら自身の文書をログに記録する機会をユーザに
     提供します。"what"や"why"や"their doing "や"things"。全く自由な書式です。

qjail help
     "help"機能は全てのサブコマンドの構文を表示します。

     manual  man 8 qjailを起動し完全なマニュアルを表示します。

GENERAL QJAIL USAGE TIPS
     *   スーパーユーザログインアカウント(例えば"wheel"グループに
          属している"root"または通常のログインアカウント)に、
          Qjailは動かされなければなりません。
         wheelグループのユーザアカウントなので、ユーザアカウントで
         ログインした後に"su"コマンドを発行しないといけなくて、
         qjailが必要としているスーパーユーザ権限を得るために、
         rootパスワードを入れなければなりません。
         必要であれば、"su"の代わりに"sudo"を使うことが出来ます。

     *   データベースを持つjailの規則正しい停止、またはファイルの
          書き込みバッファの遅延を持つ他のアプリケーションは、
          "qjail stop"コマンドまたは""shutdown now"コマンドを
          発行することにより達成できます。
          動いているjailにhaltやreboootコマンドを用いてリセットや
          電源OFFにしても、すぐに停止できないいくつかの
          アプリケーションはこれを寛容にみることができません。
          常に、シャットダウンコマンドを使ってください。

     *   設計上、sharedfsファイルシステムは"qjail install"
          によって自動的では取り付けられない"usr/ports"と
          "usr/src"ディレクトリを含みます。
          一時的にこのように"mv"コマンドを用いてjailが
          利用できるホストコンピュータの"/usr/ports"と
          "/usr/src""ディレクトリツリーを作成することができます:
          mv /usr/ports /usr/jails/sharedfs/usr
          上記コマンドを実行をしたあと、
          mv /usr/jails/sharedfs/usr/ports /usr

     *   もし全てのjailが同じPortsを使うことを望むが、
          jailがこのPortsを編集しなければならない環境になったら、
          以下のことをすることで実現できます。
          望むパッケージ、"sharedfs/usr/ports/packages/directory"
          を取り付けてください。
          全てのjailはこの共有ディレクトリにアクセスします。
          それから他のjailの全ての複製を作るソースとして
          使われる"種のjail"を作成してください。1番目に、
          テンプレートを使用している基本的な"種のjail"を作成してください。
          その"種"に、独特の"/etc"コンフィグファイルを含ませるため
          カスタマイズしたくなるかもしれません。さらに、あなたは
          "種のjail"のコンソールを起動することができ、自分の望む
          Portsの場所で、予め事前に設定されたパッケージまたは
          "make install"を行い、"pkg install"のようなパッケージの
          カスタム化を行うことができます。満足のいく"種のjail"が
          出来上がったなら、それをアーカイブしてください。
          "create"サブコマンドの"-a"オプションをアーカイブした
          "種のjail"に指定して、他のjailを作るためのテンプレートの
          ソースとして使ってください。"種のjail"をベースにした
          大規模な複製されたjailを作成するために"-a""オプションと
          同時に"-d"や"-l"オプションを使うこともできます。

     *   あなたが全てのjailを同じ状況にしたいのなら、先に
          述べたような"種のjail"を作ればその際選択したPortsと
          同じものを作ることが出来ます。自分の満足のいくように
          作成した"種のjail"があるとき、"/usr/jails/templete"
          ディレクトリを削除し、"種のjail"のテンプレートディレクトリを
          "/usr/jails/templete"ディレクトリにリネームしてください。
          (SEEDとは"種のjail"の名前)
         mv /usr/jails/SEED /usr/jails/template
         rm /usr/local/etc/qjail.local/SEED
         rm /usr/local/etc/qjail.global/SEED
         rm /usr/local/etc/qjail.fstab/SEED
         この時点から、テンプレートを用いて作られる全ての
         新しいjailはあなたの設定したportsを含みます。

     *   デフォルトのフレーバーの"/etc/rc.conf"には
         以下の様なステートメントがあります;
         cron_flags="$cron_flags -J 60" これは"/etc/crontab"に
         記述してある、全てのスーパーユーザで動くジョブの
         "ゆらぎ"(ジッター)を有効にします。そして、初期状態の全ての
         jail環境はcrontabファイルのスーパーユーザによって起動されます。
         ジッターはこのように働きます:
         "/etc/crontab"ファイルの中で実行するコマンドは、cronによって
         1から60秒までの範囲のランダムな秒数でスリープします。多くの
         cronのジョブが全ての時間の最初、例えば各時間の最初の分の初めに
         始まりそうであるとき、このオプションは同時起動による
         ホストシステムの過負荷を減らすのを助けます。cronによる
         jailを配置するジョブの始まりをランダムに分散させるための
         このステートメントを外してしまうと、恐らくホストシステムは
         停止状態に陥ってしまうでしょう。
         デフォルトのフレーバには、jailのためにカスタマイズされた
         もう一つの構成ファイルがあります。"/etc/periodic.conf"は
         レポートのための電子メール送信を無効にするかわりに、
         "/var/log"ディレクトリに毎日、毎週、毎月のログを作成します。
         これらのログは、"/etc/newsyslog.conf"のjailsの項目で設定された
         間隔で削除されます。

     *   FreeBSD jailシステムはホストのオペレーティングシステムバイナリで動いているバージョンと同じバージョンのjail
         システムを必須条件とします。まず初めに、より新しい
         RELEASEバージョンで動いているホストシステムを手に
         入れなければなりません。それはゼロからの新規インストール
         をするか、またはホストコンピュータの現在のRELEASEバージョン
         から、Freebsd-updateユーティリティを使用してアップデート
         するか、svnによって更新したシステムソースで
         "make buildworld/installworld"コマンドを使用することによって
         アップデートしてください。以下は新しいRELEASEバージョンが
         動いているホストシステムの後の、qjailを動かす前にしてください。
         再び"install"サブコマンドを実行することで、既存のインストール
         しているjailを妨げることなく、ホストコンピュータの新しい
         RELEASEバージョンと同じバージョンをjail環境にインストール
         することができ、"update"サブコマンドの"-b"オプションで
         sharedfsにコピーできます。もしより新しいメジャーRELEASEへ
         行くならば:
         6.4から7.1にアップデートし、7.2から8.0にアップデートします。
         それから、既存の全てのjailのportsとパッケージは新しいメジャー
         RELEASEバージョンに適応するためにアップデートを必要とする
         ことを覚えておいてください。他方、もし同じメジャーRELEASE
         バージョン内のマイナーバージョンアップを行いたいのならば:
         7.1から7.2へのアップデートと、8.0から8.1のアップデートは、
         jail内のportsとパッケージのアップデートは必要ありません。

     *   それぞれのjailのコンソールログはホストコンピュータの
          "/var/log/"ディレクトリの"jail_*_console.log"ファイルに
          あります。"*"とは、jail名のことです。これらのログの
          ファイルサイズはあまり増えませんが、もしjailが長い間
          使っているものならば、ホストコンピュータの
          "/etc/newsyslog.conf"ファイルに、自動的に削除をする
          ようなステートメントを追加しなければなりません。ホスト
          コンピュータの全ディスク領域がjailのコンソールログ
          ファイルの肥大化によって圧迫しシステムが停止してしまう
          のは望ましいことではありません。

     *   qjailがイメージ化されたjailを起動すれば、そのjailの
         スパースイメージファイルはホストシステムから
         アクセスできるようなります。ホストコンピュータで
         "cd"コマンドを使えば、ディレクトリツリー型jailのように
         イメージ化されたjailのディレクトリにアクセスができます。

     *   jail内でpingコマンドを発行すると
         "Operation not permitted."エラーを返します。これは
         qjailの制約ではなく、FreeBSD jailのデフォルトの設計です。
         このデフォルト設定は、ユーザやjail内のアプリケーションが
         生のソケットを生成するのを許可しません。これは
         セキュリティ機能です。生のソケットを有効にしたjailユーザ
         はPerlPythonやその他のPortユーティリティを、
         インターネットへの攻撃を開始するために使うことが出来ました。
         "config"サブコマンドの"-k"オプションを使えばそれぞれの
         jailで"allow.raw_sockets"機能を有効にすることができます。

     *   (whoisコマンドやdig(訳者注:FreeBSD10以降ではdrill)コマンド
         を利用して)jailをインターネットへアクセスできることを
         確認したら、jailのコンソール通してか、jailのオプションを
         有効にすれば、sshを通して、(ports tree updateやsvn updateや
         portsまたはpackage installなどで)全てのアプリケーションの
         インストールができるようになります。

     *   RELEASE-9.0ではjail用の仮想ネットワークスタックを持たない
         ので、jailにファイアウォールを用いることはできません。ホスト
         コンピュータのファイアウォールとネットワークは操作できます。

     *   もし自分自身で全てのjailの起動を管理したいなら、(例えば
          システム起動時にjailを自動起動させたくないのであれば)
          ホストコンピュータの"rc.conf"ファイルに"qjail_enable="YES"
          ステートメントを置かないようにしてください。

     *   何らかの理由でqjailでのjail環境を完全に削除したいのであれば、
          以下のコマンドを実行すればゼロからまた"install"コマンドを
          発行する状態までやり直すことができます:
          rm -rf /usr/jails
          rm -rf /usr/local/etc/qjail.local
          rm -rf /usr/local/etc/qjail.global
          rm -rf /usr/local/etc/qjail.fstab
          rm /var/log/jail_*
          rm /var/log/jails.lo*

ファイル一覧
     /usr/local/bin/qjail            メインの機構
     /usr/local/etc/rc.d/qjail.bootime  起動時にjailを起動する
     /usr/local/etc/qjail.local/*   ゾーンが設定されていないjailの定義ファイル
     /usr/local/etc/qjail.global/*   ゾーンが設定されている全てのjailの定義フ
     ァイル
     /usr/local/etc/qjail.fstab/*    それぞれのjailへのsharedfsのヌルマウント
     の記録
     /var/run/jail_*.pid             起動しているそれぞれのjailのプロセスID
     /var/log/jail_*_console.log      * = jail名
     /usr/local/share/examples/qjail  フレーバーの例
     /usr/jails                       qjailによるjailの場所
     /usr/jails/archive               qjailによるアーカイブの場所
     /usr/jails/flavors               qjailによるフレーバーの場所
     /var/log/jails.log               qjailによるシステムログファイルの場所

SEE ALSO
     qjail-intro(8), qjail-howto(8), jail(8), mount_nullfs(8),
     mdconfig(8), devfs(5), portsnap(8) freebsd-update(8)

AUTHOR
     ezjail version 3.1 which qjail was forked from was written by
     Dirk Engling <erdgeist@erdgeist.org>
     http://erdgeist.org/arts/software/ezjail/

     qjail versions 1.0 through 2.2 written by
     The Qjail project team, Angeles City, Philippines
     Joe Barbish <qjail@a1poweruser.com> for the Qjail project team.

     qjail version 3.0 and newer written by
     Joe Barbish <qjail@a1poweruser.com>
     http://qjail.sourceforge.net/

     FreeBSD 9.3                      June 22, 2014


     訳者:今井志有人<shutingrz@gmail.com>

unboundが保存するキャッシュ情報について

dump_cache

DNSキャッシュポイズニングの勉強中、キャッシュサーバの動作を知るためにキャッシュのダンプをしたくなる時があります。
unboundでは、以下のコマンドでキャッシュ情報を見ることができます。

$ unbound-control dump_cache

START_RRSET_CACHE
;rrset 86394 1 0 1 0
a.gtld-servers.net.     172794  IN      A       192.5.6.30
;rrset 86394 13 1 8 0
.       518394  IN      NS      k.root-servers.net.
.       518394  IN      NS      b.root-servers.net.
.       518394  IN      NS      l.root-servers.net.
.       518394  IN      NS      d.root-servers.net.
.       518394  IN      NS      e.root-servers.net.
.       518394  IN      NS      m.root-servers.net.
.       518394  IN      NS      h.root-servers.net.
.       518394  IN      NS      a.root-servers.net.
.       518394  IN      NS      g.root-servers.net.
.       518394  IN      NS      j.root-servers.net.
.       518394  IN      NS      f.root-servers.net.
.       518394  IN      NS      i.root-servers.net.
.       518394  IN      NS      c.root-servers.net.
.       518394  IN      RRSIG   NS 8 0 518400 20160416050000 20160406040000 60615 . pH3jzvLP/4XK8zYrHf9+MUnQra95+J0eSbAo1Z0o46+iSojyaphy/6DJ6zUcPgiZXVF6bsZT/rKdCVy7OMf3aeCvmuGHXkGOHbp2ZQfj5vuLJ5rW/ICoJpWwzXghitvlfk0WpItaLMOwroDLNdqXL4BM5CO0Ndp0Ah+5MUwQ8PY= ;{id = 60615}
;rrset 3598 1 0 3 0
ns.shutingrz.com.       3598    IN      A       133.242.130.136
;rrset 3598 1 0 8 0
www.shutingrz.com.      3598    IN      A       133.242.130.136
;rrset 86398 1 0 1 0
ns2.shutingrz.com.      172798  IN      A       133.242.130.136
;rrset 3592 1 0 7 0
shutingrz.com.  3598    IN      NS      ns.shutingrz.com.

(この内容は抜粋したものです。)


この記事では、ここのキャッシュ情報の信頼度を紹介します。

rrset行

全てのrrsetのキャッシュには、キャッシュをした際のメタデータが付与されています。
各rrsetの上についている「;rrset」から始まる行です。
この;rrsetの読み方を知ることで、キャッシュ情報を知ることができるのです。

;rrsetについてはmanにも記載されていないので、unboundのソースを読む必要があります。
読んだ結果、以下の意味だとわかります。

;rrset [残りのTTL], [RRSetにあるRRの数] [RRSetにあるRRSIGの数] [このRRSetの信頼度(優先順位)※1] [RRSetのセキュリティ状態]

DNSキャッシュポイズニングで最も重要は情報は、※1の「このRRSetの信頼度(優先順位)」です。
この部分の数値に対応するものを以下に記載します。

数値 意味
0 initial value for trust
1 Additional information from non-authoritative answers
2 Data from the authority section of a non-authoritative answer
3 Additional information from an authoritative answer
4 non-authoritative data from the answer section of authoritative answers
5 Data from the answer section of a non-authoritative answer
6 Glue from a primary zone, or glue from a zone transfer
7 Data from the authority section of an authoritative answer
8 The authoritative data included in the answer section of an authoritative reply
9 Data from a zone transfer, other than glue
10 Data from a primary zone file, other than glue data
11 DNSSEC(rfc4034) validated with trusted keys
12 ultimately trusted, no more trust is possible


この数値は大きいほど信頼度が高くなっています。また、この優先順位はRFC2181 5.4.1 Ranking Dataにほぼ対応しています。
Ranking Dataと異なる点については、unboundのソースのutil/data/packed_rrset.hに記載してあります。以下に引用します。

/**
* RRset trustworthiness. Bigger value is more trust. RFC 2181.
* The rrset_trust_add_noAA, rrset_trust_auth_noAA, rrset_trust_add_AA,
* are mentioned as the same trustworthiness in 2181, but split up here
* for ease of processing.
*
* rrset_trust_nonauth_ans_AA, rrset_trust_ans_noAA
* are also mentioned as the same trustworthiness in 2181, but split up here
* for ease of processing.
*
* Added trust_none for a sane initial value, smaller than anything else.
* Added validated and ultimate trust for keys and rrsig validated content.
*/

スタブリゾルバがwww.shutingrz.comのA RRをフルリゾルバ兼キャッシュサーバに問い合わせをし、キャッシュに該当のRRが存在しなかった場合、フルリゾルバはルートから順にwww.shutingrz.comのA RRを問い合わせをします。
問い合わせし、その内容をキャッシュしたときのダンプが記事冒頭にある出力となっています。

各RRSetについて見ていきます。

;rrset 3598 1 0 8 0
www.shutingrz.com. 3598 IN A 133.242.130.136

スタブリゾルバがwww.shutingrz.comのA RRを問い合わせしたので、信頼度が8と、大きくなっています。キャッシュサーバがこれより大きい信頼度を持つRRSetをキャッシュする機会はほぼありません。

;rrset 3598 1 0 3 0
ns.shutingrz.com. 3598 IN A 133.242.130.136

ns.shutingrz.comは、www.shutingrz.comのA RRの権威ある応答に付随するAdditional Sectionに存在したので信頼度は3となっています。

;rrset 86398 1 0 1 0
ns2.shutingrz.com. 172798 IN A 133.242.130.136

ns2.shutingrz.comは、shutingrz.comの委譲元であるgtld-servers.netのNSの、shutingrz.comの委譲応答には含まれていましたが、www.shutingrz.comのA RRの権威ある応答に付随するAdditional Sectionに存在しなかった(Lame Delegation)ので信頼度は1となっており、とても低い信頼度となっています。



参考

この信頼度を利用した委任インジェクション、移転インジェクションについては以下のURLを参考にしてください。
キャッシュポイズニングの開いたパンドラの箱 -1-
キャッシュポイズニングの開いたパンドラの箱 -2-

あるDNSサーバのTTLの短さとLame DelegationについてIPAに報告したら

届出内容を確認したところ、下記の判断理由の通り、本枠組みにおける
脆弱性ではないとの判断に至った為、取扱いを終了させて頂こうと考え
ておりますが、如何でしょうか。

取扱いに問題がある場合は 10 営業日を目処にご連絡をお願い致します。

ただし、取扱いを終了した場合でも、参考情報としてウェブサイト運営
者へ連絡したいと考えております。

【判断理由】

  • ------------------------------------------------------------------

届出頂いた情報は 2 点ありますので、それぞれ分けて判断理由を記載い
たします。

■1. TTL 値が短い点について
A レコードの TTL 値が短いというご指摘に関しまして、ガイドライン
おける「ウェブアプリケーションにおいて、ウェブサイト運営者の不適
切な運用によって、(中略)セキュリティが維持できなくなっている状
態」に該当するか検討いたしました。

まず、参考文献で頂いた情報から、TTL 値が短い事で DNS キャッシュポ
イズニングのリスクが高まる事は同意いたします。

しかし、A レコードの TTL 値につきまして、RFC2181 等を確認した所、
A レコードの TTL 値に関する推奨値等の取り決めはありませんでした。
また、IPA で確認した限り TTL 値が小さい事により DNS キャッシュポ
イズニングに対して脆弱であると言える情報は確認できませんでした。
参考文献の文中に記載されている通り、A レコードのTTL 値が 30 と短
い場合は攻撃が成功する確率が高まります。しかし、文献にもある通り
CDN 等のような意図的に TTL 値を短く設定している場合があります。そ
のため、運営者の設定が不適切かどうかは判断出来ません。

よって、本届出はガイドラインにおける「ウェブアプリケーションにお
いて、ウェブサイト運営者の不適切な運用によって、個人情報等が適切
なアクセス制御の下に管理されておらずセキュリティが維持できなくな
っている状態」には該当しないと判断しました。

■2. Lame Delegation 状態である点について
Lame Delegation 状態によって DNS キャッシュポイズニングが容易にな
るとのご指摘に関してですが、Lame Delegation 状態でない場合に比べ
DNS キャッシュポイズニングに対してリスクが高まることは同意いた
します。ただし、リスクが高まる条件は「カミンスキーアタック」を行
わない手法に限定されると思われます。

Lame Delegation 状態のドメインは権威 DNS サーバへの問い合わせ回数
が正常な状態に比べて増加するため、毒入れが成功する可能性が上がり
ます。しかし、「カミンスキーアタック」によって Lame Delegation 状
態では無いキャッシュサーバへも問い合わせ回数を増加させることがで
きます。そのため、毒入れが成功する確率は最大でも「カミンスキーア
タック」と同等であると判断しました。

「カミンスキーアタック」を実行される事はネットワークの仕組み上防
げない事から「カミンスキーアタック」以上の成功率が考えられる場合、
脆弱性と判断する可能性があります。しかし、本問題を悪用した場合の
功率は同程度の問題であるため、ガイドラインにおける「ウェブアプ
リケーションにおいて、ウェブサイト運営者の不適切な運用によって、
個人情報等が適切なアクセス制御の下に管理されておらずセキュリティ
が維持できなくなっている状態」には該当しないと判断しました。

但し、当該ドメインの設定が「Lame Delegation」状態である事につき
まして、不適切な状態であるためウェブサイト運営者に参考情報として
通知すべきと判断しました。

  • --

1のTTLの短さについての回答は言いたいことはわかるが・・・。
2のLame DelegationによるDNSキャッシュポイズニングに対しての弱さは、カミンスキー型攻撃手法がある以上、今更そんな問題どうでもいいよっていうのがIPAの見解らしい。
なんだかなぁ・・・


追記(2014/12/31)
私がIPAに送った報告内容のうち、lame delegationについて報告した部分を記載します。digコマンドの結果と実在するホスト名は隠しました。改変した内容は[]に囲まれています。

(引用始まり)

以下はa.dns.jpに対して[www.example.jp]のAレコードについて非再帰問い合わせをしたdigコマンドです。

[ここにdigコマンドが入る]

上記のAUTHORITY SETIONのNSレコードのひとつである、 [ns1.example.net] は稼働していません。
これはLame delegationです。


キャッシュサーバが[ns1.example.net]に問い合わせをした場合、[ns1.example.net]は稼働していないので、
応答がありません。その無応答時間を利用してより大量の偽応答をキャッシュサーバに送信することでDNSキャッシュポイズニングがしやすくなります。

(引用終わり)

また、Twitter上で、lame delegationによってリスクが高まるのはlame delegationがどのようなものかによると指摘されましたが、今回はns1.example.netからの応答が返ってこなく、タイムアウトになるケースです。

追記終わり(2014/12/31)

さわやかのハンバーグが美味しくて交通事故起こした

炭焼きレストランさわやか Advent Calendar 2014 - Adventar
炭焼きレストランさわやか Advent Calendar 2014 2日目


忘れもしません。あれは三保の松原世界文化遺産に登録されて1年のことでした

仲のいい4人の友達と一緒に静岡旅行をしたんです。
三保の松原は、曇りの松原(笑)でした。

気を取り直して、次の目的地、さわやかに行きました。
そこではおにぎりハンバーグランチ頼みました。
もう、ビッキリしちゃいました
僕にはブロンコビリーとの味の違いがわからなくて、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

ずっと悩んでました。さわやかってなんだろうって
そしたら、交通事故起こしました。
気が変になっちゃったんでしょうね。
静岡の山奥のここでぶつかりました。
Google マップ - 地図検索


わかったんです。「これ」こそがさわやかの魅力なんだってね、、、うわおいやめr



P.S.
幸い、傷ついたのは車と僕の心だけです。

gvit

kernel compile

include GENERIC
ident VIMAGE

options VIMAGE
options IPFIREWALL
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=1000
options IPFIREWALL_DEFAULT_TO_ACCEPT
options DUMMYNET
options RACCT
options RCTL

install

pkg install qjail

rc.conf nat

natd_enable="yes"
natd_interface="eth0"
gateway_enable="yes"
firewall_enable="yes"
firewall_type="open"
dummynet_enable="YES"

/etc/sysctl.conf

net.link.bridge.ipfw=1

/etc/devfs.rules

[devfsrules_jail=5]
add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login
add path zfs unhide
add path mem unhide
add path kmem unhide
add path 'bpf*' unhide
add path net unhide
add path 'net/*' unhide

/usr/local/bin/qjail

echo "devfs_ruleset" = \"5\";"

#echo "ip4.addr = ${ip4};"

host sharedfs&jailed directory

mkdir /usr/jails/sharedfs/pkg


起動時
cd third && python27 ./webshell.py --ssl-disable -i [リッスンするIPアドレス] -d
を実行しないとコンソール機能は使えない

AndroidとiOSのLINEのデータベースの比較 トーク編

軽い気持ちでiPhoneからAndroidにLINEのデータ移行しようと思ったら無理でした。
まずデータベースの構造が全然違いました。
トーク画面のトークデータベース部分のAndroid,iOSの対応表を作りましたが飽きたのでこれ以上やるつもりないです。
どこかの会社が移行ソフトウェア作ってないのかな?


重要そうなカラムだけです。
各カラムが対応しています。
()でくくられているものはテーブル名です。
[]でくくられているものは別テーブルのデータを参照しています。
[ZSENDER]なら、ZSENDERテーブルのデータが対応しています。
ZSENDER,ZLATITUDEの内容は以下を見てください。
Digital Forensic Artifacts Research: Forensic artifacts in LINE instant messaging app (iOS version)


iOS Android
(ZMESSAGE) (chat_history)
Z_PK id
Z_ID server_id
ZSENDSTATUS type
[ZSENDER] chat_id
[ZLATITUDE] from_mid
ZCHAT conetnt
ZTIMESTAMP created_time
? deliverd_time
Z_OPT status
? sent_count
ZREADCOUNT read_count

カーネルコンパイル時に 「 cc1: error: unrecognized command line option」エラーが出て停止

FreeBSD9.3からFreeBSD10.0にアップグレードしたあと、カスタムカーネルコンパイルする時、

cc1: error: unrecognized command line option "-mno-aes"
cc1: error: unrecognized command line option "-mno-avx"
cc1: error: unrecognized command line option "-Wno-error-tautological-compare"
cc1: error: unrecognized command line option "-Wno-error-empty-body"
cc1: error: unrecognized command line option "-Wno-error-parentheses-equality"
*** Error code 1

Stop.
make[2]: stopped in /usr/obj/usr/src/sys/VIMAGE
*** Error code 1

Stop.
make[1]: stopped in /usr/src
*** Error code 1

Stop.
make: stopped in /usr/src

というエラーが出ました。
コンパイラのcc1に問題があるようです。

The FreeBSD Forums • View topic - build kernel fail
この記事を参考に、
/etc/make.confに

CC=clang
CXX=clang++
CPP=clang-cpp

を追加して再度カーネルコンパイルし直すと、コンパイラがclangになるのでエラーが発生しなくなりました。


以上。