ezjailで遊ぶための自分用メモ
jailを使ってサーバ群を構成し直そうと、ezjailで遊んでみた。グリーンITも簡単(か)。
- FreeBSD 7.0 を入れる。/etc/rc.confでインタフェースのalias(例えば192.168.0.3としておく)を登録。
- ホスト側のプロセスがjailのアドレスでlistenしないようにする。
- sshdのListenAddressをいじってアドレスを限定する。
- syslogdに-bをつけてアドレスを限定する。
- ntpdはそのまま。jailのアドレスでListenしても問題ない(はず)。
- sysutils/ezjail を入れる。ezjail_enableを設定。
- /usr/local/etc/ezjail.conf で、ezjail_jaildir をjail群用のでかいディスクに割り当てる(例えばTOPとしておく)。
- ちょっとしたWEBサーバやメールサーバなら1個あたり何百MBで十分。
- ezjail-admin update -p
- ソースツリーをビルドし直し、portsnap fetchしてjail用のportsツリーもportsnap updateしてくれる。
- -Pならportsツリーのみ。jailが走っていても実行できる。
- -iをつけるとbuildworldせずにinstallworldのみ。
- 実行後はportsツリーも含めてTOP/basejailにインストールされる。basejailはjail内のbasejailにnullfsマウントされて、リンクされる。
- TOP/newjailもbasejailへのリンク+αとして作成される。これをコピーしてちょっとフレーバーを加えてjailになる。
- フレーバーを作成。
- TOP/flavours/defaultを適当な名前(例えばwebとしておく)でコピー。
- web/etc/{master.passwd, resolv.conf, localtime, newsyslog.conf, ssh/sshd_config, ...} とか、web/root/.ssh/authorized_keyを用意しておく。
- web/etc/rc.confやらweb/usr/local/etc/sudoersやらを必要ならいじっておく。
- web/pkg/を作成し、pkg_addしてほしいパッケージを入れておく。
- create時に走らせたいスクリプトがあればweb/ezjail.flavourをいじる。(デフォルトの処理内容はpkgがあればその中をインストールすることだけ)
- ezjail-admin create -i -s 1g -c eli -f web -r hoge hoge.example.com 192.168.0.3
- TOP/hoge.example.comだと長すぎてdfが見づらいのでrootを短い名前で設定。
- しばらく待ってgeliのパスフレーズを入力。暗号化しないなら-i -s 1g -c eliとかいらない。
- ntpdが*:123で待ってると文句を言われるが、たぶん影響ないので無視。
- jailが動いてないときにjailのイメージをいじりたいときは、ezjail-admin config -i attach hoge.examle.comでできるが、attachがへたくそでdetachできないバグがある。すぐ直せる。
- /usr/local/etc/rc.d/ezjail.sh start hoge.example.com か startcrypto で、パスフレーズを入力するとjail開始。
- sshが設定できてるならそのままsshするとか、jlsして目的のJIDにjexec JID /bin/shするとか、あとは好きなように。
- 電源が落ちたりして正常に終了できなかったときは、startcryptoする前に ezjail-admin config -i fsck hoge.example.com するべきかも。
- domainnameが設定できない。ただし、ホストのdomainnameを参照することはできるので、同一ドメインでならjailでNIS(rpcbind, ypbind)を使うことは可能。ypservは不明。hostnameはjailごとにあるのに、NISなんてレガシーな技術はあんまりサポートしないという方向性か。
- マウントができないのでNFSクライアントは無理。NFSサーバは試す気なし。
- BPFがない。でも、net/isc-dhcp3-serverはsocket()あたりを使って動かせるっぽい。
- localhostにbindできないので、setgidなsendmailを叩いてlocalhostで待ってるMTA(msp)を経由してメールを出すことができない。外部の指定したMTAに直接つなぎに行くか、rootにsetuidする必要がある。/etc/mail/README参照。
Happy jail life!
0 件のコメント:
コメントを投稿