Джейлы в FreeNAS 11

Джейлы в FreeNAS 11

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

В этом разделе описывается, как использовать Jails, которые позволяют пользователям удобно работать с командной строкой, больше контролировать установку и управление программным обеспечением. Любое программное обеспечение, установленное с использованием Jails, должно управляться из командной строки джейла (command line of the jail). Если вы предпочитаете использовать графический интерфейс для управления программным обеспечением, используйте вместо него плагины.

 

Примечание 1

Инфраструктура джейлов переходит от старого защитника (warden) к новому серверу iocage. Для этого процесса перехода требуется, чтобы API-интерфейсы промежуточного программного обеспечения были переписаны для нового пользовательского интерфейса.

Ожидается, что переход будет завершен FreeNAS версии 11.2. Поскольку джейлы, созданные в старом пользовательском интерфейсе, используют бэкэнд warden, то созданные в новом интерфейсе, используют бэкэнд iocage, и оба используют разные версии API, они несовместимы. Хотя сценарий миграции будет доступен после завершения перехода, он не сможет предвидеть каждый сценарий конфигурации для каждого приложения, установленного в джейлах. В то время рекомендация будет заключаться в том, чтобы: создавать новые джейлы с использованием нового пользовательского интерфейса, копировать любые существующие конфигурации и удалять старые наборы данных джейлов после того, как новые заработают должным образом.

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

По умолчанию создаётся джейл FreeBSD. Это обеспечивает очень легкую виртуализацию на уровне операционной системы. Рассматривайте его как еще один независимый экземпляр FreeBSD, работающий на одном и том же оборудовании, без всех служебных данных, обычно связанных с виртуализацией. Джейл установит утилиты управления программным обеспечением FreeBSD, чтобы можно было скомпилировать порты FreeBSD и установить пакеты FreeBSD из командной строки джейла.

Важно понимать, что любые пользователи, группы, установленное программное обеспечение и конфигурации в джейле изолированы как от операционной системы FreeNAS, так и от любых других джейлов, работающих в этой системе. Во время создания можно выбрать параметр VIMAGE, чтобы предоставить джейлу независимый сетевой стек. Джейл может затем выполнить собственное IP-вещание, которое требуется некоторым приложениям.

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

 

Зачем нужны джейлы в FreeNAS?

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

 

Примечание 2

Предполагается, что созданные в FreeNAS 9.3 или более поздних версиях Jails будут работать с текущей версией. Джейлы, созданные в старых версиях FreeNAS, должны быть переустановлены из-за изменений ABI.

В остальной части этого раздела описывается:

  • Настройка Джейлов
  • Добавление Джейлов
  • Управление шаблонами Джейлов
  • Использование iocage

 

Настройка Джейлов

Джейлы хранятся в томе или наборе данных. Настоятельно рекомендуется использовать отдельный набор данных для корня джейла (Jail Root). Том или набор данных, которые будут использоваться, должны уже существовать или могут быть созданы с помощью диспетчера томов (Volume Manager).

Объём или набор данных Jail Root не может быть создан в Share.

Начните глобальную гастройку джела, выбрав Jails ‣ Configuration, чтобы открыть экран.

Глобальная конфигурация джела в FreeNAS
Глобальная конфигурация джела в FreeNAS

Джейлы автоматически устанавливаются в свой собственный набор данных по указанному пути по мере их создания. Например, если Jail Root установлен в /mnt/volume1/dataset1, и создается джейл с именем jail1, он устанавливается в собственный набор данных с именем /mnt/volume1/dataset1/jail1.

Внимание!

Если какие-либо плагины уже установлены, то автоматически заполняются Jail Root, IPv4 Network, IPv4 Network Start Address и IPv4 Network End Address. Дважды проверьте, что предварительно настроенные значения IP-адреса подходят для джейлов и не конфликтуют с адресами, используемыми другими системами в сети.

 

Параметры конфигурации джейлов в FreeNAS 11

Дополнительную информацию о том, как правильно настроить Jail Root и сетевые настройки.

Некоторые настройки доступны только в расширенном режиме. Чтобы увидеть эти настройки, нажмите кнопку Advanced Mode (Расширенный режим) или настройте систему, чтобы всегда отображать эти параметры, установив флажок Show advanced fields by default (Показывать расширенные поля по умолчанию) в System ‣ Advanced.

Jail Root

Тип browse button. Обязательный параметр. Джейлы не могут быть добавлены до тех пор, пока он не будет установлено

IPv4 DHCP

Тип checkbox. Установите этот флажок, если сеть имеет DHCP-сервер

IPv4 Network

Тип string. формат IP-адреса — network/CIDR mask

IPv4 Network Start Address

Тип string. Введите первый IP-адрес в зарезервированном диапазоне в формате host/CIDR mask

IPv4 Network End Address

Тип string. Введите последний IP-адрес в зарезервированном диапазоне в формате host/CIDR mask

IPv6 Autoconfigure

Тип checkbox. Установите этот флажок, если в сети есть сервер DHCPv6, а IPv6 будет использоваться для доступа к джейлам

IPv6 Network

Тип string. Введите сетевой адрес для правильно настроенной сети IPv6

