Понадобилось сделать для клиента хостинг, при чем не простоо сайт разместить, а чтобы почти отдельный сервер, не вопрос, замечательный повод разобраться с Jail.
Для начала надо пересобрать ядро со следующими опциями:
Это требуется, чтобы иметь возможность нарезать ресурсы для клеток.
Дальше ман советует следующий порядок действий:
(1) - выбор места куда будет устанавливаться клетка
(2) Если есть собранный мир можно использовать его, если нет - собираем
(3) Установка мира в директорию клетки
(4) Установка всех необходимых конфигурационных файлов в директорию клетки
(5) Монтирование файловой системы devfs(8) внутри клетки. Шаг вполне опциональный.
Для автоматизации запуска клеток вместе с хост-системой следует добавить в rc.conf следующее:
После чего для каждой клетки надо описать следующие необходимые параметры:
Сетевой адрес который мы назначаем для клетки следует прописать алиасом на интерфейсе хост-машины или настроить проброс портов.
Далее следует сделать небольшую настройку самой клеточной системы, для чего подключаемся к ней:
И выполняем следующий пункты:
Создаем пустой fstab
Редактируем /etc/rc.conf
Интерфейсы конфигурировать не надо, главное чтобы была правильно выполнена настройка на хост-машине.
Для возможности установки портов из-под клетки надо примонтировать директорию с портами:
Полезным будет установить порт jailutils
Для работы с клетками используются следующий команды
/etc/rc.d/jail start - запуск всех клеток
/etc.rc.d/jail stop - остановка всех клеток
/etc/rc.d/jail start www - запуск клетки www
jls - список запущенных клеток
jails - менее информативный вариант запущенных клеток
Для тонкой настройки работы jail в sysctl есть целая ветка, для просмотра
К примеру:
!Внимание!
Чтобы в клетке работали сетевые сервисы - такие какие ssh, apache и тд, следует на хост-машине жестко прописать интерфейсы на которых обрабатывать запросы тех или иных сетевых служб, так же сделать и в клетке. В противном случае запросы из-вне будет стараться обработать хост-машина.
Для начала надо пересобрать ядро со следующими опциями:
options RACCT
options RCTL
Дальше ман советует следующий порядок действий:
setenv D /path/to/jail/
mkdir -p $D (1)
cd /usr/src
make buildworld (2)
make installworld DESTDIR=$D (3)
make distribution DESTDIR=$D (4)
mount -t devfs devfs $D/dev (5)
(1) - выбор места куда будет устанавливаться клетка
(2) Если есть собранный мир можно использовать его, если нет - собираем
(3) Установка мира в директорию клетки
(4) Установка всех необходимых конфигурационных файлов в директорию клетки
(5) Монтирование файловой системы devfs(8) внутри клетки. Шаг вполне опциональный.
Для автоматизации запуска клеток вместе с хост-системой следует добавить в rc.conf следующее:
jail_enable = "YES" # Установите в NO для отключения запуска любой клетки
jail_list = "www" # список разделенных пробелами имен клеток
После чего для каждой клетки надо описать следующие необходимые параметры:
jail_www_rootdir="/usr/jail/www" # корневая директория для клетки
jail_www_hostname="www.example.org" # имя хоста клетки
jail_www_ip="192.168.1.1" # IP адрес клетки
jail_www_devfs_enable="YES" # разрешить монтировать devfs к файловой системе клетки
Сетевой адрес который мы назначаем для клетки следует прописать алиасом на интерфейсе хост-машины или настроить проброс портов.
Далее следует сделать небольшую настройку самой клеточной системы, для чего подключаемся к ней:
jail /usr/jail/www www.jail 192.168.1.1 /bin/sh
И выполняем следующий пункты:
Создаем пустой fstab
touch /etc/fstabУстанавливаем пароль рута -
passwd rootСоздаем файл /etc/resolv.conf куда вписываем наши днс-имена.
Редактируем /etc/rc.conf
hostname="www.jail"
network_interfaces=""
sshd_enable="YES"
Интерфейсы конфигурировать не надо, главное чтобы была правильно выполнена настройка на хост-машине.
Для возможности установки портов из-под клетки надо примонтировать директорию с портами:
mount_unionfs /usr/ports /usr/jail/www/usr/ports
Полезным будет установить порт jailutils
cd /usr/ports/sysutils/jailutils/
make install clean
Для работы с клетками используются следующий команды
/etc/rc.d/jail start - запуск всех клеток
/etc.rc.d/jail stop - остановка всех клеток
/etc/rc.d/jail start www - запуск клетки www
jls - список запущенных клеток
jails - менее информативный вариант запущенных клеток
Для тонкой настройки работы jail в sysctl есть целая ветка, для просмотра
sysctl -a | grep jail
К примеру:
sysctl security.jail.allow_raw_sockets=1 # чтобы для клетки стал доступен пинг
!Внимание!
Чтобы в клетке работали сетевые сервисы - такие какие ssh, apache и тд, следует на хост-машине жестко прописать интерфейсы на которых обрабатывать запросы тех или иных сетевых служб, так же сделать и в клетке. В противном случае запросы из-вне будет стараться обработать хост-машина.
Комментариев нет:
Отправить комментарий