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#
Все готово, теперь вы можете настроить клетку как вам угодно и приступить к установке нужных пакетов. Но для корректной работы вам необходимо дополнительно настроить созданную клетку.