- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!! FreeBSD12 Jail
! 作成
## fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/12.2-RELEASE/base.txz
wget -e HTTP_PROXY=http://127.0.0.1:18080/ http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/12.2-RELEASE/base.txz
tar -zxpf ./base.txz -C /home/jail/a
tar -zxpf ./base.txz -C /home/jail/b
作成出来たか確認
$ mount -t devfs devfs /home/jail/a/dev
$ mount -t devfs devfs /home/jail/a/dev
! 削除
$ service jail stop aaa
$
$ chflags -R noschg /home/jail/aaa/*
$ cd /home/jail
$ rm -rf ./aaa
! /etc/rc.conf
# jail
jail_enable="YES"
jail_list="aaa bbb"
追加
! /etc/jail.conf
################
aaa
{
jid=1;
name=aaa;
path=/home/jail/a;
ip4.addr=192.168.12.201;
host.hostname=prisoner1.jail.green.local;
allow.chflags;
allow.raw_sockets;
exec.start="/bin/sh /etc/rc";
exec.stop="/bin/sh /etc/rc.shutdown";
interface=re0;
mount.devfs;
devfs_ruleset=4;
}
bbb
{
jid=2;
name=prisoner;
path=/home/jail/b;
ip4.addr=192.168.12.202;
host.hostname=bbb.jail.green.local;
allow.chflags;
allow.raw_sockets;
exec.start="/bin/sh /etc/rc";
exec.stop="/bin/sh /etc/rc.shutdown";
interface=re0;
mount.devfs;
devfs_ruleset=4;
}
! 調整
## コンソールのメッセージを止める
vi /home/jail/a/etc/syslog.conf
vi /home/jail/b/etc/syslog.conf
## *.err;kern.warning;auth.notice;mail.crit /dev/console
vi /home/jail/a/etc/crontab
vi /home/jail/b/etc/crontab
## 時計を止める
# 1,31 0-5 * * * root adjkerntz -a
# Host名の設定
vi /home/delegate/jail/a/etc/hosts
vi /home/delegate/jail/b/etc/hosts
# bsdconfig & rc.conf の作成
hostname="pri1.jail.green.local"
ifconfig_igb1="inet 192.168.12.201 netmask 255.255.255.0 -lro -tso -rxcsum -txcsum "
! 起動 / 停止
$ /etc/rc.d/jail start
$ /etc/rc.d/jail stop
個別に
service jail start aaa
service jail start bbb
! コマンド
jls :稼動中のprisonerの一覧表示
jexec:jailerからprisonerに遷移
jexec 1 /bin/csh
aaa ( jid 1 )で CSH を起動
! jail を起動したままだと UTC なので
# jexec 1 /bin/csh
#
# tzsetup Asia/Tokyo ## timezone を tokyo に
! 仮想ネットワーク
FreeBSD には epair という仮想ネットワークI/F が存在し、仮想的なイーサネットケーブルとしての役割を果たします。
これは、 ifconfig epair create というコマンドを叩くことで作成可能で、作成すると epair0a, epair0b というように a と b の2つのデバイスが一対となって作成されます。これをホストや Jail に割当てることで通信が可能になります。
具体的には、ifconfig epair0a vnet jail01 というコマンドを叩くことで、jail01 という Jail に epair0 の a側 (一方) を割り当てることができます。
この結果を確認するためには、 jail01 上で ifconfig を叩く必要があります。
Jail 上でのコマンド実行は jexec というコマンドを用います。使い方は jexec [jid] [command...] です。
jail01 上で ifconfig を叩く、という場合は、 jexec jail01 ifconfig というようになります。
ここまでが分かれば、トポロジ図にて与えられたネットワークアドレスからIPアドレスを適当に割り当てることで1:1 の通信が可能になります。
ifconfig epair0 create
## ifconfig epair0a destroy
! Tips
https://www.atmarkit.co.jp/ait/articles/1207/20/news153_2.html
https://www.kishiro.com/FreeBSD/jail.html
https://qiita.com/Chun3/items/4b11b9acdd080ecdab6c
http://freebsdnoki.blogspot.com/p/jail.html
! Tips 0000
*https://blog.icttoracon.net/2016/03/31/question06/