トップ 一覧 検索 ヘルプ RSS ログイン

FB-jailの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!! 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
  http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/13.4-RELEASE/
 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

! update
 Prisoner が先 Jailer があと


! 削除
 $ 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
 ################
 vnet = "new";
 ################
 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 の作成
  # vi /home/jail/a/etc/rc.conf
   hostname="pri1.jail.green.local"
   ## ssh でログインする場合:w
   sshd_enable="YES" 
   ## /etc/jail.conf に書く場合には以下の行は不要
   ## ifconfig_igb1="inet 192.168.12.201 netmask 255.255.255.0 -lro -tso -rxcsum -txcsum "
 
 # vi /home/jail/b/etc/rc.conf
   hostname="pri2.jail.green.local"
   ## ssh でログインする場合:w
   sshd_enable="YES" 

 # uid/gid の重複の禁止
 vi /home/jail/a/etc/pw.conf
 defaultpasswd no
 minuid 30001
 maxuid 39999
 mingid 30001
 maxgid 39999
 
 vi /home/jail/b/etc/pw.conf
 defaultpasswd no
 minuid 40001
 maxuid 49999
 mingid 40001
 maxgid 49999



! 起動 / 停止
 $ /etc/rc.d/jail start
 $ /etc/rc.d/jail stop
 
 # ifconfig bge0 alias 192.168.250.10/32
 # service jail start test00

 個別に 
 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 に

! 仮想ネットワーク
仮想ネットワーク FB-jail -vnet を参照する 以下の部分はメモ 

 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


 #!/bin/tcsh
 #
 ################
 # vnet = "new"; ## jail.conf に vnet="new"を追加のこと
 ################
 # sysctl設定 IP転送を有効にする
 /sbin/sysctl -w net.inet.ip.forwarding=1 
 
 # NIC設定 HW機能等を無効化
 ifconfig igb0 -rxcsum -rxcsum6 -txcsum -txcsum6 -lro -tso4 -tso6 -vlanhwtso
 ifconfig igb1 -rxcsum -rxcsum6 -txcsum -txcsum6 -lro -tso4 -tso6 -vlanhwtso
 
 # epairデバイス作成
 ifconfig epair0 create
 ifconfig epair1 create
 ifconfig epair2 create
 
 # ホスト側でブリッジインターフェイス作成
 ifconfig bridge0 create
 ifconfig bridge0 addm epair0a addm epair1a addm epair2a addm igb1 up
 ifconfig bridge0 inet 192.168.1.254/24 up
 
 # ルート設定
 route add default 192.168.1.1
 
 # DNS設定
 echo 'nameserver 9.9.9.9' > /etc/resolv.conf
 
 # コンテナというかJail(ms001)起動
 /usr/local/bin/qjail start ms001
 # hostからms001へNICを割当て。ifconfig [interface_name] vnet [jid]で割当できる。
 # [jid]はJailに割り当てられるIDで、1から順次割当て
 ifconfig epair0b vnet 1
 # Jail(ms001)内でコマンド実行(jexec [jid] [command])
 jexec 1 ifconfig epair0b up
 jexec 1 ifconfig epair0b inet 192.168.1.131/24 up
 jexec 1 route add default 192.168.1.1
 jexec 1 echo 'nameserver 9.9.9.9' > /etc/resolv.conf
 
 # コンテナというかJail(ms002)起動
 /usr/local/bin/qjail start ms002
 # hostからms001へNICを割当て。ifconfig [interface_name] vnet [jid]で割当できる。
 # [jid]はJailに割り当てられるIDで、1から順次割当て
 ifconfig epair1b vnet 2
 # Jail(ms002)内でコマンド実行(jexec [jid] [command])
 jexec 2 ifconfig epair1b up
 jexec 2 ifconfig epair1b inet 192.168.1.132/24 up
 jexec 2 route add default 192.168.1.1
 jexec 2 echo 'nameserver 9.9.9.9' > /etc/resolv.conf
 
 # コンテナというかJail(ms003)起動
 /usr/local/bin/qjail start ms003
 # hostからms001へNICを割当て。ifconfig [interface_name] vnet [jid]で割当できる。
 # [jid]はJailに割り当てられるIDで、1から順次割当て
 ifconfig epair2b vnet 3
 # Jail(ms002)内でコマンド実行(jexec [jid] [command])
 jexec 3 ifconfig epair2b up
 jexec 3 ifconfig epair2b inet 192.168.1.133/24 up
 jexec 3 route add default 192.168.1.1
 jexec 3 echo 'nameserver 9.9.9.9' > /etc/resolv.conf



 
! 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/