Jail – создание клетки

Создание клетки

Необходимо провести несколько манипуляций:

tst# setenv D /usr/home/jail/
tst# mkdir -p $D
tst# cd /usr/src
tst# make buildworld
tst# make installworld DESTDIR=$D
tst# make distribution DESTDIR=$D
tst# mount -t devfs devfs $D/dev

1. Укажем переменную имени к окружению.
2. Создадим домашнюю директорию по переменной.
5. Заполним каталог поддерева необходимыми двоичными файлами, библиотеками, справочниками и так далее.
6. Установим все необходимые файлы из /usr/src/etc/ и /etc в каталог клетки $D/etc/.

Конфигурация rc.conf

В мане написано, что нужно делать отдельный файл /etc/jail.conf, но я сделал по старинке

# Значения для всех клеток
jail_enable="YES" # Включаем jail
jail_interface="alc0" # Сетевой интерфейс
jail_devfs_enable="YES" # Монтируем devfs в клетках
jail_procfs_enable="YES" # Монтируем procfs в клетках
jail_set_hostname_allow="YES"
 
# Список клеток
jail_list="jtst" # Имя клеток через пробел для списка клеток
 
# Значения для созданной клетки "test"
jail_test_rootdir="/usr/home/jails/test.local" # Рутовая директория jail
jail_test_hostname="jtst.tst-amo.pp.ua" # Имя хоста клетки
jail_test_ip="192.168.1.111" # IP адрес хоста клетки
#jail_test_interface="alc0" # Сетевой интерфейс клетки (если нужен)
#jail_test_devfs_enable="YES" # Монтируем devfs в клетке
#jail_test_procfs_enable="YES" # Монтируем procfs в клетке
 
jail_test_exec_start="/bin/sh /etc/rc"
jail_test_exec_stop="/bin/sh /etc/rc.shutdown"
jail_test_flags="-l -U root" # Необходимые флаги для клетки

Конфигурация сети

Необходимо создать сетевые алиасы для ваших клеток. Что бы заработал пинг нужно выполнить

tst# security.jail.allow_raw_sockets=1

Они нужны чтобы клетки могли корректно работать в сети. Алиасы создаются на материнской системе:

tst# cat /etc/rc.conf |grep if
ifconfig_alc0="inet 192.168.1.41 netmask 255.255.255.0"
# Алиас для первой клетки
ifconfig_alc0_alias0="inet 192.168.1.111 netmask 255.255.255.255"

Запуск

Для запуска всех клеток используйте:

tst# /etc/rc.d/jail start
tst# /etc/rc.d/jail stop

Для запуска необходимой клетки используйте ее имя:

tst# /etc/rc.d/jail start test
tst# /etc/rc.d/jail stop test

Выведем список работающих клеток:

tst# jls
JID IP Address Hostname Path
1 192.168.1.111 jtst /usr/home/jail/

Зайдем в первую клетку:
tst# jexec 1 tcsh
jtst#

Все готово, теперь вы можете настроить клетку как вам угодно и приступить к установке нужных пакетов. Но для корректной работы вам необходимо дополнительно настроить созданную клетку.