LoginSignup
5
6

More than 1 year has passed since last update.

FreeBSDでiocageを使ってJailを管理する

Last updated at Posted at 2019-10-04

始めに

FreeBSDのJailを管理するのに、qjailとかを使ってたけど、iocageと言うZFSをベースにしたツールが使いやすかったのでmemo
ほぼ参考サイトに記載されている、Slideshareのままです。

環境

  • FreeBSD 13R
  • ZFS root(プール名 zroot)
    • ZFS rootでなくてもZFSのプールがあれば使える

環境構築

iocageのコマンド郡をインストールして、iocageを有効にします。

# pkg install py38-iocage
# iocage activate zroot
# mount -t fdescfs null /dev/fd
# iocage list

mount コマンドを永続化するため、 fstab に追記

/etc/fstab.
fdescfs /dev/fd  fdescfs  rw  0  0

Jailを作るとき

iocage create コマンドで作成します。
利用するバージョンを始めて利用する際に、該当バージョンのバイナリファイルがダウンロードされ、freebsd-updateにて最新のパッチが当てられます。

  • -n : Jail名
  • -r : バージョン
# iocage create -n asterisk -r 13.0-RELEASE

JailにIPv4アドレスを割り当てる

# iocage set ip4=new  [Jail名]
# iocage set ip4_addr="lo1|10.100.100.11/24" [Jail名]
# iocage set defaultrouter=10.100.100.254 [Jail名]
// pingを打てるようにするにはこれも必要
# iocage set allow_raw_sockets=1 [Jail名]
  • IPアドレス複数割り当てる場合は , で区切る
    • iocage set ip4_addr="lo1|10.100.100.11/24, lo1|10.100.100.12/24" [Jail名]
  • 複数のパラメタを続けて指定することも可能
    • iocage set ip4=new ip4_addr="lo1|10.100.100.11/24" [Jail名]

Jailを起動する

# iocage start [Jail名]

Jailを停止する

# iocage stop [Jail名]

Jailの自動起動

# iocage set boot=on [Jail名]

iocageの自動起動

# sysrc iocage_enable="YES"

スナップショット

スナップショットを取る

  • -n : スナップショット名は省略可能でその場合は YYYY-MM-DD_hh:flag_mm:ss (UTC) となります。
#  iocage snapshot [Jail名] -n [スナップショット名]

スナップショット一覧

# iocage snaplist [Jail名] -l
+------------------------------------------------+-----------------------+-------+------+
|                      NAME                      |        CREATED        | RSIZE | USED |
+================================================+=======================+=======+======+
| zroot/iocage/jails/[Jail名]/root@20191004_init | Fri Oct  4 10:45 2019 | 1.37G | 0    |
+------------------------------------------------+-----------------------+-------+------+
| zroot/iocage/jails/[Jail名]@20191004_init      | Fri Oct  4 10:45 2019 | 92K   | 0    |
+------------------------------------------------+-----------------------+-------+------+

外側のIPアドレスが1つしか無い場合

VPSなどで構築する際に、グローバルIPアドレスが1つしか無い場合があります。
その場合、pfなどでNAPTすれば 外 ・ ホスト ・ jail の通信が出来るようになります。

/etc/rc.conf
pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"

cloned_interfaces="lo1"
ifconfig_lo1="inet 10.100.100.254 netmask 255.255.255.0"
/etc/pf.conf
ext_if="vtnet0" # 外側のI/F
int_if="lo1"

scrub in all

table <private> const {10.100.100.0/24}

nat on $ext_if inet from ($int_if) to ! <private> -> ($ext_if)

# 必要に応じて、ポートフォワーディングする
rdr on $ext_if proto tcp from any to ($ext_if) port 80-> 10.100.100.11 port 80

参考サイト

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6