目次

jail 構築

/etc/rc.conf

portmap_enable="NO"
rpcbind_enable="NO"
fsck_y_enable="YES"
jail_sysvipc_allow="YES"

/etc/sysctl.conf

デフォルトのカーネルの設定ではjail環境の中からraw_socketやbpfを使用した通信はできないようになっています。

以下の1行を追加してシステムを再起動すると、jail環境からraw_socketやbpfが利用できないという制限を解除できます。

security.jail.allow_raw_sockets=1

イメージファイルを作成

dd if=/dev/zero of=/dskN/xx.xx.xx.xx.dsk bs=1M count=10000

(ex. 10GB case)

イメージファイルをマウント

mdconfig -a -t vnode -f /dskN/xx.xx.xx.xx.dsk -u X   (X...number)
bsdlabel -w mdX auto
newfs mdXc
mkdir /vds
mkdir /vds/xx.xx.xx.xx
mount /dev/mdXc /vds/xx.xx.xx.xx

Jail設定

setenv D /vds/xx.xx.xx.xx
cd /usr/src
mkdir -p $D
make world DESTDIR=$D
cd etc
make distribution DESTDIR=$D
mount_devfs devfs $D/dev
mkdir $D/usr/ports
mount_nullfs -o ro /usr/ports $D/usr/ports
cd $D
ln -sf dev/null kernel

簡単な操作方法

ゲスト一覧確認

 # jls 
   JID  IP Address      Hostname                      Path
    68  xx.xx.xx.xx   fqdn.fqdn.com         /vds/xx.xx.xx.xx

ゲスト環境へ入る

jail /vds/xx.xx.xx.xx testhostname xx.xx.xx.xx /bin/sh

停止

killall -TERM -j JID

起動

/usr/sbin/jail /vds/xx.xx.xx..xx fqdn.fqdn xx.xx.xx.xx /bin/sh /etc/rc

一時停止

/sbin/ifconfig rl0 inet xx.xx.xx.xx netmask 255.255.255.255 -alias