Qjail: различия между версиями

Материал из BSD Howto
Перейти к навигации Перейти к поиску
Строка 161: Строка 161:
  Jail successfully started  test
  Jail successfully started  test


Обновление дерева портов внутри клеток (удаление содержимого дерева портов внутри клеток и копирование из /usr/ports основной ОС):
== Обновление дерева портов внутри клеток ==
 
Удаление содержимого дерева портов внутри клеток и копирование из /usr/ports основной ОС):
  # qjail update -P
  # qjail update -P
  Copy host's /usr/src routine entered
  Copy host's /usr/src routine entered
Строка 177: Строка 179:
  Successfully updated your existing qjail system.
  Successfully updated your existing qjail system.


Обновление дерева исходных текстов ОС FreeBSD внутри клеток (удаление содержимого исходных текстов ОС внутри клеток и копирование из /usr/src основной ОС):
== Обновление дерева сходных текстов ОС FreeBSD внутри клеток ==
 
Удаление содержимого исходных текстов ОС внутри клеток и копирование из /usr/src основной ОС):
  # qjail update -S
  # qjail update -S
  Copy host's /usr/src routine entered
  Copy host's /usr/src routine entered

Версия от 22:38, 6 июля 2025

Установка sysutils/qjail

Qjail - инструмент управления изолированными клетками (jail) в ОС FreeBSD.

Утилита qjail используется для быстрого развертывания клеток jail, а так-же использует метод jail(8) для определения клеток и управления их запуском/остановкой.

Qjail — это оболочка для базовой системы jail chroot, предназначенная для улучшения безопасности и производительности, а так-же для улучшения удобств пользователя, связанных с развертыванием клеток.

Qjail исключает из /etc/rc.conf все настройки jail. Qjail не требует знаний об использовании команды jail.

Qjail автоматически создаёт среду клеток из файлов основной ОС.

Qjail использует «nullfs» для системных двоичных файлов только для чтения, разделяя одну их копию со всеми клетками.

Qjail назначает IP-адрес с именем сетевого устройства, поэтому псевдонимы автоматически создаются при запуске клеток и автоматически удаляются при их остановке.

Qjail упрощает развертывание клеток до уровня новичка. У Qjail есть полностью документированная страница руководства, написанная максимально просто для понимания.

Подробная информация на сайте http://qjail.sourceforge.net/

Создание отдельной файловой системы для клеток:

# zfs create zroot/usr/jails

Установка из пакета Qjail (предварительная установка менеджера пакетов PKG не требуется, дополнительная информация о котором в статье PKG):

# pkg install qjail
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 1 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        qjail: 5.5_1

Number of packages to be installed: 1

78 KiB to be downloaded.

Proceed with this action? [y/N]: y
[1/1] Fetching qjail-5.5_1.pkg: 100%   78 KiB  79.7kB/s    00:01
Checking integrity... done (0 conflicting)
[1/1] Installing qjail-5.5_1...
[1/1] Extracting qjail-5.5_1: 100%
=====
Message from qjail-5.5_1:

--
Use the qjail utility to deploy small or large numbers of jails quickly.

First issue "rehash" command to enable the qjail command (if using csh).
Then issue
"man qjail-intro" To read the qjail introduction.
"man qjail"       For qjail usage details.
"man qjail-drive-traffic For example of driving public traffic to jails.
"man qjail-vnet-howto"   For example of creating vnet jails.
"man qjail-ipv6-testing" For example of testing jails with ipv6 addresses.

Менеджер пакетов предложит установить пакет Qjail. Примерный вывод выполнения команды после согласия на установку представлен выше:

Проверка установки Qjail:

# pkg version -v | grep qjail
qjail-5.5_1                        =   up-to-date with remote

В выводе выполнения команды дана информация о коротком имени пакета "qjail" и его номере текущей установленной версии "5.5_1". А символ "=" сообщает, что установлена актуальная версия пакета.

Установка базы Qjail (будет скачан и распакован файл base.txz, который соответствует текущей версии FreeBSD):

# qjail install
resolving server address: ftp.freebsd.org:80
requesting http://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/14.2-RELEASE/base.txz
remote size / mtime: 205880752 / 1732884605
base.txz                                               196 MB 4189 kBps    48s

The RELEASE distribution files are populating template.
Estimated less than 1 minute for this to complete.

