サーバいじくり雑記

2014年2月16日

FreeBSD10.0Rでjailの設定

Filed under: FreeBSD — bompopo @ 6:56 PM

一昔前のjailの設定は「rc.conf」に「jail_foo_hostname=”bar”」などを列挙していくというどうにも設定として冗長で見難いものでして、「ezjail」などのお手軽構築&設定を行う補助ツールが重宝されました。まぁ今でも重宝しますが、それは設定ではなくてZFSスナップショットやRCTL等の付随的な機能がメインで、設定補助のみを目的としたjail補助ツールの導入はまずないでしょう。

それでは今どきのjail設定をしてみます。

1.jailベース環境構築
ホスト側と同じにするもよし「make buildworld installworld distribution DESTDIR=/foo/bar」や、バイナリ直コピーで環境作るもよし。補助ツールでリリース環境のバイナリ持ってくるのもよし。ここは語らないでも良いでしょう(なぜかベースシステムだけではこの手順だけ昔と変わらないんですよね)。

2.devfsルール作成
「/etc/devfs.rules」を必要に応じて作ります。デフォルトのjailのルールは「/etc/defaults/devfs.rules」に書いてあります。最低限動くだけのunhideですな!

[devfsrules_jail=4]
add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login
add path zfs unhide

通常はこのままでOKですが特別なデバイスを必要とするソフトを動かす場合は個別にunhideしたり権限変えたりします。zvolとかsemとかネットワーク系の特別デバイスとか必要に応じて。アスタリスク使えるのもポイントですね。ここで使ってる50という数字はdevfs.rules内でユニークであればよく勝手にナンバリングします。この番号はあとで使います。

[devfsrules_server_jail=50]
add include $devfsrules_hide_all
add include $devfsrules_unhide_basic
add include $devfsrules_unhide_login
add path zfs unhide
add path 'zvol' unhide
add path 'zvol/storage*' unhide
add path 'zvol/storage*' mode 0666 group operator
add path 'bpf*' unhide

3.jail.confを作る
最初の頃にrc.confに書いていた設定は今や推奨されず、「/etc/jail.conf」に書くことになってます。こんな感じです。詳しくは「man jail.conf」すべし!ちなみに最近のバージョンでは標準のrcスクリプトでvnetが使えます!素晴らしい!

/*
 *共通の設定
*/
allow.raw_sockets = 0;
allow.set_hostname = 0;
allow.sysvipc = 0;
mount.devfs;
exec.start += "/bin/sh /etc/rc";
exec.stop = "";

# jail個別の設定
jailname {
        host.hostname = "jailname";
        path = "/foo/bar";
        devfs_ruleset = "50";
        ip4.addr += "192.168.0.1/32";
        allow.sysvipc = 1;
}

注目は共通の設定が簡単に可能でさらにjail個別でそれを上書きできること。前のrc.conf時代でもできてたけど細かいパラメータを個別にやるのは面倒な上に見辛かった!!その点jail.confはスッキリしててバッチグー!
そしてdevfs_rulesetに先ほど作ったdevfsルールの番号を使っています(デフォルトのjailルールを使う場合はこの行自体いりません)。昔jailができた当初はdevfsのルール名で指定可能だったはずですが、いつの間にか数値しか使えなくなりました。これちょっと不便なんですがなんでなんでしょう。

4.rc.confを編集
「/etc/rc.conf」を編集しますが、最低限の記述になりました。これとは別にネットワークの記述は必要ですがvnet使うならそれはjail.confに書きましょう。

jail_enable="YES"
jail_list="jail_name"

5.jail起動!
今は標準rcスクリプトで万事オーケー。

$ sudo service jail start jail_name
広告

1件のコメント »

  1. […] FreeBSDでjailと言えばezjailと言う位の定番ですが相変わらずVIMAGEとの相性が良くありません。 そうこうしている間に標準コマンドがかなり高機能 & 使いやすくなっていますので、この際こちらに切り替えて、しかしアップデートとか面倒くさいので手抜き出来るところは手抜きでというコンセプト。 Cheerfull daysやサーバいじくり雑記あたりを参考にさせて頂きました。 […]

    ピンバック by My Scrap book » FreeBSD 10.0でVIMAGEなjail(手抜き編) — 2014年2月20日 @ 7:40 PM


RSS feed for comments on this post. TrackBack URI

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。