IPv6 Network Start Address

Тип string. Введите первый IP-адрес в зарезервированном диапазоне для правильно настроенной сети IPv6

IPv6 Network End Address

Тип string. Введите последний IP-адрес в зарезервированном диапазоне для правильно настроенной сети IPv6

Collection URL

Тип string. Изменение по умолчанию может нарушить возможность установки джейлов

 

При выборе Jail Root (корня джейла) убедитесь, что размер выбранного тома или набора данных достаточен для хранения количества джейлов, которые будут установлены, а также любого программного обеспечения, файлов журналов и данных, которые будут храниться в каждом джейле. При минимальном бюджете не менее 2 ГБ на каждый джейл и не выбирайте набор данных размером менее 2 ГБ.

Если вы планируете добавить хранилище в джейл, имейте в виду, что размер пути ограничен 88 символами. Убедитесь, что длина имени тома плюс имя набора данных плюс имя джейла не превышает этого предела.

Если сеть содержит DHCP-сервер, рекомендуется установить флажок IPv4 DHCP (или IPv6 Autoconfigure для правильно настроенной сети IPv6). Это предотвратит конфликты IP-адресов в сети, так как DHCP-сервер автоматически назначит джейлу следующую доступную аренду и запишет аренду как в использовании.

Если необходим статический IP-адрес, чтобы пользователи всегда знали IP-адрес джейла, введите начальный и конечный адреса для сети IPv4 и / или IPv6. Диапазон, определяемый начальным и конечным адресами, автоматически присваивается при создании джейлов. Например, если вы планируете создать 5 ячеек в сети 192.168.1.0, введите IP-адрес сети IPv4 192.168.1.100 и адрес сети IPv4 для сети 192.168.1.104.

Если вы создаете начальный и конечный диапазон в сети, содержащей DHCP-сервер, очень важно, чтобы вы также резервировали эти адреса на DHCP-сервере. В противном случае сервер DHCP не будет знать, что эти адреса используются в джейлах, и в сети будут конфликты IP-адресов и странные сетевые ошибки. При устранении неполадок, которые не устанавливаются или недоступны, дважды проверьте, что IP-адрес, используемый джейлом, также не используется другим джейлом или системой в сети.

FreeNAS автоматически обнаружит и отобразит IPv4 Network, к которой подключен административный интерфейс. Этот параметр важен. IP-адреса, используемые джейлами, должны быть pingable (пинговаться) из системы FreeNAS для джейлов и любого установленного программного обеспечения для доступа. Если для топологии сети требуется изменить значение по умолчанию, в указанную сеть необходимо добавить шлюз по умолчанию и, возможно, статический маршрут. После изменения этого значения убедитесь, что значение маски подсети верное, поскольку неправильная маска может сделать сеть IP недоступной. Если у вас есть сомнения, сохраните настройку по умолчанию для IPv4 Network. В VMware убедитесь, что vswitch установлен в режим «promiscuous mode». В VirtualBox убедитесь, что для параметра Network -> Advanced -> Promiscuous Mode установлено значение Deny (Запретить).

После всего нажмите кнопку «Сохранить», чтобы сохранить конфигурацию, система готова к созданию и управлению джейлами, как описано в остальной части этой главы.

 

Добавление джейлов

Чтобы создать джейл, нажмите Jails ‣ Add Jail, чтобы открыть экран.

элемент меню Add Jail не появится до тех пор, пока вы не настроите Jails ‣ Configuration.

Создание джейла в FreeNAS
Создание джейла в FreeNAS

По умолчанию единственным необходимым значением для создания джейла является имя. По умолчанию создаются джейлы FreeBSD.

Параметры конфигурации добавления джейла

Большинство настроек доступны только в расширенном режиме и не нужны, если целью является создание джейла FreeBSD. Чтобы увидеть эти настройки, нажмите кнопку «Расширенный режим» или настройте систему, чтобы всегда отображать эти параметры, установив флажок «Показывать расширенные поля по умолчанию» в System ‣ Advanced.

Jail Name

Тип string. Обязательный параметр. Имена могут содержать только буквы, цифры, тире или символ подчеркивания

Template

Тип drop-down menu. Содержит любые созданные пользовательские шаблоны, как описано в разделе Managing Jail Templates (Управление шаблонами джейла)

IPv4 DHCP

Тип checkbox. Если он не установлен, убедитесь, что указанный адрес не конфликтует с пулом доступных DHCP-серверов

IPv4 address

Тип integer. Этот и другие настройки IPv4 неактивны, если отмечен IPv4 DHCP; введите уникальный IP-адрес, который находится в локальной сети и еще не используется другим компьютером

IPv4 netmask

Тип drop-down menu. Выберите маску подсети, связанную с адресом IPv4

IPv4 bridge address

Тип integer. Серый, если не проверен VIMAGE; см. ПРИМЕЧАНИЕ ниже

IPv4 bridge netmask

Тип drop-down menu. Выберите маску подсети, связанную с адресом моста IPv4; серого цвета, если не проверено VIMAGE

IPv4 default gateway

Тип string. Серого цвета, если не проверено VIMAGE

IPv6 Autoconfigure