sharedfs is being populated.
Estimated less than 1 minute for this to complete.

Successfully installed qjail system.

Примерный вывод выполнения команды представлен выше:

Включение автозапуска Qjail в /etc/rc.conf:

# sysrc qjail_enable="YES"
qjail_enable:  -> YES

Запуск Qjail:

# qjail start

Операции с клетками

Создание отдельной файловой системы для клетки c именем "test" в ZFS:

# zfs create zroot/usr/jails/test

Cоздание клетки c именем "test" и IPv4-адресом "192.168.0.101":

# qjail create -4 192.168.0.101 test

Запуск клетки c именем "test":

# qjail start test

Проверка работы клеток:

# jls
  JID  IP Address      Hostname                      Path
    1  192.168.0.101   test                          /usr/jails/test

Другой способ проверки работы клеток:

# qjail list

STATUS JID  NIC    IP              Jailname
------ ---- ------ --------------- --------------------------------------------
DR     1    re0    192.168.0.101   test

Вход в консоль клетки c именем "test":

# qjail console test

Остановка клетки c именем "test":

# qjail stop test

Удаление клетки c именем "test":

# qjail delete test

Ещё немного полезных команд

Обновление бинарного окружения клеток (остановка клеток, удаление старого бинарного окружения клеток и копирование из обновлённой основной ОС, старт клеток).

# qjail stop
Jail successfully stopped  test
# qjail update -b

Deletion of sharedfs binaries successful for bin.
Deletion of sharedfs binaries successful for lib.
Deletion of sharedfs binaries successful for libexec.
Deletion of sharedfs binaries successful for sbin.
Deletion of sharedfs binaries successful for usr/bin.
Deletion of sharedfs binaries successful for usr/include.
Deletion of sharedfs binaries successful for usr/lib.
Deletion of sharedfs binaries successful for usr/libdata.
Deletion of sharedfs binaries successful for usr/libexec.
Deletion of sharedfs binaries successful for usr/sbin.
Deletion of sharedfs binaries successful for usr/share.
Deletion of sharedfs binaries successful for usr/lib32.

Copied host's binaries to sharedfs successfully for bin.
Copied host's binaries to sharedfs successfully for lib.
Copied host's binaries to sharedfs successfully for libexec.
Copied host's binaries to sharedfs successfully for sbin.
Copied host's binaries to sharedfs successfully for usr/bin.
Copied host's binaries to sharedfs successfully for usr/include.
Copied host's binaries to sharedfs successfully for usr/lib.
Copied host's binaries to sharedfs successfully for usr/libdata.
Copied host's binaries to sharedfs successfully for usr/libexec.
Copied host's binaries to sharedfs successfully for usr/sbin.
Copied host's binaries to sharedfs successfully for usr/share.
Copied host's binaries to sharedfs successfully for usr/lib32.

Host to sharedfs binaries update completed successfully.

Successfully updated your existing qjail system.
# qjail start
Jail successfully started  test

Обновление дерева портов внутри клеток

Удаление содержимого дерева портов внутри клеток и копирование из /usr/ports основной ОС):

# qjail update -P
Copy host's /usr/src routine entered

Removing existing /usr/ports directory from sharedfs.
Estimated less then 1 minute for this to complete.
Sun Mar 30 10:22:57 MSK 2025
Sun Mar 30 10:23:32 MSK 2025

Copying host /usr/ports to sharedfs /usr/ports.
Estimated less then 1 minute for this to complete.
Sun Mar 30 10:23:32 MSK 2025
Sun Mar 30 10:25:09 MSK 2025

Successfully updated your existing qjail system.

Обновление дерева сходных текстов ОС FreeBSD внутри клеток

Удаление содержимого исходных текстов ОС внутри клеток и копирование из /usr/src основной ОС):

# qjail update -S
Copy host's /usr/src routine entered

Removing existing /usr/src directory from sharedfs.
Estimated less then 1 minute for this to complete.
Sun Mar 30 16:17:19 MSK 2025
Sun Mar 30 16:17:19 MSK 2025

Copying host /usr/src to sharedfs /usr/src.
Estimated less then 1 minute for this to complete.
Sun Mar 30 16:17:19 MSK 2025
Sun Mar 30 16:18:18 MSK 2025

Successfully updated your existing qjail system.