qjail を使って、楽々jail 管理

FreeBSD には以前より、 jail という、軽量なコンテナが標準でついてきます。
割り当てられたファイルシステムとプロセス空間のみ扱えるような分離方法で、CPU資源の振り分けまではできませんが、単機能なサーバを複数建てたいときなどに非常に便利な機能です。

通常、素のままでも使えますが、もうちょっと便利に使うための ports/pkg があります。ezjail やqjail なとです。ここでは qjail を使うことにします。

インストールは簡単です。
ports から sysutils/qjail で make install してもよし、pkg でインストールしてもよし。

次に jail を使うための準備をします。

# qjail install -h ftp2.jp.freebsd.org

-h 以降はネットワーク的に一番近い freebsd の ftp site を指定してください。
しばらくごとごと動いて、プロンプトが帰ってきたら準備完了です。

次に実際に jail 環境を構築してみましょう。

#qjail create -n [nic名] -4 [IPアドレス] [jail名]

これで、構築完了です。親環境のほうで、上記で指定した IP アドレスを受信できるように、 ネットワークインターフェースの設定をちょっと追加します。

# ifconfig [nic名] alias [IPアドレス]/32

また、このままですと、再起動した際に消えてしまうので、 /etc/rc.conf に以下の記述を追加しておきます。

ifconfig_[nic名]_alias0="inet [IPアドレス] netmask 255.255.255.255"

複数追加する場合は、 aliasの後ろの数字を増加させていきます。

あとは jail環境を起動します。

# qjail start [jail名]

立ち上がったがどうか確認するには以下の様にします。

# qjail list

STA JID NIC IP Jailname
--- ---- --- --------------- --------------------------------------------------
DR 22 [nic名] [IPアドレス] [jail名]

JIDの欄が N/A になっていたら動いていません。

では jail環境の中に入ってみましょう。

# qjail console [jail名]

これで jail環境の中に入りました。あとはこの中で環境を構築していきます。
exit で jail 環境から出ることができます。

jail 環境を止めたり、リスタートするには以下のようにします。

#qjail restart [jail名]
#qjail stop [jail名]

また、qjail は作成した jail 環境を手軽にバックアップできます。

# qjail archive [jail名]

すると、デフォルトでは /usr/jail/archive/ 以下に [jail名]@[日時].tar のようなファイルが作成されます。
jaik内で環境構築が終わったら保存しておくとよいでしょう。
また、

#qjail restore [jail名]

すると、保存した環境を戻してくれます。何度も何度もテストを繰り返すような場合、この手のコマンドは非常に便利です。