Jail - механізм віртуалізації в системі freebsd

Багато клітин хороших і різних. Під таким слоганом я зайнявся облаштуванням клітин для нових пацієнтів. Але трохи поясню про що буде йти мова. Мені потрібні були кілька клітин для поділу програм по серверам, для тестових робіт, а так само:

  • Є незавантажений сервер який може дати велику кількість ресурсів.
  • Небажання засмічувати систему програмами які можна було винести на інші сервера.
  • Мати тестовий полігон на реальному залозі.

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

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

Необхідно створити мережеві аліаси для ваших клітин. Вони потрібні щоб клітини могли коректно працювати в мережі. Аліаси створюються на материнській системі:

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

Для запуску необхідної клітини використовуйте її ім'я:

Виведемо список працюючих клітин:

Зайдемо в першу клітку:


Все готово, тепер ви можете налаштувати клітку як вам завгодно і приступити до установки потрібних пакетів. Але для коректної роботи вам необхідно додатково налаштувати створену клітку.

Створимо в клітці порожній файл / etc / fstab щоб при її запуску не з'являлося повідомлення про відсутній файлі fstab.

PORT MAPPER

Вимкніть в клітці port mapper.

Налаштуємо resolv.conf так, щоб дозвіл імен в клітці працювало правильно. Створимо в клітці файл з потрібним DNS сервером або скопіюємо з основної машини в клітку.

Запустимо в клітці newaliases щоб при запуску не з'являлося повідомлення від sendmail.

Відключимо мережевий конфігураційний інтерфейс щоб при запуску не з'являлося повідомлення від ifconfig.

Обов'язково змініть пароль root в клітці (зробіть відмінним від основної машини).

Створимо нового користувача. Для цього є штатна утиліта jexec за допомогою неї ми додамо нового користувача складається в групі wheel [цифра це JID клітини]:

Для роботи з кліткою за допомогою ssh необхідно налаштувати демон sshd.
Для цього на основний машині в / etc / ssh / sshd_config вкажемо потрібний для прослуховування IP.


Перезапустити демон і перевіримо його роботу.


Додамо в конфігураційний файл rc.conf клітини.

Встановіть потрібну часову зону в клітці.

Експортуємо існуючі порти в клітку. Ви можете також скопіювати їх в потрібну директорію або створити симлінк.

Ви можете налаштувати деякі змінні sysctl в базову систему налаштування роботи клітин.

  1. security.jail.set_hostname_allowed: 1 # Можливість міняти hostname всередині клітини.
  2. security.jail.socket_unixiproute_only: 1 # Створювати сокет в клітці можна тільки для PF_LOCAL, PF_INET або PF_ROUT інакше, повертається помилка
  3. security.jail.sysvipc_allowed: 0 # Можливість використовувати System V IPC
  4. security.jail.enforce_statfs: 2 # Можливість бачити клітці все змонтовані пристрої
  5. security.jail.allow_raw_sockets: 0 # Можливість використання низькорівневих сокетів (ping і тп)
  6. security.jail.chflags_allowed: 0 # Можливість міняти системні прапори файлів
  7. security.jail.jailed: 0 # Бачити список запущених клітин
  8. security.jail.getfsstatroot_only: 1 # - клітина отримує тільки інформацію про ФС, наприклад, повертається df, для кореневої файлової системи.

Для деякого обмеження ресурсів клітини використовуйте спільно з обмеженнями в /etc/login.conf;)

Написати про самопісний скрипті або про порт який може управляти клітинами?

Тепер ви можете створювати і працювати з клітинами. Є звичайно недоліки клітин такі як відсутність обмежень на використання ресурсів процесора або пам'яті без серйозної розпилювання та застосування спеціальних патчів і багато іншого. Але зате все працює нативної і швидко в даному випадку ми домоглися бажаного.

Схожі статті