Тип checkbox. Если он не установлен, убедитесь, что указанный адрес не конфликтует с пулом доступных DHCP-серверов

IPv6 address

Тип integer. Этот и другие настройки IPv6 неактивны, если проверен параметр IPv6 Autoconfigure (Автоконфигурация IPv6); введите уникальный IPv6-адрес, который находится в локальной сети и еще не используется каким-либо другим компьютером

IPv6 prefix length

Тип drop-down menu. Выберите длину префикса, связанную с IPv6 address

IPv6 bridge address

Тип integer. Серый, если не проверен VIMAGE; см. ПРИМЕЧАНИЕ ниже

IPv6 bridge prefix length

Тип drop-down menu. Серый, если не проверен VIMAGE; выберите длину префикса, связанную с IPv6 address

IPv6 default gateway

Тип string. Серый, если не проверен VIMAGE; используется для установки IPv6-адреса шлюза по умолчанию

MAC

Тип string. Серый, если не проверен VIMAGE; если введен статический MAC-адрес, необходимо ввести уникальные статические MAC-адреса для каждого созданного джейла

NIC

Тип drop-down menu. Неактивен, если VIMAGE проверен; может использоваться для указания интерфейса для использования в джейлах

Sysctls

Тип string. Разделенный запятыми список sysctls для установки внутри джейла (например, allow.sysvipc = 1, allow.raw_sockets = 1)

Autostart

Тип checkbox. Снимите флажок, если джейл будет запущен вручную

VIMAGE

Тип checkbox. Даёт джейлу собственный виртуализированный сетевой стек; требует, чтобы на интерфейсе был включен режим promiscuous

NAT

Тип checkbox. Выделены серым шрифтом для Linux-джейлов или если VIMAGE не установлен; разрешает трансляцию сетевых адресов для джейла

 

Примечание 3

