DragonFly BSDでjail環境を作る その3

DragonFly BSDでjailを構築してみます。前回のDragonFly BSDでjail環境を作る その2からの続きです。

ここではjail側の設定を行います。また、/usr/jail/happyにjailツリーを用意したものとして説明しています。

rc.confの設定

jailツリーのインストール直後には/etc/rc.confが存在しません。 以下の内容で新規作成してください。 ホストからvi /usr/jail/happy/etc/rc.confなどとしてjail内に/etc/rc.confを作成します。

sshd_enable="NO"
usbd_enable="NO"
moused_enable="NO"
sendmail_enable="NONE"
rpcbind_enable="NO"
network_interfaces=""

resolv.confの設定

jailからネットワークの名前解決ができるように/etc/resolv.confを作成します。 特別なことをしないのであれば、ホストのファイルを流用できるでしょう。以下のようにして、ホストのファイルをコピーします。

# cp /etc/resolv.conf /usr/jail/happy/etc/

jail起動

では、jailを起動してみましょう。手動でjailを起動するには/etc/rc.d/jailを使用します。 以下のように、/etc/rc.d/jailに起動を指示するstartとjail名を引数で渡します。

# /etc/rc.d/jail start happy
Configuring jails:.
Starting jails:/etc/rc.d/jail: INFO: Mounting devfs on /usr/jail/happy/dev
/etc/rc.d/jail: INFO: Mounting procfs onto /usr/jail/happy/proc
 happy.smile.

起動できれば、上の例のように起動したjailのホスト名(ここではhappy.smile.)が表示されます。

jailの使用

今回の例では、jailでsshdが動作していません。そのため、jlsおよびjexecを使用してjailへアクセスします。 ここでは説明のため、ホストのプロンプトをhost#、jailのものをjail#とします。

まずは、jlsを使用してみましょう。引数なしで起動してみてください。

host# jls
JID Hostname Path IPs
1 happy.smile /usr/jail/happy 192.168.1.232

起動しているjailの一覧が表示されます。 左から順番に、jailのID、ホスト名、jailツリーの場所、IPアドレスとなっています。

ここで表示されたjailのIDをもとに、jexecコマンドでjail内のプロセスを起動できます。 たとえばhostnameコマンドを、IDが1のjail内で実行するのであれば、次のようにします。

host# jexec 1 hostname
happy.smile

起動するコマンドをシェルにすれば、jail内でrootユーザとして振る舞えます。

host# jexec 1 sh
jail# hostname
happy.smile

これでjailが使用できるようになりました。 設定やプログラムのインストールを自由に行ってください。

[つづくかも]