memo:freebsd_jail

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
memo:freebsd_jail [2016-06-08 21:08]
Decomo
— (現在)
行 1: 行 1:
-====== FreeBSD 10.1-RELEASEでjail環境を作る ====== 
  
-===== 用語 ===== 
- 
-  ? jail [監獄] 
-    : FreeBSDのjail機能そのものを指したり、同機能を用いて構築された(仮想)システム[=prisoner]を指したりする。要はサンドボックス。 
-  ? jailer [看守] 
-    : (仮想)システム[=prisoner/jail]を動かしている実際のシステム。要はホスト。 
-  ? prisoner [囚人] 
-    : jail機能で構築され動いている(仮想)システム。要は仮想マシン・・・と言いたい所だが、一般的な意味である所の"仮想マシン"とは明らかに思想も構造も違うので、個人的にはjailを仮想マシンとは呼びたくはない。jailはjailなのである。 
- 
-===== 種jailの準備 ===== 
- 
-==== jailの有効化 ==== 
- 
-お馴染''rc.conf''でjailを有効にする。 
- 
-<file conf /etc/rc.conf> 
-jail_enable="YES" 
-</file> 
- 
-==== jailのインストール ==== 
- 
-jail環境は''/usr/home/jail''に置く事とする。 
-<code> 
-# cd /usr/home 
-# mkdir jail 
-</code> 
- 
-''bsdinstall''でjail環境をインストールする。第二引数でインストールする場所≒jail名を指定するが、jail名にハイフンは含めないこと(詳しくは後述)。 
-<code> 
-# bsdinstall jail jail/jseed20160101 
-</code> 
- 
-{{ :freebsd:jail:bsdinstall_jail_install.png |}} 
- 
-これまたお馴染みのFreeBSD Installerの画面が出てくる。lib32, portsだけ入れとけば問題ないと思う。packagesしか使わねーぜ!!ってんならportsすら不要。その他設定は以下のとおりだが、種jailなのでなるべくクリーンな状態の方針で。 
- 
-  * rootのパスワード 
-    * 何でもいいので取り敢えず設定。コピーjailを作った時に変更する。 
-  * System Configuration 
-    * チェックを全部外す(デフォでは何のデーモンも起動させない。) 
-  * ユーザー追加 
-    * 誰も追加しない。 
- 
-==== jailの追加と動作確認 ==== 
- 
-試しに、作成した種jailにjailerと同じIPアドレスを割り当て、監獄の中から通信できるか試してみる。 
- 
-''/etc/jail.conf''に設定を書く。 
- 
-<file conf /etc/jail.conf> 
-exec.start = "/bin/sh /etc/rc"; 
-exec.stop  = "/bin/sh /etc/rc.shutdown"; 
-exec.clean; 
-mount.devfs; 
-path = "/home/jail/$name"; 
-host.hostname = $name; 
- 
-jseed20160101 { 
-     ip4.addr = ホストのIPアドレス; 
-     allow.chflags; 
-     allow.raw_sockets; 
-} 
-</file> 
- 
-jail環境を起動。 
-<code> 
-# service jail start jseed20160101 
-Starting jails: jseed20160101. 
-</code> 
- 
-<note warning>ここで、jail名にハイフンが入っていると以下のようなエラーが大量に出る。上記設定の''ip4.addr''を処理する所でコケるようで、ハイフンは使えないっぽい? 
-<code> 
-/etc/rc.d/jail: WARNING: jail_extract_address: type not identified 
-expr: illegal option -- 2 
-expr: usage: expr [-e] expression 
-</code> 
-</note> 
- 
-無事起動したら中に入ってみる。必要なのは''jexec''の行だけ。''uname''はjailerとprisonerの区別の為に入れてみたが、結果が似すぎてて分からん罠w 
-<code> 
-$ uname -a 
-FreeBSD jail.example.com 10.1-RELEASE-p10 FreeBSD 10.1-RELEASE-p10 #0: Wed May 13 06:54:13 UTC 2015     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64 
-# jexec jseed20160101 /bin/sh 
-# uname -a 
-FreeBSD jseed20160101 10.1-RELEASE-p10 FreeBSD 10.1-RELEASE-p10 #0: Wed May 13 06:54:13 UTC 2015     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64 
-</code> 
- 
-pingを打ってみる。 
-<code> 
-# ping decomo.info 
-PING decomo.info (59.106.13.158): 56 data bytes 
-64 bytes from 59.106.13.158: icmp_seq=0 ttl=56 time=17.167 ms 
-64 bytes from 59.106.13.158: icmp_seq=1 ttl=56 time=17.236 ms 
-64 bytes from 59.106.13.158: icmp_seq=2 ttl=56 time=17.215 ms 
-64 bytes from 59.106.13.158: icmp_seq=3 ttl=56 time=17.151 ms 
-^C 
---- decomo.info ping statistics --- 
-4 packets transmitted, 4 packets received, 0.0% packet loss 
-round-trip min/avg/max/stddev = 17.151/17.192/17.236/0.035 ms 
-</code> 
- 
-==== 種jailの設定 ==== 
- 
-''freebsd-update''をしておく。srcは更新対象から外しておく(src込みでインストールしたならこの限りではない)。 
- 
-<file conf /etc/freebsd-update.conf> 
-Components world kernel # srcを消す 
-</file> 
- 
-<code> 
-# freebsd-update fetch 
-# freebsd-update install 
-</code> 
- 
-恐らくどのprisonerでもpkgは使うことになると思うので、種に仕込んでおく。他に同様のパッケージがあれば、この段階でインストールしておいても良いだろう(bashとかemacsとか…) 
-<code> 
-# pkg 
-The package management tool is not yet installed on your system. 
-Do you want to fetch and install it now? [y/N]: y 
-Bootstrapping pkg from pkg+http://pkg.FreeBSD.org/freebsd:10:x86:64/latest, please wait... 
-(略) 
-</code> 
- 
-$ service jail status 
- JID             IP Address      Hostname                      Path 
- jseed20160605   133.242.169.85  jseed20160605                 /usr/home/jail/jseed20160605 
-$ jls 
-   JID  IP Address      Hostname                      Path 
-      133.242.169.85  jseed20160605                 /usr/home/jail/jseed20160605 
-      
-/etc/pw.conf 
-minuid 65000 
-maxuid 65500 
-mingid 65000 
-maxgid 65500 
- 
-http://blog.fff.io/2011/07/freebsd_jail_1ip.html 
  • memo/freebsd_jail.1465387705.txt.gz
  • 最終更新: 2016-06-08 21:08
  • by Decomo