Интерфейс моста IPv4 и IPv6 используется для соединения устройства epair (4), которое автоматически создается для каждого запущенного джейла, физическому сетевому устройству. (https://www.freebsd.org/cgi/man.cgi?query=epair)

Сетевое устройство по умолчанию — это то, которое настроено на шлюз по умолчанию. Итак, если em0 — это имя физического интерфейса FreeBSD и три джейла, эти виртуальные интерфейсы автоматически создаются: bridge0, epair0a, epair1a и epair2a.

Физический интерфейс em0 будет добавлен к мосту, а также к каждому устройству epair. Другая половина epair будет помещена в джейл и ему будет назначен IP-адрес, указанный для этого джейла. Интерфейсу моста будет присвоен псевдоним шлюза по умолчанию для этого джейла, если он настроен, или IP-адрес моста, если он настроен; либо является правильным.

Единственный раз, когда IP-адрес и маска необходимы для моста, — это когда джейл будет находиться в другой сети, чем система FreeNAS. Например, если система FreeNAS находится в сети 10.0.0.0/24, а джейл будет находиться в сети 192.168.0.0/24, установите для нее адрес сети моста IPv4 и поля сетевой маски IPv4 для джейла.

 

Если оба флажка VIMAGE и NAT не отмечены, джейл должна быть настроен с IP-адресом в той же сети, к которой он привязан, и этот адрес будет назначен как псевдоним на этом интерфейсе. Чтобы использовать джейл VIMAGE в той же подсети, снимите отметку с NAT и настройте IP-адрес в той же сети. В обоих случаях настройте только IP-адрес и не настраивайте мост или адрес шлюза.

После выбора нажмите кнопку «ОК». Джейл создается и добавляется на вкладку Jails, а также в дереве в разделе Jails. Джейлы запускаются автоматически. Чтобы этого не произошло, снимите флажок Autostart (Автозапуск).

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

Внимание!

Невыполнение загрузки часто связано с тем, что шлюз по умолчанию не установлен, что препятствует доступу в Интернет. Информацию о настройке шлюза по умолчанию см. В разделе «Глобальная конфигурация сети». (Global Configuration — http://doc.freenas.org/11/network.html#global-configuration)

После создания первого джейла или использования шаблона последующие джейлы будут добавлены очень быстро, потому что загруженная база для создания джейла была сохранена в Jail Root.

 

Управление джейлами

Нажмите «Jails», чтобы просмотреть и настроить добавленные джейлы. В примере, показанном на рисунке ниже, была нажата запись списка для джейла с именем xdm_1, чтобы включить параметры конфигурации.

Запись указывает имя джейла, IP-адрес, будет ли он автоматически запускаться при загрузке системы, если он выполняется, и тип джейла: стандарт для FreeBSD или плагин, если он был установлен с помощью плагинов.

Просмотр списка джейлов в FreeNAS
Просмотр списка джейлов в FreeNAS

Доступные значки конфигурации слева направо

Edit Jail

Отредактируйте настройки джейла, которые были описаны пунктоп выше

После того как джейл будет создан, его имя и тип не могут быть изменены, поэтому эти поля будут недоступны (выделены серым цветом).

Чтобы изменить информацию о IP-адресах для джейла, используйте кнопку «Редактировать джейл» вместо ассоциированных сетевых команд из командной строки джейла.

Add Storage

Настройте джейл для доступа к области хранения, как описано в разделе «Добавление хранилища».

Upload Plugin

Вручную загруженные плагины, ранее загруженные из репозитория плагинов.

Start/Stop

Этот значок меняет внешний вид в зависимости от текущего состояния джейла. Когда джейл не работает, значок зеленый и щелчок запустит джейл. Когда джейл уже запущен, значок красный, и щелчок по нему останавливает джейл. Остановленный джейл и его приложения недоступны, пока не будут перезапущены.

Restart

Перезапуск джейла

Shell

Войдите в командную строку под root, чтобы настроить выбраный джейл из командной строки. Когда закончите, введите exit, чтобы закрыть оболочку.

Delete

Удалите джейл и любые периодические снимки. Содержимое джейла полностью удалится.

Внимание! Резервное копирование данных и программ в джейл перед удалением. После удаления нет возможности восстановить содержимое джейла.

Доступ к джейлу с использованием SSH

SSH можно использовать для доступа к джейлу вместо значка Shell. Для этого требуется запуск службы ssh и создание учетной записи пользователя для доступа ssh. Начните с нажатия значка «Shell» для желаемого джейла.

Найдите строку sshd_enable = в файле /etc/rc.conf в тюрьме и установите для нее значение  YES (ДА):

sshd_enable=»YES»

Затем запустите демон SSH:

service sshd start

При первом запуске службы генерируется пара ключей RSA для джейла и отображается ключевой отпечаток пальца и изображение случайного искусства.

Добавьте учетную запись пользователя, набрав adduser и следуя подсказкам. Если пользователю нужны привилегии суперпользователя, они должны быть добавлены в группу wheel. Для этих пользователей введите колесо в это окно:

Login group is user1. Invite user1 into other groups? []: wheel

После создания пользователя установите пароль root, чтобы новый пользователь смог использовать команду su для получения привилегии суперпользователя. Чтобы установить пароль, введите passwd, затем введите и подтвердите требуемый пароль.

Наконец, протестируйте другую систему, чтобы пользователь мог успешно подключиться по ssh и стать суперпользователем. В этом примере пользователь с именем user1 использует ssh для доступа к джейлу в 192.168.2.3. При первом входе пользователя в систему им будет предложено проверить отпечаток хоста:

ssh user1@192.168.2.3
The authenticity of host ‘192.168.2.3 (192.168.2.3)’ can’t be established.
RSA key fingerprint is 6f:93:e5:36:4f:54:ed:4b:9c:c8:c2:71:89:c1:58:f0.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.2.3’ (RSA) to the list of known hosts.
Password: type_password_here

Каждый джейл имеет собственные учетные записи пользователей и конфигурацию службы. Эти шаги должны повторяться для каждого джейла, для которого требуется SSH-доступ.

Добавление хранилища в джейл

Можно предоставить доступ в джейл FreeBSD к области хранения в системе FreeNAS. Это полезно для приложений, которые хранят большой объем данных или если приложение в джейле нуждается в доступе к данным, хранящимся в системе FreeNAS. Одним из примеров является передача, в которой хранятся торренты. Хранилище добавляется с помощью механизма mount_nullfs (8), который связывает данные, которые находятся за пределами джейла, в качестве области хранения в джейле. (https://www.freebsd.org/cgi/man.cgi?query=mount_nullfs)

Чтобы добавить хранилище, нажмите кнопку Add Storage (Добавить хранилище) для записи выделенного джейла.

Добавление хранилища в джейл FreeNAS
Добавление хранилища в джейл FreeNAS

Этот экран также можно получить, расширив имя джейла в древовидном представлении и нажав Storage ‣ Add Storage.

Перейдите к Source (источнику) и Destination (месту назначения), где:

  • Источник: это каталог или набор данных в системе FreeNAS, к которой будет обращаться джейл. Этот каталог должен находиться вне тома или набора данных, используемых джейлом. Вот почему рекомендуется создавать отдельный набор данных для хранения джейлов, поэтому набор данных, содержащий джейлы, всегда отделен от любых наборов данных, используемых для хранения в системе FreeNAS.
  • Назначение: выберите существующий пустой каталог в джейле для ссылки на область хранения источника. Если этот каталог еще не существует, введите нужное имя каталога и установите флажок «Создать каталог».

Хранилище обычно добавляется, поскольку учетная запись пользователя и группы, связанная с приложением, установленным внутри джейла, требует доступа к данным, хранящимся в системе FreeNAS. Прежде чем выбрать Source (источник), важно сначала убедиться, что разрешения выбранного каталога или набора данных предоставляют разрешение на учетную запись пользователя/группы внутри джейла. Это не по умолчанию, так как пользователи и группы, созданные внутри джейла, полностью отделены от пользователей и групп системы FreeNAS.

 

Рабочий процесс для добавления хранилища обычно выполняется следующим образом:

  • Определите имя учетной записи пользователя и группы, используемой приложением. Например, установка приложения передачи автоматически создает учетную запись пользователя с именем transmission и групповую учетную запись, также называемую transmission. Если есть сомнения, проверьте файлы /etc/passwd (чтобы найти учетную запись пользователя) и /etc/group (чтобы найти учетную запись группы) внутри джейла. Как правило, имена пользователей и групп аналогичны имени приложения. Кроме того, UID и GID обычно совпадают с номером порта, используемым службой.
  • Пользователь и группа media (GID 8675309) являются частью базовой системы. Наличие приложений, выполняемых этой группой или пользователем, позволяет совместно использовать хранилище между несколькими приложениями в одном джейле, между несколькими джейлами или даже между хостом и джейлами.
  • В системе FreeNAS создайте учетную запись пользователя и группу, соответствующую именам пользователей и групп, которые используются приложением в джейле.
  • Решите, должен ли джейл иметь доступ к существующим данным или если новая зона хранения будет выделена для использования в джейле.
  • Если джейл получит доступ к существующим данным, отредактируйте разрешения (permissions) тома или набора данных, чтобы учетные записи пользователей и групп имели желаемый доступ для чтения и записи. Если несколько приложений или джейлов должны иметь доступ к тем же данным, создайте новую группу и добавьте каждую необходимую учетную запись пользователя в эту группу.
  • Если область хранения выделена для этого джейла или отдельного приложения, создайте набор данных. Отредактируйте разрешения этого набора данных, чтобы учетная запись пользователя и группы имела желаемый доступ для чтения и записи.
  • Используйте кнопку Add Storage (Добавить хранилище) в джейле и выберите настроенный том/набор данных в качестве источника.

Чтобы предотвратить запись в хранилище, установите флажок Read-Only (Только для чтения).

По умолчанию установлен флажок Create directory. Это означает, что каталог будет автоматически создан по указанному Destination, если каталог еще не существует.

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

В примере, показанном на рисунке ниже, в качестве Source (источника) был выбран набор данных с именем volume1/data, так как он содержит файлы, хранящиеся в системе FreeNAS. Когда хранилище было создано, пользователь просмотрел файл volume1/jails/freebsd1/usr/local в поле Destination (Место назначения), а затем ввел тест в качестве каталога. Поскольку этот каталог еще не существует, он был создан, потому что окно Create directory (Создать каталог) было оставлено. Полученное хранилище было добавлено к записи freenas1 в дереве как /usr/local/test. Пользователь щелкнул эту /usr/local/test, чтобы открыть экран редактирования.

Пример хранилища
Пример хранилища

Хранение обычно монтируется по мере его создания. Чтобы отключить хранилище, снимите флажок Mounted? (Установлено)

Установленный набор данных не будет автоматически монтировать любые дочерние наборы данных. Пока дочерние наборы данных могут просматриваться внутри джейла, любые изменения не будут видны. Поскольку каждый набор данных считается его собственной файловой системой, каждый дочерний набор данных должен иметь свою собственную точку монтирования, поэтому необходимо создать отдельное хранилище для любых дочерних наборов данных, которые необходимо установить.

Чтобы удалить хранилище, нажмите кнопку Delete (Удалить).

Внимание! Важно понимать, что добавленное хранилище — это просто указатель на выбранный каталог хранилища в системе FreeNAS. Он не копирует эти данные в джейл. Файлы, удаленные из каталога Destination в джейле, действительно удаляются из исходного каталога в системе FreeNAS. Однако удаление записи хранилища в джейле удаляет только указатель, оставляя данные неповрежденными, но недоступными из джейла.

Установка пакетов FreeBSD

Самый быстрый и простой способ установить программное обеспечение внутри джейла — установить пакет FreeBSD. Пакеты FreeBSD предварительно скомпилированы. Они содержат все двоичные файлы и список зависимостей, необходимых для работы программного обеспечения в системе FreeBSD.

Огромное количество программного обеспечения было перенесено на FreeBSD, в настоящее время более 24 000 приложений, и большая часть этого программного обеспечения доступна в виде пакета. Одним из способов поиска программного обеспечения FreeBSD является использование панели поиска в FreshPorts.org.

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

pkg install audiotag

При появлении запроса введите «y» (означает ДА-Yes) для завершения установки. В сообщениях установки указывается, успешно ли загружаются и устанавливаются пакет и его зависимости.

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

Успешную установку можно подтвердить, запросив базу данных пакета:

pkg info -f audiotag
audiotag-0.19_1
Name: audiotag
Version: 0.19_1
Installed on: Fri Nov 21 10:10:34 PST 2014
Origin: audio/audiotag
Architecture: freebsd:9:x86:64
Prefix: /usr/local
Categories: multimedia audio
Licenses: GPLv2
Maintainer: ports@FreeBSD.org
WWW: http://github.com/Daenyth/audiotag
Comment: Command-line tool for mass tagging/renaming of audio files
Options:
DOCS: on
FLAC: on
ID3: on
MP4: on
VORBIS: on
Annotations:
repo_type: binary
repository: FreeBSD
Flat size: 62.8KiB
Description: Audiotag is a command-line tool for mass tagging/renaming of audio files
it supports the vorbis comment, id3 tags, and MP4 tags.
WWW: http://github.com/Daenyth/audiotag

Чтобы показать, что было установлено пакетом:

pkg info -l audiotag
audiotag-0.19_1:
/usr/local/bin/audiotag
/usr/local/share/doc/audiotag/COPYING
/usr/local/share/doc/audiotag/ChangeLog
/usr/local/share/doc/audiotag/README
/usr/local/share/licenses/audiotag-0.19_1/GPLv2
/usr/local/share/licenses/audiotag-0.19_1/LICENSE
/usr/local/share/licenses/audiotag-0.19_1/catalog.mk

В FreeBSD стороннее программное обеспечение всегда хранится в /usr/local, чтобы отличать его от программного обеспечения, поставляемого с операционной системой. Бинарники почти всегда находятся в подкаталоге bin или sbin и файлы конфигурации в подкаталоге, который называется etc.

Компиляция портов FreeBSD

Программное обеспечение обычно устанавливается в джейлы FreeBSD с использованием пакетов. Но иногда есть веские причины для компиляции порта. Компиляционные порты предоставляют следующие преимущества:

  • Не каждый порт имеет доступный пакет. Обычно это связано с ограничениями на лицензирование или с известными уязвимостями без разрешения.
  • Иногда пакет устарел и требуется функция, доступная только в новой версии.
  • Некоторые порты предоставляют параметры компиляции, которые недоступны в предварительно скомпилированном пакете. Эти параметры используются для добавления или удаления функций или параметров.

Недостатки компиляции портов

Требуется время. В зависимости от размера приложения, количества зависимостей, скорости процессора, объема доступной оперативной памяти и текущей нагрузки на систему FreeNAS, необходимое время может составлять от нескольких минут до нескольких часов или даже до нескольких дней.

Если порт не предоставляет каких-либо параметров компиляции, он экономит время и сохраняет ресурсы системы FreeNAS, чтобы вместо этого использовать команду установки pkg.

Список FreshPorts.org показывает, имеет ли порт какие-либо настраиваемые параметры компиляции. На рисунке 13.2.5 показаны параметры конфигурации для аудиодиапазона.

Параметры конфигурации для Audiotag
Параметры конфигурации для Audiotag

Этот порт имеет пять настраиваемых параметров (DOCS, FLAC, ID3, MP4 и VORBIS), и каждый параметр включен (включен) по умолчанию.

Пакеты FreeBSD всегда создаются с использованием параметров по умолчанию. При компиляции порта сами эти параметры представлены в меню, позволяя изменить значения по умолчанию.

Сбор портов должен быть установлен в джейле до того, как могут быть скомпилированы порты. Внутри джейла используйте утилиту portsnap. Эта команда загружает коллекцию портов и извлекает ее в каталог jail/usr ports/:

portsnap fetch extract

Чтобы установить дополнительное программное обеспечение на более позднюю дату, убедитесь, что коллекция портов обновлена с помощью updatenap fetch update.

 

Чтобы скомпилировать порт, cd в подкаталог /usr/ports/. Запись для порта в FreshPorts обеспечивает местоположение cd и команду make для запуска. В этом примере выполняется сбор и установка порта audiotag:

cd /usr/ports/audio/audiotag
make install clean

Поскольку этот порт имеет настраиваемые параметры, при первом запуске этой команды отображается экран конфигурации, показанный на рисунке

Параметры конфигурации для порта Audiotag
Параметры конфигурации для порта Audiotag

С помощью клавиш со стрелками выберите опцию и нажмите пробел, чтобы переключить значение. Когда выставите все значения, нажмите Enter. Порт начнет компилироваться и устанавливаться.

Экран конфигурации не будет отображаться снова, даже если сборка будет остановлена и перезапущена. Его можно перерисовать, набрав make config. Измените настройки, затем перестройте, make clean install clean.

Многие порты зависят от других портов. Эти другие порты могут также иметь экраны конфигурации, которые будут показаны до начала компиляции. Хорошая идея — следить за компиляцией до тех пор, пока она не завершится, и вернется командная строка.

Когда порт установлен, он регистрируется в той же самой базе данных пакетов, которая управляет пакетами. Такую же команду pkg info можно использовать для определения того, что было установлено, как описано в предыдущем разделе.

Запуск установленного программного обеспечения

После установки пакетов или портов их необходимо настроить и запустить. Если вы знакомы с программным обеспечением, найдите файл конфигурации в каталоге /usr/local/etc или в его подкаталоге. Многие пакеты FreeBSD содержат пример файла конфигурации в качестве ссылки. Если вы не знакомы с программным обеспечением, вам нужно будет потратить некоторое время на веб-сайте программного обеспечения, чтобы узнать, какие параметры конфигурации доступны и какие файлы конфигурации требуют редактирования.

Большинство пакетов FreeBSD, которые содержат запускаемую службу, включают сценарий запуска, который автоматически устанавливается в /usr/local/etc/rc.d/. По завершении настройки запуск службы можно протестировать, запустив скрипт с опцией onestart. В качестве примера, если openvpn установлен в джейл, эти команды запускают свой сценарий запуска и проверяют, что служба запущена:

/usr/local/etc/rc.d/openvpn onestart
Starting openvpn.

/usr/local/etc/rc.d/openvpn onestatus
openvpn is running as pid 45560.

sockstat -4
USER COMMAND         PID     FD      PROTO   LOCAL ADDRESS   FOREIGN ADDRESS
root openvpn         48386   4       udp4    *:54789         *:*

Если он вызывает ошибку:

/usr/local/etc/rc.d/openvpn onestart
Starting openvpn.
/usr/local/etc/rc.d/openvpn: WARNING: failed to start openvpn

Запустите tail /var/log/messages, чтобы узнать, подсказывают ли какие-либо сообщения об ошибках. Большинство сбоев при запуске связаны с неправильной конфигурацией: либо опечатка, либо отсутствующая опция в файле конфигурации.

После проверки того, что служба запускается и работает по назначению, добавьте строку в /etc/rc.conf, чтобы запустить службу автоматически при запуске джейла. Строка для запуска службы всегда заканчивается _enable = «YES» и обычно начинается с имени программного обеспечения. Например, это запись для службы openvpn:

openvpn_enable=»YES»

Если есть сомнения, сценарий запуска показывает строку для ввода /etc/rc.conf. Это описание в /usr/local/etc/rc.d/openvpn:

# This script supports running multiple instances of openvpn.
# To run additional instances link this script to something like
# % ln -s openvpn openvpn_foo

# and define additional openvpn_foo_* variables in one of
# /etc/rc.conf, /etc/rc.conf.local or /etc/rc.conf.d /openvpn_foo

#
# Below NAME should be substituted with the name of this script. By default
# it is openvpn, so read as openvpn_enable. If you linked the script to
# openvpn_foo, then read as openvpn_foo_enable etc.
#
# The following variables are supported (defaults are shown).
# You can place them in any of
# /etc/rc.conf, /etc/rc.conf.local or /etc/rc.conf.d/NAME
#
# NAME_enable=»NO»
# set to YES to enable openvpn

Сценарий запуска также указывает, доступны ли какие-либо дополнительные параметры:

# NAME_if=
# driver(s) to load, set to «tun», «tap» or «tun tap»
#
# it is OK to specify the if_ prefix.
#
# # optional:
# NAME_flags=
# additional command line arguments
# NAME_configfile=»/usr/local/etc/openvpn/NAME.conf»
# —config file
# NAME_dir=»/usr/local/etc/openvpn»
# —cd directory

Управление шаблонами джейлов

FreeNAS поддерживает возможность добавления настраиваемых шаблонов в раскрывающееся меню Templates.

Чтобы создать собственный шаблон, сначала установите нужную операционную систему и настройте ее по мере необходимости. Установка может быть либо в существующем джейле, либо в другой системе.

Затем создайте спецификацию mtree с помощью этой команды, заменив /path/to/jail на фактический путь к джейлу:

mtree -c -p /path/to/jail -k sha256digest > file.mtree

После завершения настройки создайте tarball всей операционной системы, который будет использоваться в качестве шаблона. Этот tarball необходимо сжать gzip и завершить в .tgz-расширении. Будьте осторожны при создании tarball, так как это возможно в конечном итоге в рекурсивном цикле. Другими словами, полученный tarball должен быть сохранен за пределами установленной операционной системы, такой как внешний USB-накопитель или сетевой ресурс. В качестве альтернативы создайте временный каталог в операционной системе и используйте переключатель -exclude для tar, чтобы исключить этот каталог из tarball. Точная команда tar для использования будет различаться в зависимости от операционной системы, используемой для создания tarball.

Сохраните сгенерированные файлы .mtree и .tgz либо на общем ресурсе FTP, либо на HTTP-сервере. URL-адрес FTP или HTTP необходим для добавления шаблона в список доступных шаблонов.

Чтобы добавить шаблон, нажмите Jails ‣ Templates ‣ Add Jail Templates, который откроет экран, показанный на рисунке ниже

Добавление пользовательского шаблона джейла в FreeNAS
Добавление пользовательского шаблона джейла в FreeNAS

Настраиваемые параметры шаблона джейлов

Name

Тип string. Значение отображается в столбце Name (Имя) из View Jail Templates

OS

Тип drop-down menu. Выберете FreeBSD или Linux

Architecture

Тип drop-down menu. Выбор —  x86 (32-разрядный) или x64 (64-разрядный)

URL

Тип string. Введите полный URL-адрес в файл .tgz, включая протокол (ftp:// or http://)

Mtree

Тип string. Вставить спецификацию mtree для шаблона

 

Добавлены шаблоны в шаблонах Jails ‣ Templates

Просмотр доступных шаблонов джейла
Просмотр доступных шаблонов джейла

Список содержит следующие столбцы:

  • Name: появляется в раскрывающемся меню Template при добавлении новой тюрьмы.
  • URL: при добавлении новоого джейла с использованием этого шаблона шаблон загружается из этого места.
  • Instances: указывает, был ли шаблон использован для создания джейла. В этом примере шаблон еще не используется, поэтому экземпляры отображаются как «0».

Щелкните элемент для шаблона, чтобы открыть его кнопки «Редактировать — Edit» и «Удалить — Delete». Нажатие кнопки «Редактировать» шаблона открывает экран конфигурации

Редактирование параметров шаблона
Редактирование параметров шаблона

При нажатии кнопки «Удалить» отображается предупреждающее сообщение с запросом подтверждения удаления. Обратите внимание, что как только шаблон будет удален, он будет удален из раскрывающегося меню «Шаблоны» и больше не будет доступен для создания новых джейлов.

Использование iocage

Начиная с FreeNAS 9.10.1, утилита командной строки iocage включена для создания и управления джейлами. Нажмите «Shell», чтобы открыть командную строку и начать использовать iocage.

Примечание

Инфраструктура джейлов переходит от старого защитника warden к новому серверу iocage. Для этого процесса перехода требуется, чтобы API-интерфейсы промежуточного программного обеспечения были переписаны для нового пользовательского интерфейса. Ожидается, что переход будет завершен FreeNAS версии 11.2. Поскольку джейлы, созданные в старом пользовательском интерфейсе, используют warden бэкэнд, то джейлы, созданные в новом интерфейсе, используют бэкэнд iocage, и оба используют разные версии API, они несовместимы. Хотя сценарий миграции будет доступен после завершения перехода, он не сможет предвидеть каждый сценарий конфигурации для каждого приложения, установленного в джейлах. В то время рекомендация будет заключаться в том, чтобы: создавать новые джейлы с использованием нового пользовательского интерфейса, копировать любые существующие конфигурации и удалять старые наборы данных джейлов после того, как новые джейлы заработают должным образом.

Iocage имеет несколько вариантов, чтобы помочь пользователям:

  • Существует встроенная справка, отображаемая при вводе iocage —help | more. Каждая подкоманда также имеет помощь, отображаемую с указанием имени подкоманды, за которым следует флаг -help. Например, помощь для отображения подкоманды активации iocage activate —help.
  • Доступ к странице руководства iocage осуществляется путем ввода man iocage.
  • Проект iocage также имеет документацию, доступную на readthedocs.io. (http://iocage.readthedocs.io/en/latest/index.html)

Управление джейлами iocage

Создание джейла автоматически запускает процесс настройки iocage для системы FreeNAS. Свойства Jail также можно указать командой iocage create.

В этом примере создается новый джейл с именем examplejail. Дополнительные свойства — это назначенный вручную IP-адрес 192.168.1.10, сетевая маска / 24 на интерфейсе em0 и использование FreeBSD 11.1-RELEASE:

[root@freenas ~]# iocage create -n examplejail ip4_addr=»em0|192.168.1.10/24″ -r
11.1-RELEASE

examplejail successfully created!

Создание джейла может занять несколько минут. После завершения, запустите новый джейл с помощью iocage start:

[root@freenas ~]# iocage start examplejail
* Starting examplejail
+ Started OK
+ Starting services OK

Чтобы открыть консоль в запущенном джейле, используйте iocage console:

[root@freenas ~]# iocage console examplejail
FreeBSD 11.1-STABLE (FreeNAS.amd64) #0 35e0ef284(freenas/11-stable): Wed Oct 18
17:44:36 UTC 2017

Welcome to FreeBSD!

Release Notes, Errata: https://www.FreeBSD.org/releases/
Security Advisories: https://www.FreeBSD.org/security/
FreeBSD Handbook: https://www.FreeBSD.org/handbook/
FreeBSD FAQ: https://www.FreeBSD.org/faq/
Questions List: https://lists.FreeBSD.org/mailman/listinfo/freebsd-questions/
FreeBSD Forums: https://forums.FreeBSD.org/

Documents installed with the system are in the /usr/local/share/doc/freebsd/
directory, or can be installed later with: pkg install en-freebsd-doc
For other languages, replace «en» with a language code like de or fr.

Show the version of FreeBSD installed: freebsd-version ; uname -a
Please include that output and any error messages when posting questions.
Introduction to manual pages: man man
FreeBSD directory layout: man hier

Edit /etc/motd to change this login announcement.
root@examplejail:~ #

Джейлы могут быть отключены с iocage stop:

[root@freenas ~]# iocage stop examplejail
* Stopping examplejail
+ Running prestop OK
+ Stopping services OK
+ Removing jail process OK
+ Running poststop OK

Тюрьмы удаляются с помощью iocage destroy:

[root@freenas ~]# iocage destroy examplejail
This will destroy jail examplejail
Are you sure? [y/N]: y
Destroying examplejail

Чтобы настроить свойства джейла, используйте iocage set и iocage get. Все свойства джейла просматриваются с помощью iocage get all:

В этом примере показан сокращенный список свойств examplejail. Страница руководства iocage (man iocage) описывает еще более настраиваемые свойства для джейлов.

[root@freenas ~]# iocage get all examplejail | less
allow_mount:0
allow_mount_devfs:0
allow_sysvipc:0
available:readonly
basejail:no
boot:off
bpf:no
children_max:0
cloned_release:11.1-RELEASE
comment:none
compression:lz4
compressratio:readonly
coredumpsize:off
count:1
cpuset:off
cputime:off
datasize:off
dedup:off
defaultrouter:none
defaultrouter6:none

Чтобы настроить свойство джейла, используйте iocage set:

[root@freenas ~]# iocage set notes=»This is a testing jail.» examplejail
Property: notes has been updated to This is a testing jail.