git: 90fc64e2a8 - main - update translation of books/handbook/jails to Russian
Vladlen Popolitov <[email protected]>
| Newsgroups | gmane.os.freebsd.devel.cvs.doc |
|---|---|
| Message-ID | <[email protected]> |
The branch main has been updated by vladlen: URL: https://cgit.FreeBSD.org/doc/commit/?id=90fc64e2a896f70b265e1334490c4f9f7353091c commit 90fc64e2a896f70b265e1334490c4f9f7353091c Author: Vladlen Popolitov <[email protected]> AuthorDate: 2026-08-10 07:43:07 +0000 Commit: Vladlen Popolitov <[email protected]> CommitDate: 2026-08-10 07:43:07 +0000 update translation of books/handbook/jails to Russian Differential Revision: https://reviews.freebsd.org/D58751 --- .../content/ru/books/handbook/jails/_index.adoc | 1132 +++- .../content/ru/books/handbook/jails/_index.po | 5406 ++++++++++++++++---- 2 files changed, 5615 insertions(+), 923 deletions(-) diff --git a/documentation/content/ru/books/handbook/jails/_index.adoc b/documentation/content/ru/books/handbook/jails/_index.adoc index 2e8f13b217..bf68a9408b 100644 --- a/documentation/content/ru/books/handbook/jails/_index.adoc +++ b/documentation/content/ru/books/handbook/jails/_index.adoc @@ -1,11 +1,11 @@ --- description: 'ÐлеÑки (jails) ÑлÑÑÑаÑÑ ÐºÐ¾Ð½ÑепÑÐ¸Ñ ÑÑадиÑионного окÑÑÐ¶ÐµÐ½Ð¸Ñ chroot неÑколÑкими ÑпоÑобами' -next: books/handbook/mac +next: books/handbook/containers params: path: /books/handbook/jails/ part: 'ЧаÑÑÑ III. ÐдминиÑÑÑиÑование ÑиÑÑемÑ' prev: books/handbook/security -showBookMenu: 'true' +showBookMenu: true tags: ["jails", "creating", "managing", "updating"] title: 'Ðлава 17. ÐлеÑки и конÑейнеÑÑ' weight: 21 @@ -68,9 +68,13 @@ endif::[] * РазлиÑнÑе ÑпоÑÐ¾Ð±Ñ Ð½Ð°ÑÑÑойки ÑеÑи Ð´Ð»Ñ ÐºÐ»ÐµÑки. * Файл конÑигÑÑаÑии клеÑки. * Ðак ÑоздаÑÑ ÑазлиÑнÑе ÑÐ¸Ð¿Ñ ÐºÐ»ÐµÑки. +* Ðак наÑÑÑоиÑÑ ÑÑанÑлÑÑÐ¸Ñ ÑеÑевÑÑ Ð°Ð´ÑеÑов Ð´Ð»Ñ ÐºÐ»ÐµÑок. * Ðак запÑÑÑиÑÑ, оÑÑановиÑÑ Ð¸ пеÑезапÑÑÑиÑÑ ÐºÐ»ÐµÑкÑ. * ÐÑÐ½Ð¾Ð²Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ»ÐµÑок, как изнÑÑÑи, Ñак и ÑнаÑÑжи клеÑки. * Ðак обновиÑÑ ÑазлиÑнÑе ÑÐ¸Ð¿Ñ ÐºÐ»ÐµÑок. +* Ðак огÑаниÑиÑÑ ÑеÑÑÑÑÑ, коÑоÑÑе Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑ ÐºÐ»ÐµÑка. +* ÐополниÑелÑнÑе паÑамеÑÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи и ÑÑнкÑий на ÑÑовне клеÑки. +* Ðак делегиÑоваÑÑ ÐºÐ»ÐµÑке набоÑÑ Ð´Ð°Ð½Ð½ÑÑ ZFS. * ÐеполнÑй ÑпиÑок ÑазлиÑнÑÑ Ð¼ÐµÐ½ÐµÐ´Ð¶ÐµÑов клеÑок FreeBSD. [[jail-types]] @@ -78,7 +82,7 @@ endif::[] ÐекоÑоÑÑе админиÑÑÑаÑоÑÑ ÑазделÑÑÑ ÐºÐ»ÐµÑки на ÑазлиÑнÑе ÑипÑ, Ñ Ð¾ÑÑ Ð±Ð°Ð·Ð¾Ð²Ñе ÑÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸Ð¸ оÑÑаÑÑÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñми. ÐÐ°Ð¶Ð´Ð¾Ð¼Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸ÑÑÑаÑоÑÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ опÑеделиÑÑ, какой Ñип клеÑки ÑоздаваÑÑ Ð² каждом конкÑеÑном ÑлÑÑае, в завиÑимоÑÑи Ð¾Ñ ÑеÑаемой задаÑи. -Ðиже пÑиведен ÑпиÑок ÑазлиÑнÑÑ Ñипов, Ð¸Ñ Ñ Ð°ÑакÑеÑиÑÑики и ÑекомендаÑии по иÑполÑзованиÑ. +Ðиже пÑиведÑн ÑпиÑок ÑазлиÑнÑÑ Ñипов, Ð¸Ñ Ñ Ð°ÑакÑеÑиÑÑики и ÑекомендаÑии по иÑполÑзованиÑ. [[thick-jails]] === ТолÑÑÑе клеÑки (Thick Jails) @@ -99,7 +103,7 @@ endif::[] [[thin-jails]] === Тонкие клеÑки (Thin Jails) -Ð¢Ð¾Ð½ÐºÐ°Ñ ÐºÐ»ÐµÑка (thin jail) иÑполÑзÑÐµÑ Ð±Ð°Ð·Ð¾Ð²ÑÑ ÑиÑÑÐµÐ¼Ñ ÑеÑез Ñнимки OpenZFS или монÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ NullFS из Ñаблона. ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ Ñонкой клеÑки дÑблиÑÑеÑÑÑ Ð»Ð¸ÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñное подмножеÑÑво базовой ÑиÑÑемÑ, ÑÑо пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº менÑÑÐµÐ¼Ñ Ð¿Ð¾ÑÑÐµÐ±Ð»ÐµÐ½Ð¸Ñ ÑеÑÑÑÑов по ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ ÑолÑÑой клеÑкой. Ðднако ÑÑо Ñакже ознаÑаеÑ, ÑÑо Ñонкие клеÑки обладаÑÑ Ð¼ÐµÐ½ÑÑей изолÑÑией и незавиÑимоÑÑÑÑ Ð¿Ð¾ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ ÑолÑÑÑми. ÐÐ·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² обÑÐ¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½ÑÐ°Ñ Ð¼Ð¾Ð³ÑÑ Ð¿Ð¾ÑенÑиалÑно заÑÑагивР°ÑÑ Ð½ÐµÑколÑко ÑÐ¾Ð½ÐºÐ¸Ñ ÐºÐ»ÐµÑок одновÑеменно. +Ð¢Ð¾Ð½ÐºÐ°Ñ ÐºÐ»ÐµÑка иÑполÑзÑÐµÑ Ð±Ð°Ð·Ð¾Ð²ÑÑ ÑиÑÑÐµÐ¼Ñ Ð¸Ð· Ñаблона, иÑполÑзÑÑ Ð»Ð¸Ð±Ð¾ Ñнимки OpenZFS, либо монÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ NullFS. ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ Ñонкой клеÑки дÑблиÑÑеÑÑÑ Ð»Ð¸ÑÑ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑнÑй Ð¿Ð¾Ð´Ð½Ð°Ð±Ð¾Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð¹ ÑиÑÑемÑ, ÑÑо пÑÐ¸Ð²Ð¾Ð´Ð¸Ñ Ðº менÑÑÐµÐ¼Ñ Ð¿Ð¾ÑÑÐµÐ±Ð»ÐµÐ½Ð¸Ñ ÑеÑÑÑÑов по ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ ÑолÑÑой клеÑкой. Ðва Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ð° ведÑÑ ÑÐµÐ±Ñ Ð¿Ð¾-ÑÐ°Ð·Ð½Ð¾Ð¼Ñ Ð¿Ð¾Ñле ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ»ÐµÑок. ÐÑи меÑоде OpenZFS ÐºÐ°Ð¶Ð´Ð°Ñ ÑÐ¾Ð½ÐºÐ°Ñ ÐºÐ»ÐµÑка ÑоздаеÑÑÑ ÐºÐ°Ðº клон Ñнимка Ñаблона: незавиÑÐ¸Ð¼Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ñ Ð·Ð°Ð¿Ð¸ÑÑÑ Ð¿Ñи копиÑовани и, коÑоÑÐ°Ñ ÑазделÑÐµÑ Ð½ÐµÐ¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð½Ñе блоки Ñ Ñаблоном, но ÑаÑÑ Ð¾Ð´Ð¸ÑÑÑ Ð¿Ñи изменении. Ðолее поздние измененР¸Ñ Ñаблона не ÑаÑпÑоÑÑÑанÑÑÑÑÑ Ð½Ð° ÑÑÑеÑÑвÑÑÑие клонÑ, и каждÑй клон обÑлÑживаеÑÑÑ Ð¸ обновлÑеÑÑÑ Ð¸Ð½Ð´Ð¸Ð²Ð¸Ð´ÑалÑно, во многом как ÑолÑÑÐ°Ñ ÐºÐ»ÐµÑка. ÐÑи меÑоде NullFS ÐºÐ°Ð¶Ð´Ð°Ñ ÑÐ¾Ð½ÐºÐ°Ñ ÐºÐ»ÐµÑка монÑиÑÑÐµÑ Ñаблон ÑолÑко Ð´Ð»Ñ ÑÑÐµÐ½Ð¸Ñ Ð²Ð¾ вÑÐµÐ¼Ñ Ð²ÑполнениÑ, поÑÑÐ¾Ð¼Ñ Ð±Ð°Ð·Ð¾Ð²Ð°Ñ ÑиÑÑема иÑполÑзÑеÑÑÑ ÑовмеÑÑно в ÑеалÑном вÑемени, и обновление Ñаблона обновлÑÐµÑ ÐºÐ°Ð¶Ð´ÑÑ ÐºÐ»ÐµÑкÑ, коÑоÑÐ°Ñ ÐµÐ³Ð¾ монÑиÑÑеÑ. ÐÑа обÑÐ°Ñ Ð±Ð°Ð·Ð°, доÑÑÑÐ¿Ð½Ð°Ñ ÑолÑко Ð´Ð»Ñ ÑÑениÑ, Ñакже обеÑпеÑÐ¸Ð²Ð°ÐµÑ ÑÐ ¾Ð½ÐºÐ¸Ð¼ клеÑкам NullFS менÑÑÑÑ Ð¸Ð·Ð¾Ð»ÑÑÐ¸Ñ Ð¸ незавиÑимоÑÑÑ, Ñем ÑолÑÑÑм клеÑкам, поÑколÑÐºÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² обÑÐ¸Ñ ÐºÐ¾ мпоненÑÐ°Ñ Ð¾Ð´Ð½Ð¾Ð²Ñеменно заÑÑагиваÑÑ ÐºÐ°Ð¶Ð´ÑÑ ÐºÐ»ÐµÑкÑ, иÑполÑзÑÑÑÑÑ Ð¸Ñ . ÐкÑаÑÑе, ÑÐ¾Ð½ÐºÐ°Ñ ÐºÐ»ÐµÑка в FreeBSD â ÑÑо Ñип клеÑки FreeBSD, коÑоÑÑй воÑпÑÐ¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ Ð·Ð½Ð°ÑиÑелÑнÑÑ ÑаÑÑÑ, но не вÑÑ Ð±Ð°Ð·Ð¾Ð²ÑÑ ÑиÑÑемÑ, в изолиÑованной ÑÑеде. @@ -107,12 +111,12 @@ endif::[] * ÐÑÑекÑивноÑÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑеÑÑÑÑов: Ñонкие клеÑки более ÑÑÑекÑÐ¸Ð²Ð½Ñ Ð² иÑполÑзовании ÑеÑÑÑÑов по ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ ÑолÑÑÑми клеÑками. ÐоÑколÑÐºÑ Ð¾Ð½Ð¸ иÑполÑзÑÑÑ Ð¾Ð±ÑÑÑ Ð±Ð°Ð·Ð¾Ð²ÑÑ ÑиÑÑемÑ, они занимаÑÑ Ð¼ÐµÐ½ÑÑе меÑÑа на диÑке и опеÑаÑивной памÑÑи. ÐÑо позволÑÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑ Ð±Ð¾Ð»ÑÑе клеÑок на Ñом же обоÑÑдовании без ÑÑезмеÑного поÑÑÐµÐ±Ð»ÐµÐ½Ð¸Ñ ÑеÑÑÑÑов. * ÐÑÑÑÑое ÑазвÑÑÑÑвание: Ñоздание и запÑÑк ÑÐ¾Ð½ÐºÐ¸Ñ ÐºÐ»ÐµÑок обÑÑно пÑоиÑÑ Ð¾Ð´Ð¸Ñ Ð±ÑÑÑÑее по ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ ÑолÑÑÑми клеÑками. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾Ñобенно полезно пÑи бÑÑÑÑом ÑазвеÑÑÑвании множеÑÑва ÑкземплÑÑов. -* УниÑиÑиÑованное обÑлÑживание: поÑколÑÐºÑ Ñонкие клеÑки иÑполÑзÑÑÑ Ð±Ð¾Ð»ÑÑÑÑ ÑаÑÑÑ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð¹ ÑиÑÑÐµÐ¼Ñ Ñ Ð¾ÑÑа, Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ обÑлÑживание обÑÐ¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñов базовой ÑиÑÑÐµÐ¼Ñ (ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðº библиоÑеки и иÑполнÑемÑе ÑайлÑ) Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ вÑполнÑÑÑ ÑолÑко один Ñаз на Ñ Ð¾ÑÑе. ÐÑо ÑпÑоÑÐ°ÐµÑ Ð¿ÑоÑеÑÑ Ð¾Ð±ÑлÑÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой оÑделÑной базовой ÑиÑÑÐµÐ¼Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑолÑÑой клеÑки. +* УниÑиÑиÑованное обÑлÑживание: иÑполÑзÑÑ Ð¼ÐµÑод NullFS, когда Ñонкие клеÑки иÑполÑзÑÑÑ Ð¾Ð´Ð½Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð¹ ÑиÑÑемÑ, доÑÑÑпнÑÑ Ð´Ð»Ñ ÑÑениÑ, Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸ обÑлÑживание обÑÐ¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñов базовой ÑиÑÑÐµÐ¼Ñ (ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðº библиоÑеки и иÑполнÑемÑе ÑайлÑ) Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ вÑполнÑÑÑ ÑолÑко один Ñаз на Ñаблоне. ÐÑо ÑпÑоÑÐ°ÐµÑ Ð¿ÑоÑеÑÑ Ð¾Ð±ÑлÑÐ¶Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¿Ð¾ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð´Ð´ÐµÑжкой оÑделÑной базовой ÑиÑÑÐµÐ¼Ñ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑолÑÑой клеÑки. Тонкие клеÑки в клоне OpenZFS не облаР´Ð°ÑÑ Ñаким пÑеимÑÑеÑÑвом: Ñак как каждÑй клон незавиÑим, обновление должно бÑÑÑ Ð¿Ñименено к каждой ÐºÐ»ÐµÑ ÐºÐµ индивидÑалÑно, как и в ÑлÑÑае Ñ ÑолÑÑÑми клеÑками. * ÐбÑие ÑеÑÑÑÑÑ: Ñонкие клеÑки могÑÑ Ð¿ÑоÑе ÑазделÑÑÑ Ð¾Ð±Ñие ÑеÑÑÑÑÑ, Ñакие как библиоÑеки и иÑполнÑемÑе ÑайлÑ, Ñ Ñ Ð¾ÑÑ-ÑиÑÑемой. ÐÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к более ÑÑÑекÑÐ¸Ð²Ð½Ð¾Ð¼Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÐºÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð¸Ñка и повÑÑÐµÐ½Ð¸Ñ Ð¿ÑоизводиÑелÑноÑÑи пÑиложений внÑÑÑи клеÑки. ÐедоÑÑаÑки ÑÐ¾Ð½ÐºÐ¸Ñ ÐºÐ»ÐµÑок: -* УменÑÑÐµÐ½Ð½Ð°Ñ Ð¸Ð·Ð¾Ð»ÑÑиÑ: оÑновной недоÑÑаÑок ÑÐ¾Ð½ÐºÐ¸Ñ ÐºÐ»ÐµÑок заклÑÑаеÑÑÑ Ð² Ñом, ÑÑо они обеÑпеÑиваÑÑ Ð¼ÐµÐ½ÑÑÑÑ Ð¸Ð·Ð¾Ð»ÑÑÐ¸Ñ Ð¿Ð¾ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ ÑолÑÑÑми клеÑками. ÐоÑколÑÐºÑ Ð¾Ð½Ð¸ иÑполÑзÑÑÑ Ð·Ð½Ð°ÑиÑелÑнÑÑ ÑаÑÑÑ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð¹ ÑиÑÑÐµÐ¼Ñ Ñаблона, ÑÑзвимоÑÑи или пÑоблемÑ, заÑÑагиваÑÑие обÑие компоненÑÑ, могÑÑ Ð¿Ð¾ÑенÑиалÑно повлиÑÑÑ Ð½Ð° неÑколÑко клеÑок одновÑеменно. +* УменÑÑÐµÐ½Ð½Ð°Ñ Ð¸Ð·Ð¾Ð»ÑÑиÑ: оÑновной недоÑÑаÑок ÑÐ¾Ð½ÐºÐ¸Ñ ÐºÐ»ÐµÑок заклÑÑаеÑÑÑ Ð² Ñом, ÑÑо они обеÑпеÑиваÑÑ Ð¼ÐµÐ½ÑÑÑÑ Ð¸Ð·Ð¾Ð»ÑÑÐ¸Ñ Ð¿Ð¾ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ ÑолÑÑÑми клеÑками. Ð ÑаÑÑноÑÑи клеÑки Ñ Ð¼ÐµÑодом NullFS полÑзÑÑÑÑÑ ÐºÐ¾Ð¿Ð¸ÐµÐ¹ базовой ÑиÑÑÐµÐ¼Ñ Ñаблона в ÑеалÑном вÑемени, поÑÑÐ¾Ð¼Ñ ÑÑзвимоÑÑи или пÑоблемÑ, заÑÑагиваÑÑие ÑÑи обÑие компоненÑÑ, могÑÑ Ð¿Ð¾ÑенÑиалÑно повлиÑÑÑ Ð½Ð° неÑколÑко клеÑок одновÑеменно. * ÐÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи: ÑменÑÑÐµÐ½Ð½Ð°Ñ Ð¸Ð·Ð¾Ð»ÑÑÐ¸Ñ Ð² ÑÐ¾Ð½ÐºÐ¸Ñ ÐºÐ»ÐµÑÐºÐ°Ñ Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑедÑÑавлÑÑÑ ÑгÑÐ¾Ð·Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи, Ñак как компÑомеÑаÑÐ¸Ñ Ð¾Ð´Ð½Ð¾Ð¹ клеÑки Ð¼Ð¾Ð¶ÐµÑ Ñ Ð±Ð¾Ð»ÑÑей веÑоÑÑноÑÑÑÑ Ð¿Ð¾Ð²Ð»Ð¸ÑÑÑ Ð½Ð° дÑÑгие клеÑки или на Ñ Ð¾ÑÑ-ÑиÑÑемÑ. * ÐонÑликÑÑ Ð·Ð°Ð²Ð¸ÑимоÑÑей: еÑли неÑколÑким Ñонким клеÑкам ÑÑебÑÑÑÑÑ ÑазнÑе веÑÑии Ð¾Ð´Ð½Ð¸Ñ Ð¸ ÑÐµÑ Ð¶Ðµ библиоÑек или пÑогÑаммного обеÑпеÑениÑ, ÑпÑавление завиÑимоÑÑÑми Ð¼Ð¾Ð¶ÐµÑ ÑÑложниÑÑÑÑ. РнекоÑоÑÑÑ ÑлÑÑаÑÑ ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾ÑÑебоваÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑнÑÑ ÑÑилий Ð´Ð»Ñ Ð¾Ð±ÐµÑпеÑÐµÐ½Ð¸Ñ ÑовмеÑÑимоÑÑи. * ÐÑÐ¾Ð±Ð»ÐµÐ¼Ñ ÑовмеÑÑимоÑÑи: пÑÐ¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² Ñонкой клеÑке могÑÑ ÑÑолкнÑÑÑÑÑ Ñ Ð¿Ñоблемами ÑовмеÑÑимоÑÑи, еÑли они ÑаÑÑÑиÑÐ°Ð½Ñ Ð½Ð° опÑеделÑнное окÑÑжение базовой ÑиÑÑемÑ, оÑлиÑаÑÑееÑÑ Ð¾Ñ Ð¾Ð±ÑÐ¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñов, пÑедоÑÑавлÑемÑÑ Ñаблоном. @@ -120,7 +124,7 @@ endif::[] [[service-jails]] === СеÑвиÑнÑе клеÑки (Service Jails) -СеÑвиÑÐ½Ð°Ñ ÐºÐ»ÐµÑка (service jail) напÑÑмÑÑ ÑазделÑÐµÑ Ð²ÑÑ Ð´ÐµÑево Ñайловой ÑиÑÑÐµÐ¼Ñ Ñ Ñ Ð¾ÑÑом (коÑневой пÑÑÑ ÐºÐ»ÐµÑки â [.filename]#/#) и, Ñаким обÑазом, Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð»ÑÑаÑÑ Ð´Ð¾ÑÑÑп и изменÑÑÑ Ð»ÑбÑе ÑÐ°Ð¹Ð»Ñ Ð½Ð° Ñ Ð¾ÑÑе, а Ñакже иÑполÑзÑÐµÑ Ñе же ÑÑÑÑнÑе запиÑи полÑзоваÑелей, ÑÑо и Ñ Ð¾ÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ñ Ð½ÐµÑ Ð½ÐµÑ Ð´Ð¾ÑÑÑпа к ÑеÑи или дÑÑгим ÑеÑÑÑÑам, огÑаниÑеннÑм в клеÑÐºÐ°Ñ , но ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ наÑÑÑоиÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð²ÑоÑного иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑеÑи Ñ Ð¾ÑÑа и ÑнÑÑÐ¸Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ Ð¾Ð³ÑаниÑений клеÑки. ÐÑновное пÑименение ÑеÑвиÑнÑÑ ÐºÐ»ÐµÑок â авÑомаÑиÑеÑкое огÑаниÑение ÑлÑжб/демонов внÑÑÑи клеÑки Ñ Ð¼Ð¸Ð½Ð ¸Ð¼Ð°Ð»Ñной наÑÑÑойкой и без Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи Ð·Ð½Ð°Ð½Ð¸Ñ Ñайлов, ÑÑебÑемÑÑ Ñакой ÑлÑжбой/демоном. СеÑвиÑнÑе клеÑки поÑвилиÑÑ Ð² FreeBSD 15. +СеÑвиÑÐ½Ð°Ñ ÐºÐ»ÐµÑка (service jail) напÑÑмÑÑ ÑазделÑÐµÑ Ð²ÑÑ Ð´ÐµÑево Ñайловой ÑиÑÑÐµÐ¼Ñ Ñ Ñ Ð¾ÑÑом (коÑневой пÑÑÑ ÐºÐ»ÐµÑки â [.filename]#/#) и, Ñаким обÑазом, Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð»ÑÑаÑÑ Ð´Ð¾ÑÑÑп и изменÑÑÑ Ð»ÑбÑе ÑÐ°Ð¹Ð»Ñ Ð½Ð° Ñ Ð¾ÑÑе, а Ñакже иÑполÑзÑÐµÑ Ñе же ÑÑÑÑнÑе запиÑи полÑзоваÑелей, ÑÑо и Ñ Ð¾ÑÑ. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ñ Ð½ÐµÑ Ð½ÐµÑ Ð´Ð¾ÑÑÑпа к ÑеÑи или дÑÑгим ÑеÑÑÑÑам, огÑаниÑеннÑм в клеÑÐºÐ°Ñ , но ÐµÑ Ð¼Ð¾Ð¶Ð½Ð¾ наÑÑÑоиÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð²ÑоÑного иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑеÑи Ñ Ð¾ÑÑа и ÑнÑÑÐ¸Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ Ð¾Ð³ÑаниÑений клеÑки. ÐÑновное пÑименение ÑеÑвиÑнÑÑ ÐºÐ»ÐµÑок â авÑомаÑиÑеÑкое огÑаниÑение ÑлÑжб/демонов внÑÑÑи клеÑки Ñ Ð¼Ð¸Ð½Ð ¸Ð¼Ð°Ð»Ñной наÑÑÑойкой и без Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи Ð·Ð½Ð°Ð½Ð¸Ñ Ñайлов, ÑÑебÑемÑÑ Ñакой ÑлÑжбой/демоном. СеÑвиÑнÑе клеÑки доÑÑÑÐ¿Ð½Ñ Ñ Ð²ÐµÑÑии FreeBSD 15.0. ÐÑеимÑÑеÑÑва ÑеÑвиÑнÑÑ ÐºÐ»ÐµÑок: @@ -179,13 +183,34 @@ endif::[] С `jail_parallel_start` вÑе наÑÑÑоеннÑе клеÑки бÑдÑÑ Ð·Ð°Ð¿ÑÑÐµÐ½Ñ Ð² Ñоновом Ñежиме. ==== +Ðо ÑмолÑÐ°Ð½Ð¸Ñ ÐºÐ°Ð¶Ð´Ð°Ñ ÐºÐ»ÐµÑка, коÑоÑÐ°Ñ Ð¸Ð¼ÐµÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð² конÑигÑÑаÑионнÑÑ ÑÐ°Ð¹Ð»Ð°Ñ , запÑÑкаеÑÑÑ Ð¿Ñи загÑÑзке. ЧÑÐ¾Ð±Ñ Ð·Ð°Ð¿ÑÑÑиÑÑ ÑолÑко вÑбÑаннÑе клеÑки, пеÑеÑиÑлиÑе Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð° в `jail_list`: + +[source, shell] +.... +# sysrc jail_list="www db" +.... + +Ðмена в `jail_list` ÑазделÑÑÑÑÑ Ð¿Ñобелами и Ð´Ð¾Ð»Ð¶Ð½Ñ ÑооÑвеÑÑÑвоваÑÑ Ð¸Ð¼ÐµÐ½Ð°Ð¼ клеÑок, опÑеделÑннÑм в [.filename]#/etc/jail.conf# или [.filename]#/etc/jail.conf.d/#. ÐÑи загÑÑзке запÑÑкаÑÑÑÑ ÑолÑко пеÑеÑиÑленнÑе клеÑки, и они запÑÑкаÑÑÑÑ Ð² Ñказанном поÑÑдке, поÑÑÐ¾Ð¼Ñ Ð»ÑбÑÑ ÐºÐ»ÐµÑкÑ, пÑопÑÑеннÑÑ Ð² `jail_list`, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ запÑÑкаÑÑ Ð²ÑÑÑнÑÑ. Ðогда `jail_list` оÑÑаÑÑÑÑ Ð¿ÑÑÑÑм, запÑÑкаÑÑÑÑ Ð²Ñе клеÑки, опÑеделÑннÑе в ÑÐ°Ð¹Ð»Ð°Ñ ÐºÐ¾Ð½ÑигÑÑаÑии. + +ЧÑÐ¾Ð±Ñ Ð¾ÑÑановиÑÑ ÐºÐ»ÐµÑки в обÑаÑном поÑÑдке Ð¸Ñ `jail_list` пÑи завеÑÑении ÑабоÑÑ, ÑÑÑановиÑе `jail_reverse_stop`: + +[source, shell] +.... +# sysrc jail_reverse_stop="YES" +.... + +[NOTE] +==== +С вклÑÑÑннÑм `jail_parallel_start` клеÑки запÑÑкаÑÑÑÑ Ð² Ñоновом Ñежиме, и поÑÑдок `jail_list` болÑÑе не гаÑанÑиÑÑеÑÑÑ. Ðогда одна клеÑка должна ÑабоÑаÑÑ Ð´Ð¾ запÑÑка дÑÑгой, вÑÑазиÑе ÑÑÑ Ð·Ð°Ð²Ð¸ÑимоÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿Ð°ÑамеÑÑа `depend` в [.filename]#/etc/jail.conf# вмеÑÑо Ñого, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð»Ð°Ð³Ð°ÑÑÑÑ Ð½Ð° поÑÑдок ÑпиÑка. ÐавиÑимоÑÑи клеÑки ÑоздаÑÑÑÑ Ð°Ð²ÑомаÑиÑеÑки до ÐµÑ Ð·Ð°Ð¿ÑÑка и оÑÑанавливаÑÑÑÑ Ð² обÑаÑном поÑÑдке, незавиÑимо Ð¾Ñ `jail_list`. ÐаÑамеÑÑ `depend` опиÑан в Ñазделе crossref:jails[jail-config uration-files,Ð¤Ð°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии клеÑок]. +==== + [[jails-networking]] === СеÑевое взаимодейÑÑвие СеÑÑ Ð´Ð»Ñ ÐºÐ»ÐµÑок FreeBSD Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ð°ÑÑÑоена неÑколÑкими ÑазлиÑнÑми ÑпоÑобами: Режим ÑеÑевого взаимодейÑÑÐ²Ð¸Ñ Ñ Ð¾ÑÑа (Ñазделение IP):: -Ð Ñежиме ÑеÑевого взаимодейÑÑÐ²Ð¸Ñ Ñ Ð¾ÑÑа (host networking) клеÑка иÑполÑзÑÐµÑ ÑÐ¾Ñ Ð¶Ðµ ÑеÑевой ÑÑек, ÑÑо и Ñ Ð¾ÑÑ-ÑиÑÑема. ÐÑи Ñоздании клеÑки в ÑÑом Ñежиме она иÑполÑзÑÐµÑ ÑÐ¾Ñ Ð¶Ðµ ÑеÑевой инÑеÑÑÐµÐ¹Ñ Ð¸ IP-адÑеÑ. ÐÑо ознаÑаеÑ, ÑÑо клеÑка не Ð¸Ð¼ÐµÐµÑ Ð¾ÑделÑного IP-адÑеÑа, и его ÑеÑевой ÑÑаÑик аÑÑоÑииÑÑеÑÑÑ Ñ IP-адÑеÑом Ñ Ð¾ÑÑа. +Ð Ñежиме ÑеÑевого доÑÑÑпа Ñ Ð¾ÑÑа клеÑка иÑполÑзÑÐµÑ ÑеÑевой ÑÑек Ñ Ð¾ÑÑ-ÑиÑÑемÑ, а не полÑÑÐ°ÐµÑ ÑобÑÑвеннÑй. СовмеÑÑное иÑполÑзование ÑÑека не ознаÑÐ°ÐµÑ ÑовмеÑÑное иÑполÑзование адÑеÑа: ÑаÑпÑоÑÑÑанÑÐ½Ð½Ð°Ñ Ð½Ð°ÑÑÑойка пÑедоÑÑавлÑÐµÑ ÐºÐ»ÐµÑке ÑобÑÑвеннÑй вÑделеннÑй `ip4.addr` (и `ip6.addr`), коÑоÑÑй man:jail[8] добавлÑÐµÑ ÐºÐ°Ðº пÑевдоним на инÑеÑÑейÑе Ñ Ð¾ÑÑ-ÑиÑÑемÑ, поÑÑÐ¾Ð¼Ñ ÐºÐ»ÐµÑка и Ñ Ð¾ÑÑ-ÑиÑÑема оÑвеÑаÑÑ Ð½Ð° ÑазнÑÑ Ð°Ð´ÑеÑÐ°Ñ ÑеÑез один и ÑÐ¾Ñ Ð¶Ðµ ÑÑек. ТолÑко клеÑка, Ð ½Ð°ÑÑÑÐ¾ÐµÐ½Ð½Ð°Ñ Ñ `ip4 = inherit`, полноÑÑÑÑ Ð²Ð¸Ð´Ð¸Ñ Ð¸ Ð¼Ð¾Ð¶ÐµÑ Ð¿Ð¾Ð»ÑзоваÑÑÑÑ Ð°Ð´ÑеÑами Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ Ð¸ оÑвеÑÐ°ÐµÑ Ð½Ð° ÑобÑÑв енном адÑеÑе Ñ Ð¾ÑÑ-ÑиÑÑемÑ, полÑÑÐ°Ñ Ð½ÐµÐ¾Ð³ÑаниÑеннÑй доÑÑÑп ко вÑем адÑеÑам, коÑоÑÑми Ð²Ð»Ð°Ð´ÐµÐµÑ Ñ Ð¾ÑÑ-ÑиÑÑема. ÐиÑÑÑалÑнÑе ÑеÑи (VNET):: ÐиÑÑÑалÑнÑе ÑеÑи (VNET) â ÑÑо ÑÑнкÑÐ¸Ñ ÐºÐ»ÐµÑок FreeBSD, пÑедоÑÑавлÑÑÑÐ°Ñ Ð±Ð¾Ð»ÐµÐµ пÑодвинÑÑÑе и гибкие ÑеÑевÑе ÑеÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ Ð±Ð°Ð·Ð¾Ð²Ñми Ñежимами, Ñакими как Ñежим ÑеÑевого взаимодейÑÑÐ²Ð¸Ñ Ñ Ð¾ÑÑа (host networking). VNET позволÑÐµÑ ÑоздаваÑÑ Ð¸Ð·Ð¾Ð»Ð¸ÑованнÑе ÑеÑевÑе ÑÑеки Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ клеÑки, пÑедоÑÑавлÑÑ Ð¸Ð¼ оÑделÑнÑе IP-адÑеÑа, ÑаблиÑÑ Ð¼Ð°ÑÑÑÑÑизаÑии и ÑеÑевÑе инÑеÑÑейÑÑ. ÐÑо обеÑпеÑÐ¸Ð²Ð°ÐµÑ Ð±Ð¾Ð»ÐµÐµ вÑÑокий ÑÑÐ¾Ð²ÐµÐ½Ñ ÑеÑевой изолÑÑии и позволÑÐµÑ ÐºÐ»ÐµÑкам ÑÑнкÑи ониÑоваÑÑ Ñак, как еÑли Ð±Ñ Ð¾Ð½Ð¸ ÑабоÑали на оÑделÑнÑÑ Ð²Ð¸ÑÑÑалÑнÑÑ Ð¼Ð°ÑÐ¸Ð½Ð°Ñ . @@ -193,6 +218,65 @@ endif::[] СиÑÑема netgraph:: man:netgraph[4] â ÑÑо ÑнивеÑÑалÑÐ½Ð°Ñ Ð¸Ð½ÑÑаÑÑÑÑкÑÑÑа ÑдÑа Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелÑÑÐºÐ¸Ñ ÑеÑевÑÑ ÐºÐ¾Ð½ÑигÑÑаÑий. Ðна Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ Ð´Ð»Ñ Ð¾Ð¿ÑÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñого, как ÑеÑевой ÑÑаÑик пеÑедаÑÑÑÑ Ð¼ÐµÐ¶Ð´Ñ ÐºÐ»ÐµÑкой и Ñ Ð¾ÑÑ-ÑиÑÑемой, а Ñакже Ð¼ÐµÐ¶Ð´Ñ ÑазлиÑнÑми клеÑками. +[[jail-ip-comes-from]] +==== ÐÑкÑда беÑеÑÑÑ IP-адÑÐµÑ ÐºÐ»ÐµÑки + +ÐлеÑка Ñ Ð¾Ð±Ñим ÑÑеком полÑÑÐ°ÐµÑ Ð´Ð¾ÑÑÑп к ÑеÑи ÑеÑез адÑÐµÑ Ð½Ð° инÑеÑÑейÑе Ñ Ð¾ÑÑа. РпаÑамеÑÑе `interface` ÑказÑваеÑÑÑ Ð¸Ð¼Ñ ÑÑого инÑеÑÑейÑа, и Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ адÑеÑа в `ip4.addr` и `ip6.addr` man:jail[8] Ñам ÑпÑавлÑÐµÑ Ð¿Ñевдонимом: как вÑÑажаеÑÑÑ jail(8), «пÑевдоним Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ адÑеÑа бÑÐ´ÐµÑ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½ к инÑеÑÑейÑÑ Ð´Ð¾ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ»ÐµÑки и бÑÐ´ÐµÑ ÑдалÑн из инÑеÑÑейÑа поÑле ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ ÐºÐ»ÐµÑки». ÐиÑÑо на Ñ Ð¾ÑÑ-ÑиÑÑеме не обÑзано пÑедваÑиÑелÑно наÑÑÑаиваÑÑ Ð°Ð´ÑеÑ. + +ÐнÑеÑÑÐµÐ¹Ñ Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñказан Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ адÑеÑа, Ñак ÑÑо одна ÑÑÑока ÑвÑзÑÐ²Ð°ÐµÑ Ð°Ð´ÑÐµÑ Ñ Ð¸Ð½ÑеÑÑейÑом, коÑоÑÑй должен ÑÑÐ¾Ñ Ð°Ð´ÑÐµÑ Ð¸ÑполÑзоваÑÑ: + +[.programlisting] +.... +ip4.addr = "em0|192.168.1.151/24"; +.... + +Ðогда адÑÐµÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ ÑÐ¾Ñ ÑанÑÑÑÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимо Ð¾Ñ ÐºÐ»ÐµÑки â поÑÐ¾Ð¼Ñ ÑÑо дÑÑÐ³Ð°Ñ ÑлÑжба на Ñ Ð¾ÑÑ-ÑиÑÑеме полагаеÑÑÑ Ð½Ð° него, или поÑÐ¾Ð¼Ñ ÑÑо паÑамеÑÑ `interface` не иÑполÑзÑеÑÑÑ â назнаÑÑÑе его на Ñ Ð¾ÑÑ-ÑиÑÑеме как пÑевдоним rc.conf и иÑклÑÑиÑе его из ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ jail(8): + +[source, shell] +.... +# sysrc ifconfig_em0_aliases="inet 192.168.1.151/32" +.... + +Ðолее ÑÑаÑаÑ, нÑмеÑÐ¾Ð²Ð°Ð½Ð½Ð°Ñ ÑоÑма `ifconfig_em0_alias0="inet 192.168.1.151/32"` по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ ÑабоÑаеÑ, но ÑоÑма `_aliases` пÑедпоÑÑиÑелÑнее Ð´Ð»Ñ Ð½Ð¾Ð²ÑÑ ÐºÐ¾Ð½ÑигÑÑаÑий, поÑколÑÐºÑ Ð¾Ð½Ð° позволÑÐµÑ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ñ ÑÑпкого ÑÑебованиÑ, ÑÑÐ¾Ð±Ñ Ð½ÑмеÑованнÑе пÑÐµÐ²Ð´Ð¾Ð½Ð¸Ð¼Ñ Ð¾Ð±ÑазовÑвали непÑеÑÑвнÑÑ Ð¿Ð¾ÑледоваÑелÑноÑÑÑ `alias0`, `alias1`, `alias2`. + +[[loopback-addresses-shared-ip-Jails]] +==== ÐдÑеÑа loopback в клеÑÐºÐ°Ñ Ñ Ð¾Ð±Ñей IP-адÑеÑаÑией + +ÐлеÑка Ñ Ð¾Ð±Ñим ÑÑеком не Ð¸Ð¼ÐµÐµÑ ÑобÑÑвенного инÑеÑÑейÑа loopback. ЯдÑо FreeBSD компенÑиÑÑÐµÑ ÑÑо: в клеÑке без VNET, когда `127.0.0.1` или `::1` Ñами по Ñебе не ÑвлÑÑÑÑÑ Ð°Ð´ÑеÑами клеÑки, ÑдÑо молÑа пеÑепиÑÑÐ²Ð°ÐµÑ ÐºÐ°Ðº `bind()`, Ñак и `connect()` на адÑÐµÑ loopback на пеÑвÑй `ip4.addr` или `ip6.addr` клеÑки. ÐÑо поведение не докÑменÑиÑовано в man:jail[8], но оно важно, поÑколÑÐºÑ Ð½ÐµÑÐµÑ Ð¿Ð¾ÑледÑÑÐ²Ð¸Ñ Ð´Ð»Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи. + +[WARNING] +==== +Ðе пÑедполагайÑе, ÑÑо пÑивÑзка ÑлÑÐ¶Ð±Ñ Ðº `localhost` огÑаниÑÐ¸Ð²Ð°ÐµÑ ÐµÑ ÐºÐ»ÐµÑкой. РклеÑке Ñ Ð¾Ð±Ñим IP-адÑеÑом демон, коÑоÑÐ¾Ð¼Ñ Ñказано пÑоÑлÑÑиваÑÑ `127.0.0.1`, на Ñамом деле пÑивÑзÑваеÑÑÑ Ðº пеÑÐ²Ð¾Ð¼Ñ Ð°Ð´ÑеÑÑ ÐºÐ»ÐµÑки, коÑоÑÑй ÑаÑÑо обÑаÑÑн к локалÑной ÑеÑи, и поÑÑÐ¾Ð¼Ñ ÑÑановиÑÑÑ Ð´Ð¾ÑÑÑпнÑм из ÑеÑи. +==== + +СÑандаÑÑнÑм ÑÑедÑÑвом ÑмÑгÑÐµÐ½Ð¸Ñ ÑвлÑеÑÑÑ Ð¿ÑедоÑÑавление клеÑке ÑаÑÑного адÑеÑа loopback и Ñказание его пеÑвÑм. ÐлониÑÑйÑе вÑделеннÑй инÑеÑÑÐµÐ¹Ñ loopback на Ñ Ð¾ÑÑе и назнаÑÑÑе ÐµÐ¼Ñ Ð°Ð´ÑÐµÑ Ð¸Ð· диапазона `127.0.0.0/8` (или ÑаÑÑнÑй адÑÐµÑ RFC 1918): + +[source, shell] +.... +# sysrc cloned_interfaces="lo1" +# sysrc ifconfig_lo1="inet 127.0.1.1/32" +.... + +ÐаÑем ÑкажиÑе ÑÑÐ¾Ñ Ð°Ð´ÑÐµÑ Ð¿ÐµÑвÑм в `ip4.addr` клеÑки, пеÑед лÑбÑм маÑÑÑÑÑизиÑÑемÑм адÑеÑом, ÑÑÐ¾Ð±Ñ Ð¿ÐµÑеопÑеделение loopback попадало на ÑаÑÑнÑй адÑеÑ, а не на адÑеÑ, обÑаÑÑннÑй к локалÑной ÑеÑи. + +[[preparing-host-services]] +==== ÐодгоÑовка ÑеÑвиÑов Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ + +ÐаждÑй пÑевдоним адÑеÑа клеÑки ÑазделÑÐµÑ Ð¿Ð¾ÑÑÑ Ñ Ð¾ÑÑ-ÑиÑÑемÑ. Ðемон Ñ Ð¾ÑÑ-ÑиÑÑемÑ, пÑивÑзаннÑй к адÑеÑÑ Ñ Ð¿Ð¾Ð´ÑÑановоÑнÑм знаком â Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ð½Ð¾Ð¼Ñ ÐºÐ°Ðº `*:port` в ÑпиÑÐºÐ°Ñ Ð¿ÑоÑлÑÑиваÑелей â поÑÑÐ¾Ð¼Ñ Ñакже пÑоÑлÑÑÐ¸Ð²Ð°ÐµÑ ÐºÐ°Ð¶Ð´Ñй пÑевдоним клеÑки, и он Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ ÑÑÐ¾Ñ Ð¿Ð¾ÑÑ Ð¿Ñежде, Ñем ÑобÑÑÐ²ÐµÐ½Ð½Ð°Ñ ÑлÑжба клеÑки ÑÐ¼Ð¾Ð¶ÐµÑ ÐµÐ³Ð¾ заÑвиÑÑ. ÐеÑед запÑÑком лÑбÑÑ ÐºÐ»ÐµÑок пÑовеÑÑÑе, ÑÑо Ñ Ð¾ÑÑ-ÑиÑÑема Ñже пÑоÑлÑÑиваеÑ: + +[source, shell] +.... +# sockstat -4 -6 -l +.... + +ÐгÑаниÑÑÑе каждÑй демон, коÑоÑÑй пÑивÑзÑваеÑÑÑ Ðº адÑеÑÑ-ÑаблонÑ, ÑÑÐ¾Ð±Ñ Ð¾Ð½ иÑполÑзовал ÑолÑко ÑобÑÑвеннÑй адÑÐµÑ Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ Ð¸ оÑÑавлÑл адÑеÑа клеÑок ÑвободнÑми: + +* man:syslogd[8]: задайÑе `syslogd_flags="-ss"` в [.filename]#/etc/rc.conf#. ÐдинаÑнÑй `-s` Ñже запÑÑÐºÐ°ÐµÑ syslogd в безопаÑном Ñежиме, ÑÑÐ¾Ð±Ñ Ð¾Ð½ не пÑоÑлÑÑивал ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ñ ÑдаленнÑÑ Ñ Ð¾ÑÑов Ð´Ð»Ñ Ð¾ÑпÑавки ÑообÑений жÑÑнала; ÑоглаÑно syslogd(8), еÑли `-s` "Ñказан дваждÑ, ÑеÑевой ÑÐ¾ÐºÐµÑ Ð²Ð¾Ð¾Ð±Ñе не бÑÐ´ÐµÑ Ð¾ÑкÑÑÑ", ÑÑо Ñакже пÑедоÑвÑаÑÐ°ÐµÑ Ð¾ÑпÑÐ°Ð²ÐºÑ syslogd на ÑдаленнÑе Ñ Ð¾ÑÑÑ. +* man:sshd[8]: закÑепиÑе `ListenAddress` на адÑеÑе Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ Ð² Ñайле [.filename]#/etc/ssh/sshd_config# вмеÑÑо Ñого, ÑÑÐ¾Ð±Ñ Ð¾ÑÑавлÑÑÑ ÐµÐ³Ð¾ Ñ Ð¿Ð¾Ð´ÑÑановоÑнÑм знаком(wildcard) по ÑмолÑаниÑ. +* man:ntpd[8] и man:sendmail[8]: пÑивÑжиÑе Ð¸Ñ Ðº адÑеÑÑ Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ Ñакже ÑеÑез Ð¸Ñ ÑобÑÑвеннÑÑ ÐºÐ¾Ð½ÑигÑÑаÑиÑ. + +ÐÐ»Ñ ÐºÐ¾Ð½ÑÑÐ¾Ð»Ñ Ð½Ð° ÑÑовне межÑеÑевого ÑкÑана за Ñем, какие адÑеÑа Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑ ÐºÐ»ÐµÑка, Ñм. crossref:firewalls[firewalls,ÐежÑеÑевÑе ÑкÑанÑ]. + [[host-configuration-directories]] === ÐаÑÑÑойка деÑева каÑалогов клеÑки @@ -221,6 +305,8 @@ man:netgraph[4] â ÑÑо ÑнивеÑÑалÑÐ½Ð°Ñ Ð¸Ð½ÑÑаÑÑÑÑкÑÑÑ Ð Ð´Ð°Ð½Ð½Ð¾Ð¼ ÑлÑÑае Ð´Ð»Ñ ÑодиÑелÑÑкого набоÑа даннÑÑ Ð¸ÑполÑзовалÑÑ `zroot`, но могли бÑÑÑ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ñ Ð¸ дÑÑгие набоÑÑ Ð´Ð°Ð½Ð½ÑÑ . ==== +Создание оÑделÑного доÑеÑнего набоÑа даннÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ клеÑки в далÑнейÑем позволÑÐµÑ Ð´ÐµÐ»Ð°ÑÑ Ñнимки, клонÑ, квоÑÑ Ð¸ делегиÑование набоÑов даннÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ клеÑки. ÐоÑколÑÐºÑ ÐºÐ°Ñалог каждой клеÑки заÑем ÑÑановиÑÑÑ ÑобÑÑвеннÑм набоÑом даннÑÑ , OpenZFS Ð¼Ð¾Ð¶ÐµÑ ÐºÐ°Ðº огÑаниÑиваÑÑ, Ñак и гаÑанÑиÑоваÑÑ Ð¸ÑполÑзование ÐµÑ Ð´Ð¸Ñкового пÑоÑÑÑанÑÑва Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑвойÑÑв `quota` и `reservation`; Ñм. crossref:jails[jail-resource-limits,ÐгÑаниÑÐµÐ½Ð¸Ñ ÑеÑÑÑÑов клеÑки]. + ÐÑи иÑполÑзовании UFS вÑполниÑе ÑледÑÑÑие ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ°Ñалогов: [source, shell] @@ -268,7 +354,7 @@ jailname { <.> # NETWORK ip4.addr = 192.168.1.151; <.> - ip6.addr = ::ffff:c0a8:197 <.> + ip6.addr = "2001:db8::151"; <.> interface = em0; <.> } .... @@ -279,13 +365,116 @@ jailname { <.> <.> `exec.consolelog` â Ñайл Ð´Ð»Ñ Ð²Ñвода ÑезÑлÑÑаÑов вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ (stdout и stderr). <.> `allow.raw_sockets` â ÑазÑеÑÐ°ÐµÑ Ñоздание raw-ÑокеÑов внÑÑÑи клеÑки. УÑÑановка ÑÑого паÑамеÑÑа позволÑÐµÑ Ð¸ÑполÑзоваÑÑ Ñакие ÑÑилиÑÑ, как man:ping[8] и man:traceroute[8], внÑÑÑи клеÑки. <.> `exec.clean` â вÑполнение команд в ÑиÑÑом окÑÑжении. -<.> `mount.devfs` â подклÑÑÐ°ÐµÑ ÑайловÑÑ ÑиÑÑÐµÐ¼Ñ man:devfs[5] в каÑалоге [.filename]#/dev# внÑÑÑи chroot и пÑименÑÐµÑ Ð½Ð°Ð±Ð¾Ñ Ð¿Ñавил из паÑамеÑÑа devfs_ruleset, ÑÑÐ¾Ð±Ñ Ð¾Ð³ÑаниÑиÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ð¾ÑÑÑ ÑÑÑÑойÑÑв внÑÑÑи клеÑки. +<.> `mount.devfs` - монÑиÑование Ñайловой ÑиÑÑÐµÐ¼Ñ man:devfs[5] в каÑалог [.filename]#/dev# внÑÑÑи chroot, ÑÑÐ¾Ð±Ñ Ð¾Ð³ÑаниÑиÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ñе в клеÑке ÑÑÑÑойÑÑва. ÐÑименÑеÑÑÑ Ð½Ð°Ð±Ð¾Ñ Ð¿Ñавил, заданнÑй паÑамеÑÑом `devfs_ruleset`, или, когда ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð¾ÑÑавлен по ÑмолÑÐ°Ð½Ð¸Ñ ÑавнÑм `0`, иÑполÑзÑеÑÑÑ Ð·Ð°Ð¿Ð°Ñной ваÑÐ¸Ð°Ð½Ñ `mount.devfs` Ñ Ð½Ð°Ð±Ð¾Ñом пÑавил 4, `devfsrules_jail`, коÑоÑÑй ÑкÑÑÐ²Ð°ÐµÑ Ð²Ñе ÑÑÑÑойÑÑва Ñ Ð¾ÑÑа, кÑоме минималÑного набоÑа, безопаÑного Ð´Ð»Ñ ÐºÐ»ÐµÑки (Ñм. crossref:jails[jail-conf-devfs, Devfs Rulesets]). <.> `host.hostname` â Ð¸Ð¼Ñ Ñ Ð¾ÑÑа Ð´Ð»Ñ ÐºÐ»ÐµÑки. <.> `path` â каÑалог, коÑоÑÑй бÑÐ´ÐµÑ ÐºÐ¾ÑневÑм Ð´Ð»Ñ ÐºÐ»ÐµÑки. ÐÑбÑе командÑ, вÑполнÑемÑе внÑÑÑи клеÑки, либо Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `jail`, либо ÑеÑез man:jexec[8], запÑÑкаÑÑÑÑ Ð¸Ð· ÑÑого каÑалога. -<.> `ip4.addr` â IPv4-адÑеÑ. СÑÑеÑÑвÑÐµÑ Ð´Ð²Ð° ваÑианÑа наÑÑÑойки IPv4. ÐеÑвÑй â ÑказаÑÑ IP-адÑÐµÑ Ð¸Ð»Ð¸ ÑпиÑок IP-адÑеÑов, как показано в пÑимеÑе. ÐÑоÑой â иÑполÑзоваÑÑ Ð¿Ð°ÑамеÑÑ `ip4` Ñо знаÑением `inherit`, ÑÑÐ¾Ð±Ñ ÑнаÑледоваÑÑ IP-адÑÐµÑ Ñ Ð¾ÑÑа. -<.> `ip6.addr` â IPv6-адÑеÑ. СÑÑеÑÑвÑÐµÑ Ð´Ð²Ð° ваÑианÑа наÑÑÑойки Ð´Ð»Ñ IPv6. ÐеÑвÑй â ÑказаÑÑ IP или ÑпиÑок IP, как ÑÑо Ñделано в пÑимеÑе. ÐÑоÑой â иÑполÑзоваÑÑ `ip6` и ÑÑÑановиÑÑ Ð·Ð½Ð°Ñение `inherit` Ð´Ð»Ñ Ð½Ð°ÑÐ»ÐµÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ IP-адÑеÑа Ñ Ð¾ÑÑа. +<.> `ip4.addr` - Ðдин IPv4-адÑÐµÑ Ð¸Ð»Ð¸ ÑазделÑннÑй запÑÑÑми ÑпиÑок адÑеÑов, назнаÑеннÑÑ ÐºÐ»ÐµÑке. УÑÑановка `ip4.addr` подÑазÑÐ¼ÐµÐ²Ð°ÐµÑ `ip4 = new`; Ñам паÑамеÑÑ `ip4` не Ð¸Ð¼ÐµÐµÑ Ð·Ð½Ð°ÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ (еÑли он не Ñказан, Ñо его знаÑение завиÑÐ¸Ñ Ð¾Ñ Ð·Ð½Ð°Ñений дÑÑÐ³Ð¸Ñ Ð¿Ð°ÑамеÑÑов). ÐаÑамеÑÑ `ip4` пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑÑи знаÑениÑ: `new` огÑаниÑÐ¸Ð²Ð°ÐµÑ ÐºÐ»ÐµÑÐºÑ Ð°Ð´ÑеÑами, пеÑеÑиÑленнÑми в `ip4.addr`, `inherit` пÑедоÑÑавлÑÐµÑ ÐºÐ»ÐµÑке неогÑаниÑеннÑй доÑÑÑп ко вÑем IPv4-адÑеÑам Ñ Ð¾ÑÑа, а `disable` полноÑÑÑÑ Ð¾Ñкл ÑÑÐ°ÐµÑ IPv4 в клеÑке. ÐлеÑка, в коÑоÑой не Ð·Ð°Ð´Ð°Ð½Ñ Ð½Ð¸ `ip4`, ни `ip4.addr`, ведÑÑ ÑÐµÐ±Ñ ÐºÐ°Ðº пÑи `inherit`, и паÑамеÑÑÑ `interface ` и `ip4.addr` не дейÑÑвÑÑÑ Ð¿Ñи `inherit`. РклеÑке Ñ Ð½ÐµÑколÑкими адÑеÑами `ip4.saddrsel` позволÑÐµÑ ÑдÑÑ Ð²ÑбиÑаÑÑ Ð¸ÑÑ Ð¾Ð´Ð½Ñй адÑÐµÑ Ð´Ð»Ñ Ð¸ÑÑ Ð¾Ð´ÑÑÐ¸Ñ Ñоединений на неÑвÑзаннÑÑ ÑокеÑÐ°Ñ , Ñогда как `ip4.nosaddrsel` пÑинÑдиÑелÑно иÑполÑзÑÐµÑ Ð¿ÐµÑвÑй адÑÐµÑ Ð¸Ð· ÑпиÑка. +<.> `ip6.addr` - Ðдин IPv6-адÑÐµÑ Ð¸Ð»Ð¸ ÑазделеннÑй запÑÑÑми ÑпиÑок адÑеÑов, назнаÑеннÑÑ ÐºÐ»ÐµÑке. ÐаÑамеÑÑ `ip6` пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ Ñе же знаÑÐµÐ½Ð¸Ñ `new`, `inherit` и `disable`, ÑÑо и `ip4`, пÑи ÑÑом `ip6.saddrsel` и `ip6.nosaddrsel` ÑпÑавлÑÑÑ Ð²ÑбоÑом адÑеÑа иÑÑоÑника. ÐÑполÑзÑйÑе `ip6 = disable` Ð´Ð»Ñ ÐºÐ»ÐµÑки ÑолÑко Ñ IPv4 или `ip4 = disable` Ð´Ð»Ñ ÐºÐ»ÐµÑки ÑолÑко Ñ IPv6. <.> `interface` â СеÑевой инÑеÑÑÐµÐ¹Ñ Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ IP-адÑеÑов клеÑки. ÐбÑÑно ÑÑо инÑеÑÑÐµÐ¹Ñ Ñ Ð¾ÑÑа. +[NOTE] +==== +ÐлеÑка не Ð¸Ð¼ÐµÐµÑ Ð²Ð¸ÑÑÑалÑной конÑоли: man:init[8] и man:getty[8] не запÑÑкаÑÑÑÑ Ð²Ð½ÑÑÑи неÑ, поÑÑÐ¾Ð¼Ñ Ð½Ðµ к ÑÐµÐ¼Ñ Ð¿Ð¾Ð´ÐºÐ»ÑÑиÑÑÑÑ Ð² инÑеÑакÑивном Ñежиме. Файл `exec.consolelog` Ð·Ð°Ñ Ð²Ð°ÑÑÐ²Ð°ÐµÑ ÑолÑко ÑÑандаÑÑнÑй вÑвод и ÑÑандаÑÑнÑй поÑок оÑибок команд `exec.*`, Ñо еÑÑÑ Ð²Ñвод ÑÑенаÑиев [.filename]#/etc/rc# запÑÑка и [.filename]#/etc/rc.shutdown# завеÑÑÐµÐ½Ð¸Ñ ÑабоÑÑ. ÐÑо не инÑеÑакÑÐ¸Ð²Ð½Ð°Ñ ÐºÐ¾Ð½ÑолÑ; Ð´Ð»Ñ ÑÑого иÑполÑзÑйÑе man:jexec[8] (Ñм. crossref:jails[access-jail, ÐоÑÑÑп к клеÑке]) или запÑÑÑиÑе man:sshd[8] внÑÑÑи клеÑÐ ºÐ¸. СобÑÑвеннÑе Ð´ÐµÐ¼Ð¾Ð½Ñ ÐºÐ»ÐµÑки оÑпÑавлÑÑÑ Ñвой поÑледÑÑÑий вÑвод в syslog клеÑки. +==== + +[TIP] +==== +Ð¤Ð°Ð¹Ð»Ñ `exec.consolelog` ÑаÑÑÑÑ Ð±ÐµÐ· огÑаниÑений. ÐÑполнÑйÑе Ð¸Ñ ÑоÑаÑÐ¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ man:newsyslog[8], добавив Ð¾Ð´Ð½Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ñ Ð¿Ð¾Ð´ÑÑановоÑнÑм знаком (glob), напÑимеÑ, в [.filename]#/etc/newsyslog.conf.d/jail#: + +[.programlisting] +.... +/var/log/jail_console_*.log 640 7 100 * J +.... +==== + +[[global-settings-wildcards-variables]] +==== ÐлобалÑнÑе паÑамеÑÑÑ, подÑÑановоÑнÑе знаки и пеÑеменнÑе + +ÐаÑамеÑÑÑ, заданнÑе вне лÑбого блока клеÑки, ÑвлÑÑÑÑÑ Ð¿Ð¾Ð´ÑÑановоÑнÑми знаÑениÑми по ÑмолÑаниÑ: man:jail.conf[5] пÑименÑÐµÑ Ð¸Ñ Ðº каждой клеÑке, ÑоÑно Ñак же, как еÑли Ð±Ñ Ð¾Ð½Ð¸ бÑли запиÑÐ°Ð½Ñ Ð² Ñазделе подÑÑановоÑного знака `*`. УÑÑановка обÑÐ¸Ñ Ð¿Ð°ÑамеÑÑов один Ñаз Ð´ÐµÐ»Ð°ÐµÑ ÐºÐ°Ð¶Ð´Ñй блок клеÑки коÑоÑким. + +ÐмÑ, пеÑед коÑоÑÑм ÑÑÐ¾Ð¸Ñ Ð·Ð½Ð°Ðº доллаÑа и коÑоÑое, пÑи Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑи, заклÑÑено в ÑигÑÑнÑе Ñкобки, заменÑеÑÑÑ Ð·Ð½Ð°Ñением ÑÑого паÑамеÑÑа или пеÑеменной. ÐÑÑÑоенное вÑÑажение `${name}` ÑазвоÑаÑиваеÑÑÑ Ð² ÑобÑÑвенное Ð¸Ð¼Ñ ÐºÐ»ÐµÑки, а полÑзоваÑелÑÑÐºÐ°Ñ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾Ð¿ÑеделÑеÑÑÑ ÑоÑно Ñак же, как паÑамеÑÑ, но Ñ Ð²ÐµÐ´ÑÑим знаком доллаÑа. + +СледÑÑÑий [.filename]#/etc/jail.conf# опÑеделÑÐµÑ Ð¾Ð±Ñий заголовок один Ñаз и пеÑеопÑеделÑÐµÑ ÑолÑко Ñо, ÑÑо оÑлиÑаеÑÑÑ Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ клеÑки: + +[.programlisting] +.... +# Shared defaults applied to every jail +exec.start = "/bin/sh /etc/rc"; +exec.stop = "/bin/sh /etc/rc.shutdown"; +exec.consolelog = "/var/log/jail_console_${name}.log"; +exec.clean; +mount.devfs; +host.hostname = "${name}"; +path = "/usr/local/jails/containers/${name}"; +interface = em0; + +www { + ip4.addr = 192.168.1.151; +} + +db { + host.hostname = "database.example.com"; + ip4.addr = 192.168.1.152; +} +.... + +ÐдеÑÑ `www` наÑледÑÐµÑ Ð²ÑÑ Ð¸Ð· заголовка и задаÑÑ ÑолÑко Ñвой адÑеÑ, Ñогда как `db` Ñакже пеÑеопÑеделÑÐµÑ `host.hostname`. + +[[jail-conf-hooks]] +==== ÐоманднÑе Ñ Ñки + +man:jail[8] запÑÑÐºÐ°ÐµÑ ÐºÐ»ÐµÑÐºÑ ÑеÑез поÑледоваÑелÑноÑÑÑ Ð¿ÐµÑÐµÑ Ð²Ð°ÑÑиков жизненного Ñикла (Ñ Ñков), и важно, вÑполнÑеÑÑÑ Ð»Ð¸ каждÑй из Ñ Ñков в ÑÑеде Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ Ð¸Ð»Ð¸ внÑÑÑи клеÑки. РпоÑÑдке ÑозданиÑ: + +`exec.prestart`:: ÐÑполнÑеÑÑÑ Ð² ÑÑеде Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ Ð´Ð¾ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ»ÐµÑки. +`exec.created`:: ÐÑполнÑеÑÑÑ Ð² ÑÑеде Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ Ð¿Ð¾Ñле ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ»ÐµÑки, но до запÑÑка лÑбого пÑоÑеÑÑа внÑÑÑи неÑ. +`exec.start`:: ÐÑполнÑеÑÑÑ Ð²Ð½ÑÑÑи клеÑки, обÑÑно `/bin/sh /etc/rc` Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑка ÐµÑ ÑлÑжб. +`exec.poststart`:: ÐÑполнÑеÑÑÑ Ð² ÑÑеде Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ Ð¿Ð¾Ñле запÑÑка клеÑки. + +ÐÑи завеÑÑении ÑабоÑÑ Ñ Ñки вÑполнÑеÑÑÑ Ð·ÐµÑкалÑно в обÑаÑном поÑÑдке: + +`exec.prestop`:: ÐÑполнÑеÑÑÑ Ð² ÑÑеде Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ Ð´Ð¾ оÑÑановки клеÑки. +`exec.stop`:: ÐÑполнÑеÑÑÑ Ð²Ð½ÑÑÑи клеÑки, обÑÑно `/bin/sh /etc/rc.shutdown`. +`exec.poststop`:: ÐÑполнÑеÑÑÑ Ð² ÑÑеде Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ Ð¿Ð¾Ñле оÑÑановки клеÑки, ÑÑÐ¾Ð±Ñ ÑазобÑаÑÑ Ð²ÑÑ, ÑÑо бÑло наÑÑÑоено Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `exec.prestart`. + +Ð¥ÑÐºÑ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ð°Ð·Ð½Ð°Ñено более одной ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¿ÑÑÑм Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `+=`: + +[.programlisting] +.... +exec.poststart += "logger jail ${name} started"; +.... + +`exec.timeout` огÑаниÑÐ¸Ð²Ð°ÐµÑ Ð²ÑемÑ, в ÑеÑение коÑоÑого man:jail[8] Ð¾Ð¶Ð¸Ð´Ð°ÐµÑ Ð·Ð°Ð²ÐµÑÑÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, а `exec.consolelog` Ð·Ð°Ñ Ð²Ð°ÑÑÐ²Ð°ÐµÑ Ð²Ñвод ÑÑÐ¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´. Ð Ñазделе VNET (crossref:jails[creating-vnet-jail, VNET Jails]) иÑполÑзÑÑÑÑÑ `exec.prestart` и `exec.poststop` Ð´Ð»Ñ Ð½Ð°ÑÑÑойки и демонÑажа ÑеÑевой инÑÑаÑÑÑÑкÑÑÑÑ ÐºÐ°Ð¶Ð´Ð¾Ð¹ клеÑки на Ñ Ð¾ÑÑе. + +Тогда как Ñ Ñки ÑпоÑÑдоÑиваÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð²Ð½ÑÑÑи одной клеÑки, паÑамеÑÑ `depend` ÑпоÑÑдоÑÐ¸Ð²Ð°ÐµÑ Ð·Ð°Ð¿ÑÑк ÑелÑÑ ÐºÐ»ÐµÑок. ÐапиÑÑ `depend = otherjail;` ÑообÑÐ°ÐµÑ man:jail[8], ÑÑо ÑÑа клеÑка ÑÑебÑÐµÑ `otherjail`: завиÑимоÑÑÑ ÑоздаÑÑÑÑ Ð¿ÐµÑвой, до завеÑÑÐµÐ½Ð¸Ñ ÐµÑ Ð¿Ð¾Ñледней ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ `exec.poststart`, пÑежде Ñем бÑÐ´ÐµÑ Ñоздана ÑÑа клеÑка, и клеÑки ÑниÑÑожаÑÑÑÑ Ð² обÑаÑном поÑÑдке. + +[[jail-conf-devfs]] +==== ÐабоÑÑ Ð¿Ñавил Devfs + +ÐÐ°Ð¶Ð´Ð°Ñ ÐºÐ»ÐµÑка, коÑоÑÐ°Ñ ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ `mount.devfs`, полÑÑÐ°ÐµÑ Ð½Ð°Ð±Ð¾Ñ Ð¿Ñавил devfs, опÑеделÑÑÑий, какие ÑÐ·Ð»Ñ ÑÑÑÑойÑÑв поÑвлÑÑÑÑÑ Ð² ÐµÑ [.filename]#/dev#: либо ÑоÑ, коÑоÑÑй задан паÑамеÑÑом `devfs_ruleset`, либо, когда ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð½Ðµ ÑÑÑановлен, знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ `mount.devfs` â Ð½Ð°Ð±Ð¾Ñ Ð¿Ñавил 4. man:devfs.rules[5] опÑеделÑÐµÑ Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð½Ñе набоÑÑ Ð¿Ñавил в [.filename]#/etc/defaults/devfs.rules#. Ðва из Ð½Ð¸Ñ Ð¿ÑедназнаÑÐµÐ½Ñ Ð´Ð»Ñ ÐºÐ»ÐµÑок: `devfsrules_jail`, Ð½Ð°Ð±Ð¾Ñ Ð¿Ñавил 4, ÑвлÑеÑÑÑ ÑÑандаÑÑнÑм минималÑнÑÐ ¼ набоÑом ÑÑÑÑойÑÑв Ð´Ð»Ñ ÐºÐ»ÐµÑки, а `devfsrules_jail_vnet`, Ð½Ð°Ð±Ð¾Ñ Ð¿Ñавил 5, добавлÑÐµÑ [.filename]#/dev/pf#, ÑÑÐ¾Ð±Ñ ÐºÐ»ÐµÑка VNET могл а запÑÑкаÑÑ ÑобÑÑвеннÑй межÑеÑевой ÑкÑан. ÐÑимеÑÑ ÐºÐ»ÐµÑок VNET ÑÑÑанавливаÑÑ `devfs_ruleset = 5`, а пÑÐ¸Ð¼ÐµÑ ÐºÐ»ÐµÑки Linux ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ `devfs_ruleset = 4`; пÑимеÑÑ ÐºÐ»Ð°ÑÑиÑеÑкой и Ñонкой клеÑок ÑÑÑанавливаÑÑ ÑолÑко `mount.devfs` и поÑÑÐ¾Ð¼Ñ Ð¸ÑполÑзÑÑÑ ÐµÐ³Ð¾ знаÑение по ÑмолÑÐ°Ð½Ð¸Ñ â Ð½Ð°Ð±Ð¾Ñ Ð¿Ñавил 4. + +ЧÑÐ¾Ð±Ñ Ð¾ÑкÑÑÑÑ Ð´Ð¾ÑÑÑп к дополниÑелÑÐ½Ð¾Ð¼Ñ ÑÑÑÑойÑÑвÑ, напиÑиÑе полÑзоваÑелÑÑкий Ð½Ð°Ð±Ð¾Ñ Ð¿Ñавил в [.filename]#/etc/devfs.rules#, коÑоÑÑй вклÑÑÐ°ÐµÑ Ð¾Ð´Ð¸Ð½ из ÑÑандаÑÑнÑÑ Ð½Ð°Ð±Ð¾Ñов пÑавил и показÑÐ²Ð°ÐµÑ Ñо, ÑÑо ÐµÐ¼Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾. СледÑÑÑий Ð½Ð°Ð±Ð¾Ñ Ð¿Ñавил наÑинаеÑÑÑ Ñ `devfsrules_jail` и дополниÑелÑно показÑÐ²Ð°ÐµÑ ÑÑÑÑойÑÑва man:bpf[4]: + +[.programlisting] +.... +[devfsrules_jail_bpf=100] +add include $devfsrules_jail +add path 'bpf*' unhide +.... + +ÐеÑезагÑÑзиÑе пÑавила, заÑем ÑкажиÑе новÑй Ð½Ð°Ð±Ð¾Ñ Ð¿Ñавил по его номеÑÑ Ð² конÑигÑÑаÑии клеÑки: + +[source, shell] +.... +# service devfs restart +.... + +[.programlisting] +.... +devfs_ruleset = 100; +.... + +ÐÑавила в [.filename]#/etc/devfs.rules# пеÑеопÑеделÑÑÑ Ð¿Ñавила Ñ Ñеми же номеÑами в [.filename]#/etc/defaults/devfs.rules#; в оÑÑалÑнÑÑ ÑлÑÑаÑÑ ÑÑÑÐµÐºÑ Ð´Ð²ÑÑ Ñайлов ÑакÑиÑеÑки обÑединÑеÑÑÑ. + ÐополниÑелÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ пеÑеменнÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии можно найÑи в man:jail[8] и man:jail.conf[5]. [[classic-jail]] @@ -304,7 +493,7 @@ jailname { <.> [source, shell, subs=attributes] .... -# fetch https://download.freebsd.org/ftp/releases/amd64/amd64/{rel-latest}-RELEASE/base.txz -o /usr/local/jails/media/{rel-latest}-RELEASE-base.txz +# fetch https://download.freebsd.org/releases/amd64/amd64/{rel-latest}-RELEASE/base.txz -o /usr/local/jails/media/{rel-latest}-RELEASE-base.txz .... ÐоÑле завеÑÑÐµÐ½Ð¸Ñ Ð·Ð°Ð³ÑÑзки Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ извлеÑÑ ÑодеÑжимое в каÑалог клеÑки. @@ -368,6 +557,101 @@ classic { ÐополниÑелÑÐ½Ð°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾Ð± ÑпÑавлении клеÑками пÑиведена в Ñазделе crossref:jails[jail-management,УпÑавление клеÑками]. +[[creating-jail-userland]] +=== ÐолÑÑение полÑзоваÑелÑÑкого окÑÑÐ¶ÐµÐ½Ð¸Ñ ÐºÐ»ÐµÑки + +ÐÑоÑедÑÑа fetch-and-extract, Ð¿Ð¾ÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð²ÑÑе, ÑвлÑеÑÑÑ ÑÑадиÑионнÑм ÑпоÑобом Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÐºÐ¾Ñневого каÑалога клеÑки, но ÑÑо не единÑÑвеннÑй ÑпоÑоб. Та же ÑÐ°Ð¼Ð°Ñ Ð¿Ð¾Ð»ÑзоваÑелÑÑÐºÐ°Ñ ÑÑеда Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑÑÑановлена Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ man:bsdinstall[8], из базовÑÑ ÑиÑÑемнÑÑ Ð¿Ð°ÐºÐµÑов или из локалÑно ÑобÑанного деÑева иÑÑ Ð¾Ð´Ð½ÑÑ ÐºÐ¾Ð´Ð¾Ð². + +man:bsdinstall[8] пÑедоÑÑавлÑÐµÑ Ð²ÑделеннÑÑ ÑÐµÐ»Ñ `jail`, коÑоÑÐ°Ñ Ð½Ð°ÑÑÑÐ°Ð¸Ð²Ð°ÐµÑ Ð½Ð¾Ð²Ð¾Ðµ полÑзоваÑелÑÑкое окÑÑжение в заданном каÑалоге Ð´Ð»Ñ Ð¸ÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ man:jail[8]. Ðна загÑÑÐ¶Ð°ÐµÑ Ð¸ ÑаÑпаковÑÐ²Ð°ÐµÑ Ð½Ð°Ð±Ð¾ÑÑ Ð´Ð¸ÑÑÑибÑÑивов без ÑÑÑановки ÑдÑа, пÑопÑÑÐºÐ°Ñ Ñаги ÑÐ°Ð·Ð±Ð¸ÐµÐ½Ð¸Ñ Ð´Ð¸Ñка и наÑÑÑойки ÑеÑи обÑÑной ÑÑÑановки, ÑÑо Ð´ÐµÐ»Ð°ÐµÑ ÐµÑ Ð¾Ð´Ð½Ð¾ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ñм ÑкÑипÑом â алÑÑеÑнаÑивой ÑÑÑной поÑледоваÑелÑноÑÑи загÑÑзки и man:tar[1] ÑледÑÑÑим обÑазом: + +[source, shell] +.... +# bsdinstall jail /usr/local/jails/containers/classic +.... + +Ð¦ÐµÐ»Ñ `jail` по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ Ð±Ð°Ð·Ð¾Ð²Ñй диÑÑÑибÑÑив ([.filename]#base.txz#). ÐаÑÐ¸Ð½Ð°Ñ Ñ FreeBSD 15.0 и более Ð¿Ð¾Ð·Ð´Ð½Ð¸Ñ Ð²ÐµÑÑий, man:bsdinstall[8] Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿Ð¾Ð»Ð½ÑÑÑ ÐºÐ¾Ñневой каÑалог пакеÑами базовой ÑиÑÑÐµÐ¼Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ñвоей Ñели `pkgbase`; меÑод на оÑнове пакеÑов опиÑан далее. + +ÐаÑÐ¸Ð½Ð°Ñ Ñ FreeBSD 15.0, Ð±Ð°Ð·Ð¾Ð²Ð°Ñ ÑиÑÑема Ñакже пÑбликÑеÑÑÑ Ð² виде пакеÑов, поÑÑÐ¾Ð¼Ñ Ð¿Ð¾Ð»ÑзоваÑелÑÑкое окÑÑжение клеÑки можно ÑÑÑановиÑÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ man:pkg[8] из ÑепозиÑоÑÐ¸Ñ `FreeBSD-base`. УкажиÑе man:pkg[8] на коÑневой каÑалог клеÑки Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð³Ð»Ð¾Ð±Ð°Ð»Ñной опÑии `--rootdir` и ÑÑÑановиÑе ваÑÐ¸Ð°Ð½Ñ ÐºÐ»ÐµÑки Ð´Ð»Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð³Ð¾ набоÑа: + +[source, shell] +.... +# pkg --rootdir /usr/local/jails/containers/classic install -r FreeBSD-base FreeBSD-set-base-jail +.... + +ÐÑполÑзÑйÑе `FreeBSD-set-minimal-jail` вмеÑÑо `FreeBSD-set-base-jail` Ð´Ð»Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»Ñного полÑзоваÑелÑÑкого окÑÑжениÑ. ÐлеÑка, ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ñаким обÑазом, впоÑледÑÑвии обновлÑеÑÑÑ Ð¸ полÑÑÐ°ÐµÑ Ð¸ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ man:pkg[8], а не man:freebsd-update[8]; Ñм. crossref:jails[jail-upgrade-pkgbase, Ðбновление клеÑок pkgbase]. + +[NOTE] +==== +ÐакеÑÑ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð¹ ÑиÑÑÐµÐ¼Ñ â ÑÑо ÑÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸ÑеÑÐºÐ°Ñ Ð¿ÑедваÑиÑелÑÐ½Ð°Ñ Ð²ÐµÑÑÐ¸Ñ Ð² FreeBSD 15.0. РепозиÑоÑий `FreeBSD-base` опÑеделÑн в [.filename]#/etc/pkg/FreeBSD.conf#, но по ÑмолÑÐ°Ð½Ð¸Ñ Ð¾ÑклÑÑÑн, поÑÑÐ¾Ð¼Ñ Ð²ÑбиÑайÑе его Ñвно Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `install -r FreeBSD-base`. Целевой коÑневой каÑалог и его подкаÑалоги [.filename]#var/cache/pkg# и [.filename]#var/db/pkg# возможно, поÑÑебÑеÑÑÑ ÑоздаÑÑ Ð·Ð°Ñанее. ТÑадиÑионное ÑаÑпÑоÑÑÑанение [.filename]#base.txz# по-пÑÐµÐ¶Ð½ÐµÐ¼Ñ Ð¿ÑбликÑеÑÑÑ Ð´Ð»Ñ FreeBSD 15.0, поÑÑÐ¾Ð¼Ñ Ð¼ÐµÑод fetch-and-extract пÑÐ¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ ÑабоÑаÑÑ Ð¸ Ñам. +==== + +ÐолÑзоваÑелÑÑкое окÑÑжение, ÑобÑанное из деÑева иÑÑ Ð¾Ð´Ð½ÑÑ ÐºÐ¾Ð´Ð¾Ð², Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑÑÑановлено в коÑневой каÑалог клеÑки Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿ÐµÑеменной `DESTDIR`, ÑÑо ÑвлÑеÑÑÑ ÑпоÑобом запÑÑка полÑзоваÑелÑÑкого окÑÑÐ¶ÐµÐ½Ð¸Ñ `-STABLE` или ÑобÑанного вÑÑÑнÑÑ Ð² клеÑке. ÐоÑле ÑбоÑки миÑа ÑÑÑановиÑе его и оÑÑалÑнÑе диÑÑÑибÑÑивнÑе ÑÐ°Ð¹Ð»Ñ Ð² каÑалог клеÑки: + +[source, shell] +.... +# cd /usr/src +# make buildworld +# make installworld DESTDIR=/usr/local/jails/containers/classic +# make distribution DESTDIR=/usr/local/jails/containers/classic +.... + +`make distribution` ÑÑÑÐ°Ð½Ð°Ð²Ð»Ð¸Ð²Ð°ÐµÑ ÑÐ°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии по ÑмолÑÐ°Ð½Ð¸Ñ Ð² [.filename]#/etc# клеÑки и вÑполнÑеÑÑÑ ÑолÑко один Ñаз, пÑи заполнении клеÑки; повÑоÑение ÑÑого дейÑÑÐ²Ð¸Ñ Ð²Ð¾ вÑÐµÐ¼Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿ÐµÑезапиÑÐµÑ ÐºÐ¾Ð½ÑигÑÑаÑÐ¸Ñ Ð²Ð½ÑÑÑи клеÑки. ЧÑÐ¾Ð±Ñ Ð¾Ð±Ð½Ð¾Ð²Ð¸ÑÑ ÑакÑÑ ÐºÐ»ÐµÑÐºÑ Ð¸Ð· иÑÑ Ð¾Ð´Ð½Ð¸ÐºÐ¾Ð², ÑледÑйÑе Ñой же поÑледоваÑелÑноÑÑи, ÑÑо и Ð´Ð»Ñ Ñ Ð¾ÑÑ-ÑиÑÑемÑ: запÑÑÑиÑе `installworld` Ñ Ñем же `DESTDIR`, обÑединиÑе ÑÐ°Ð¹Ð»Ñ ÐºÐ¾Ð½ÑигÑÑаÑии Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `etcupdate -D`, Ñказав коÑневой каÑалог клеÑки, Ð ¸ ÑдалиÑе ÑÑÑаÑевÑие ÑÐ°Ð¹Ð»Ñ Ð¸ библиоÑеки Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `make delete-old delete-old-libs`, Ñнова Ñ Ñем же `DESTDIR`, вмеÑÑо иÑполÑÐ ·Ð¾Ð²Ð°Ð½Ð¸Ñ man:freebsd-update[8]. ÐолнÑÑ Ð¿ÑоÑедÑÑÑ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð· иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода Ñм. в crossref:cutting-edge[makeworld, Ðбновление FreeBSD из иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ кода]. + +[[classic-jail-clone]] +=== ÐлониÑование клеÑки как Ñаблона + +ÐоÑле Ñого как ÑолÑÑÐ°Ñ ÐºÐ»ÐµÑка полноÑÑÑÑ Ð½Ð°ÑÑÑоена, Ñ ÑÑÑановленнÑми пакеÑами, вклÑÑÑннÑми ÑлÑжбами и локалÑной конÑигÑÑаÑией, она Ð¼Ð¾Ð¶ÐµÑ ÑлÑжиÑÑ ÑаблоннÑм обÑазом: Ñаблоном, из коÑоÑого поÑÑи мгновенно ÑазвÑÑÑÑваÑÑÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво иденÑиÑнÑÑ ÐºÐ»ÐµÑок. + +Ð OpenZFS ÑÑо делаеÑÑÑ Ð¿ÑÑем ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñнимка наÑÑÑоенного набоÑа даннÑÑ ÐºÐ»ÐµÑки и его клониÑованиÑ. ÐÑо ÑÑебÑеÑ, ÑÑÐ¾Ð±Ñ Ð¸ÑÑ Ð¾Ð´Ð½Ð°Ñ ÐºÐ»ÐµÑка ÑаÑполагалаÑÑ Ð² ÑобÑÑвенном набоÑе даннÑÑ , поÑÑÐ¾Ð¼Ñ ÑоздайÑе ÐµÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `zfs create`, а не `mkdir`, как в клаÑÑиÑеÑкой пÑоÑедÑÑе клеÑки вÑÑе: + +[source, shell] +.... +# zfs create -p zroot/jails/containers/classic +.... + +ÐÑÑановиÑе клеÑÐºÑ Ð¿ÐµÑед Ñозданием Ñнимка, ÑÑÐ¾Ð±Ñ Ð¾Ð±Ñаз бÑл конÑиÑÑенÑнÑм, заÑем ÑоздайÑе Ñнимок и клониÑÑйÑе Ð½Ð°Ð±Ð¾Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¾Ð´Ð¸Ð½ Ñаз Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ новой клеÑки: + +[source, shell] +.... +# service jail stop classic +# zfs snapshot zroot/jails/containers/classic@template +# zfs clone zroot/jails/containers/classic@template zroot/jails/containers/web1 +.... + +Ðа Ñ Ð¾ÑÑе UFS ÑкопиÑÑйÑе деÑево каÑалогов наÑÑÑоенной клеÑки вмеÑÑо ÑÑого: + +[source, shell] +.... +# cp -a /usr/local/jails/containers/classic /usr/local/jails/containers/web1 +.... + +ÐаждÑй клон ÑÑебÑÐµÑ Ñвоей ÑобÑÑвенной запиÑи в [.filename]#/etc/jail.conf#, или в [.filename]#jail.conf.d#, Ñ ÑникалÑнÑм именем, пÑÑем и IP-адÑеÑом. ÐоÑколÑÐºÑ Ð¿Ð°ÑамеÑÑÑ `path` и `host.hostname` в пÑиведенном вÑÑе пÑимеÑе вÑводÑÑÑÑ Ð¸Ð· имени блока Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `${name}`, оÑлиÑаÑÑÑÑ ÑолÑко Ð¸Ð¼Ñ Ð±Ð»Ð¾ÐºÐ° и адÑеÑ: + +[.programlisting] +.... +web1 { + # STARTUP/LOGGING + exec.start = "/bin/sh /etc/rc"; + exec.stop = "/bin/sh /etc/rc.shutdown"; + exec.consolelog = "/var/log/jail_console_${name}.log"; + + # PERMISSIONS + allow.raw_sockets; + exec.clean; + mount.devfs; + + # HOSTNAME/PATH + host.hostname = "${name}"; + path = "/usr/local/jails/containers/${name}"; + + # NETWORK + ip4.addr = 192.168.1.152; + interface = em0; +} +.... + +Ðлон Ñаблонного обÑаза оÑлиÑаеÑÑÑ Ð¾Ñ Ñонкой клеÑки (crossref:jails[thin-jail, Тонкие клеÑки]). Ð¢Ð¾Ð½ÐºÐ°Ñ ÐºÐ»ÐµÑка пÑÐ¾Ð´Ð¾Ð»Ð¶Ð°ÐµÑ Ð¸ÑполÑзоваÑÑ Ð¾Ð±ÑÑÑ Ð±Ð°Ð·Ñ ÑолÑко Ð´Ð»Ñ ÑÑÐµÐ½Ð¸Ñ Ð¸ обÑлÑживаеÑÑÑ Ð¾Ð´Ð¸Ð½ Ñаз в Ñаблоне, Ñогда как каждÑй клон Ñаблонного обÑаза пÑедÑÑавлÑÐµÑ Ñобой полнÑÑ, незавиÑимо запиÑÑваемÑÑ ÐºÐ¾Ð¿Ð¸Ñ, коÑоÑÐ°Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÑеÑÑÑ Ð¸ модеÑнизиÑÑеÑÑÑ Ð¾ÑделÑно, как опиÑано в crossref:jails[jail-upgrading, Ðбновление клеÑки]. Ðлон OpenZFS изнаÑалÑно ÑвлÑеÑÑÑ ÑÑÑекÑивной по пÑоÑÑÑ Ð°Ð½ÑÑÐ²Ñ ÐºÐ¾Ð¿Ð¸ÐµÐ¹ пÑи запиÑи (copy-on-write), коÑоÑÐ°Ñ ÑазделÑÐµÑ Ð±Ð»Ð¾ÐºÐ¸ Ñо Ñнимком, и ÑÐ¾Ñ ÑанÑÐµÑ Ð·Ð°Ð²Ð¸ÑимоÑÑÑ Ð¾Ñ ÑÑогР¾ иÑÑ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñнимка, пока `zfs promote` не ÑазоÑвÑÑ ÐµÑ. ÐÐ»Ñ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð½ÐµÐ·Ð°Ð²Ð¸Ñимой копии или Ð´Ð»Ñ ÑепликаÑии клеÑки на дÑÑгой пÑл или Ñ Ð¾ÑÑ Ð¸ÑполÑзÑйÑе `zfs send`, пеÑеданнÑй ÑеÑез ÐºÐ¾Ð½Ð²ÐµÐ¹ÐµÑ Ð² `zfs receive`, вмеÑÑо `zfs clone`. + [[thin-jail]] == Тонкие клеÑки (Thin Jails) @@ -393,7 +677,7 @@ classic { [source, shell, subs=attributes] .... -# fetch https://download.freebsd.org/ftp/releases/amd64/amd64/{rel-latest}-RELEASE/base.txz -o /usr/local/jails/media/{rel-latest}-RELEASE-base.txz +# fetch https://download.freebsd.org/releases/amd64/amd64/{rel-latest}-RELEASE/base.txz -o /usr/local/jails/media/{rel-latest}-RELEASE-base.txz .... ÐоÑле завеÑÑÐµÐ½Ð¸Ñ Ð·Ð°Ð³ÑÑзки Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ извлеÑÑ ÑодеÑжимое в каÑалог Ñаблона, вÑполнив ÑледÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ: @@ -495,7 +779,7 @@ thinjail { [source, shell, subs=attributes] .... -# fetch https://download.freebsd.org/ftp/releases/amd64/amd64/{rel-latest}-RELEASE/base.txz -o /usr/local/jails/media/{rel-latest}-RELEASE-base.txz +# fetch https://download.freebsd.org/releases/amd64/amd64/{rel-latest}-RELEASE/base.txz -o /usr/local/jails/media/{rel-latest}-RELEASE-base.txz .... ÐоÑле завеÑÑÐµÐ½Ð¸Ñ Ð·Ð°Ð³ÑÑзки Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ извлеÑÑ ÑодеÑжимое в каÑалог Ñаблона, вÑполнив ÑледÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ: @@ -625,6 +909,8 @@ thinjail { /usr/local/jails/containers/thinjail /usr/local/jails/thinjail-nullfs-base/skeleton nullfs rw 0 0 .... +Файл [.filename]#fstab# ÑпÑавлÑÐµÑ Ñем, как man:mount_nullfs[8] пÑедÑÑавлÑÐµÑ Ð±Ð°Ð·Ð¾Ð²Ñй Ñаблон и ÑÐºÐµÐ»ÐµÑ Ð²Ð½ÑÑÑи клеÑки. ÐазовÑй Ñаблон монÑиÑÑеÑÑÑ ÑолÑко Ð´Ð»Ñ ÑÑÐµÐ½Ð¸Ñ (`ro`), ÑÑÐ¾Ð±Ñ ÐºÐ°Ð¶Ð´Ð°Ñ ÐºÐ»ÐµÑка NullFS иÑполÑзовала Ð¾Ð´Ð½Ñ Ð½ÐµÐ¸Ð·Ð¼ÐµÐ½ÑемÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð±Ð°Ð·Ð¾Ð²Ð¾Ð¹ ÑиÑÑемÑ. Ð¡ÐºÐµÐ»ÐµÑ ÐºÐ°Ð¶Ð´Ð¾Ð¹ клеÑки монÑиÑÑеÑÑÑ Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑÑ ÑÑÐµÐ½Ð¸Ñ Ð¸ запиÑи (`rw`), и именно здеÑÑ ÐºÐ°Ð¶Ð´Ð°Ñ ÐºÐ»ÐµÑка Ñ ÑÐ°Ð½Ð¸Ñ Ñвои ÑобÑÑвеннÑе доÑÑÑпнÑе Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи каÑалоги [.filename]#/etc#, [.filename]#/var#, [.filename]#/usr/local# и дÑÑгие локалÑнÑе ÐºÐ°Ñ Ð°Ð»Ð¾Ð³Ð¸. ÐоÑколÑÐºÑ Ð²Ñе клеÑки иÑполÑзÑÑÑ Ð¾Ð´Ð¸Ð½ и ÑÐ¾Ñ Ð¶Ðµ базовÑй Ñаблон ÑолÑко Ð´Ð»Ñ ÑÑениÑ, обновление одног о Ñаблона ÑÑÐ°Ð·Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÑÐµÑ Ð²Ñе клеÑки NullFS, в оÑлиÑие Ð¾Ñ Ð½ÐµÐ·Ð°Ð²Ð¸ÑимÑÑ ÐºÐ»Ð¾Ð½Ð¾Ð² OpenZFS, каждÑй из коÑоÑÑÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ обновлÑÑÑ Ð¾ÑделÑно. + ÐÑполниÑе ÑледÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑка клеÑки: [source, shell] @@ -633,7 +919,7 @@ thinjail { .... [[creating-vnet-jail]] -=== Создание клеÑки VNET +== ÐлеÑки VNET РклеÑÐºÐ°Ñ FreeBSD VNET иÑполÑзÑеÑÑÑ Ð¾ÑделÑнÑй ÑеÑевой ÑÑек, вклÑÑаÑÑий инÑеÑÑейÑÑ, IP-адÑеÑа, ÑаблиÑÑ Ð¼Ð°ÑÑÑÑÑизаÑии и пÑавила межÑеÑевого ÑкÑана. @@ -651,6 +937,11 @@ thinjail { bridge0 .... +[WARNING] +==== +ÐазнаÑение IP-адÑеÑа инÑеÑÑейÑÑ, коÑоÑÑй ÑвлÑеÑÑÑ Ñленом моÑÑа, ÑÑÑаÑело. ÐазнаÑайÑе адÑÐµÑ Ñ Ð¾ÑÑа ÑÐ°Ð¼Ð¾Ð¼Ñ `bridge0`, а не `em0`, ÑоÑно Ñак же, как ÑÑо Ð´ÐµÐ»Ð°ÐµÑ Ð¿ÑиведÑннÑй ниже блок [.filename]#/etc/rc.conf#. Такие конÑигÑÑаÑии пока пÑодолжаÑÑ ÑабоÑаÑÑ: FreeBSD 15.0 запиÑÑÐ²Ð°ÐµÑ Ð¿ÑедÑпÑеждение ÑдÑа, когда инÑеÑÑÐµÐ¹Ñ Ñ Ð°Ð´ÑеÑом добавлÑеÑÑÑ Ð² моÑÑ, и оÑказÑÐ²Ð°ÐµÑ ÐµÐ¼Ñ Ñ `EINVAL` ÑолÑко Ñогда, когда sysctl `net.link.bridge.member_ifaddrs` изменÑн Ñ ÐµÐ³Ð¾ знаÑÐµÐ½Ð¸Ñ Ð¿Ð¾ ÑмолÑÐ°Ð½Ð¸Ñ `1` на `0`. man:bridge[4] обÑÑв лÑÐµÑ Ð¾Ð± Ñдалении ÑÑого sysctl в FreeBSD 16.0, поÑле Ñего адÑеÑа на ÑÐ»ÐµÐ½Ð°Ñ Ð¼Ð¾ÑÑа болÑÑе не бÑдÑÑ ÑазÑеÑенÑ. +==== + Создав `bridge`, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ подклÑÑиÑÑ ÐµÐ³Ð¾ к инÑеÑÑейÑÑ `em0` и вклÑÑиÑÑ Ð¾Ð±Ð°, вÑполнив ÑледÑÑÑие командÑ: [source, shell] @@ -712,20 +1003,72 @@ vnet { exec.prestart += "/sbin/ifconfig ${bridge} addm ${epair}a up"; exec.start += "/sbin/ifconfig ${epair}b ${ip} up"; exec.start += "/sbin/route add default ${gateway}"; - exec.start += "/bin/sh /etc/rc"; - exec.stop = "/bin/sh /etc/rc.shutdown"; + exec.start += "/bin/sh /etc/rc"; + exec.stop = "/bin/sh /etc/rc.shutdown"; exec.poststop = "/sbin/ifconfig ${bridge} deletem ${epair}a"; exec.poststop += "/sbin/ifconfig ${epair}a destroy"; } .... -<.> ÐÑедÑÑавлÑÐµÑ IP-адÑÐµÑ ÐºÐ»ÐµÑки, он должен бÑÑÑ *ÑникалÑнÑм*. +<.> ÐомеÑ, *ÑникалÑнÑй* Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ клеÑки, иÑполÑзÑемÑй Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÐºÐ°Ðº имени ÑÑÑÑойÑÑва epair (`epair${id}`), Ñак и поÑледнего окÑеÑа адÑеÑа клеÑки (`192.168.1.${id}`); пÑиÑвойÑе каждой клеÑке на моÑÑÑ ÑазлиÑное знаÑение. <.> ÐÑноÑиÑÑÑ Ðº Ñанее ÑÐ¾Ð·Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ Ð¼Ð¾ÑÑÑ. +ÐаÑамеÑÑ `vnet.interface` Ð·Ð°Ð´Ð°ÐµÑ Ð¸Ð¼Ñ Ð¸Ð½ÑеÑÑейÑа, коÑоÑÑй man:jail[8] пеÑемеÑÐ°ÐµÑ Ð² ÑеÑевой ÑÑек клеÑки поÑле ее ÑозданиÑ, здеÑÑ ÑÑо ÑÑоÑона epair, оÑноÑÑÑаÑÑÑ Ðº клеÑке, `${epair}b`. ÐÑÐ¾Ñ Ð¸Ð½ÑеÑÑÐµÐ¹Ñ Ð¸ÑÑÐµÐ·Ð°ÐµÑ Ñ Ñ Ð¾ÑÑа, пока клеÑка ÑабоÑаеÑ, и авÑомаÑиÑеÑки возвÑаÑаеÑÑÑ Ñ Ð¾ÑÑÑ Ð¿Ñи оÑÑановке клеÑки. ФизиÑеÑÐºÐ°Ñ ÑеÑÐµÐ²Ð°Ñ ÐºÐ°ÑÑа или виÑÑÑалÑÐ½Ð°Ñ ÑÑнкÑÐ¸Ñ SR-IOV могÑÑ Ð±ÑÑÑ Ð¿ÐµÑÐµÐ´Ð°Ð½Ñ ÐºÐ»ÐµÑке Ñаким же обÑазом, обеÑпеÑÐ¸Ð²Ð°Ñ ÐµÐ¹ вÑделеннÑÑ ÑеÑÑ Ð±ÐµÐ· моÑÑа или epair. + +СÑÑока `devfs_ruleset = 5` пÑименÑÐµÑ Ð½Ð°Ð±Ð¾Ñ Ð¿Ñавил `devfsrules_jail_vnet` из [.filename]#/etc/defaults/devfs.rules#, коÑоÑÑй ÑаÑÑиÑÑÐµÑ ÑÑандаÑÑнÑй Ð½Ð°Ð±Ð¾Ñ Ð¿Ñавил Ð´Ð»Ñ ÐºÐ»ÐµÑок, оÑкÑÑÐ²Ð°Ñ Ð´Ð¾ÑÑÑп к [.filename]#/dev/pf#. Таким обÑазом, клеÑка VNET Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑ ÑобÑÑвеннÑй межÑеÑевой ÑкÑан man:pf[4] Ñ `pf_enable="YES"` и пÑиваÑнÑм [.filename]#pf.conf#, незавиÑимÑм Ð¾Ñ Ñ Ð¾ÑÑа. СмоÑÑиÑе crossref:jails[jail-conf-devfs, Devfs Rulesets] Ð´Ð»Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð¾Ð¿Ñеделений набоÑов пÑавил и crossref:firewalls[firewalls, Firewalls] Ð´Ð»Ñ Ð¸Ð½ÑоÑмаÑии о Ñамом pf. + +[[jail-vnet-jib]] +=== ÐвÑомаÑизаÑÐ¸Ñ ÑеÑи VNET Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ jib + +ÐаÑÑÑойка epair и подклÑÑение его к моÑÑÑ Ð²ÑÑÑнÑÑ Ð² `exec.prestart` и `exec.poststop`, как показано вÑÑе, ÑÑановиÑÑÑ ÑÑомиÑелÑной пÑи болÑÑом колиÑеÑÑве клеÑок. Рбазовой ÑиÑÑеме еÑÑÑ Ð²ÑпомогаÑелÑнÑй ÑкÑипÑ, [.filename]#/usr/share/examples/jails/jib#, коÑоÑÑй вÑполнÑÐµÑ ÑÑ Ð¶Ðµ ÑамÑÑ Ð½Ð°ÑÑÑÐ¾Ð¹ÐºÑ Ð°Ð²ÑомаÑиÑеÑки. + +СÑÑлайÑеÑÑ Ð½Ð° него из Ñ Ñков клеÑки вмеÑÑо пÑÑи ÑамоделÑнÑÑ ÑÑÑок man:ifconfig[8]: + +[.programlisting] +.... + exec.prestart += "jib addm ${name} em0"; + exec.poststop += "jib destroy ${name}"; + + vnet.interface = "e0b_${name}"; +.... + +`jib addm` ÑÐ¾Ð·Ð´Ð°ÐµÑ epair, ÑÑÑ ÑÑоÑона Ñ Ð¾ÑÑа назÑваеÑÑÑ `e0a_<name>`, а ÑÑоÑона клеÑки â `e0b_<name>`, заÑем пÑиÑоединÑÐµÑ ÑÑоÑÐ¾Ð½Ñ Ñ Ð¾ÑÑа к моÑÑÑ, коÑоÑÑй он ÑÐ¾Ð·Ð´Ð°ÐµÑ Ð°Ð²ÑомаÑиÑеÑки, Ð½Ð°Ð·Ð²Ð°Ð½Ð½Ð¾Ð¼Ñ Ð² ÑеÑÑÑ Ð¸Ð½ÑеÑÑейÑа-Ñлена (Ð´Ð»Ñ `em0` моÑÑ Ð½Ð°Ð·ÑваеÑÑÑ `em0bridge`). УкажиÑе ÑÑÑ ÑÑоÑÐ¾Ð½Ñ ÐºÐ»ÐµÑки в `vnet.interface`. Ðогда клеÑка оÑÑанавливаеÑÑÑ, `jib destroy` ÑдалÑÐµÑ epair. СкÑÐ¸Ð¿Ñ Ñакже пÑедоÑÑавлÑÐµÑ Ð¿Ð¾Ð´ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ `jib show` Ð´Ð»Ñ Ð²Ñвода ÑпиÑка инÑеÑÑейÑов, коÑоÑÑми он ÑпÑавлÑеÑ. + +[[jail-vnet-jng]] +=== СеÑевÑе взаимодейÑÑÐ²Ð¸Ñ Netgraph VNET Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ jng + +ТÑеÑий Ñежим ÑабоÑÑ ÑеÑи, ÑпомÑнÑÑÑй в обзоÑе crossref:jails[jails-networking, СеÑÑ], иÑполÑзÑÐµÑ man:netgraph[4] вмеÑÑо man:bridge[4] и epair. Рбазовой ÑиÑÑеме поÑÑавлÑеÑÑÑ Ð²ÑоÑой вÑпомогаÑелÑнÑй ÑкÑипÑ, [.filename]#/usr/share/examples/jails/jng#, коÑоÑÑй ÑÐ¾Ð·Ð´Ð°ÐµÑ `ng_bridge`, подклÑÑеннÑй к `ng_eiface` Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ клеÑки: + +[.programlisting] +.... + exec.prestart += "jng bridge ${name} em0"; + exec.poststop += "jng shutdown ${name}"; + + vnet.interface = "ng0_${name}"; +.... + +`jng bridge` ÑÐ¾Ð·Ð´Ð°ÐµÑ ÑÐ·Ð»Ñ netgraph и инÑеÑÑÐµÐ¹Ñ Ð½Ð° ÑÑоÑоне клеÑки Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ `ng0_<name>`, коÑоÑÑй ÑказÑваеÑÑÑ Ð² `vnet.interface`; `jng shutdown` ÑазÑÑÑÐ°ÐµÑ ÑÐ¾Ð¿Ð¾Ð»Ð¾Ð³Ð¸Ñ Ð¿Ñи оÑÑановке клеÑки. РезÑлÑÑÐ°Ñ ÑÑнкÑионалÑно ÑквиваленÑен наÑÑÑойке Ñ epair и bridge, но поÑÑÑоен на ÑÐ·Ð»Ð°Ñ netgraph, а не на man:bridge[4]. + +[[jail-vnet-firewall]] +=== ÐапÑÑк межÑеÑевого ÑкÑана и DHCP внÑÑÑи клеÑки VNET + +ÐоÑколÑÐºÑ `devfs_ruleset = 5` оÑкÑÑÐ²Ð°ÐµÑ Ð´Ð¾ÑÑÑп к [.filename]#/dev/pf#, клеÑка VNET Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑ ÑобÑÑвеннÑй межÑеÑевой ÑкÑан. ÐклÑÑиÑе его внÑÑÑи клеÑки ÑоÑно Ñак же, как на лÑбом Ñ Ð¾ÑÑе, Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `pf_enable="YES"` в [.filename]#/etc/rc.conf# клеÑки и ÐµÑ ÑобÑÑвенном [.filename]#/etc/pf.conf#. + +Ðднако пÑавила набоÑа 5 не оÑкÑÑваÑÑ Ð´Ð¾ÑÑÑп к [.filename]#/dev/bpf#. ÐлеÑка VNET, коÑоÑÐ°Ñ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ Ñвой адÑÐµÑ ÑеÑез DHCP, напÑимеÑ, Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `ifconfig_e0b_myjail="SYNCDHCP"` в ÐµÑ [.filename]#/etc/rc.conf#, запÑÑÐºÐ°ÐµÑ man:dhclient[8], коÑоÑÐ¾Ð¼Ñ ÑÑебÑеÑÑÑ bpf, и поÑÑÐ¾Ð¼Ñ Ð¾Ð½ ÑеÑÐ¿Ð¸Ñ Ð½ÐµÑдаÑÑ Ð¿Ñи иÑполÑзовании набоÑа пÑавил 5. СледÑÑ ÑеÑепÑÑ Ð¸Ð· crossref:jails[jail-conf-devfs,Devfs Rulesets], опÑеделиÑе ÑобÑÑвеннÑй Ð½Ð°Ð±Ð¾Ñ Ð¿Ñавил в [.filename]#/etc/devfs.rules#, коÑоÑÑй наÑинаеÑÑÑ Ñ `devfsrules_jail_vnet` и дополниÑелÑно оÑкÑÑÐ²Ð°ÐµÑ ÑÑÑÑойÑÑ Ð²Ð° bpf: + +[.programlisting] +.... +[devfsrules_jail_vnet_dhcp=101] +add include $devfsrules_jail_vnet +add path 'bpf*' unhide +.... + +ÐоÑле вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ `service devfs restart` на Ñ Ð¾ÑÑе, ÑкажиÑе клеÑке на новÑй Ð½Ð°Ð±Ð¾Ñ Ð¿Ñавил Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `devfs_ruleset = 101;`. + [[creating-linux-jail]] -=== Создание клеÑки Linux +== ÐлеÑки Linux -FreeBSD Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑ Linux внÑÑÑи клеÑки, иÑполÑзÑÑ crossref:linuxemu[linuxemu, ÐвоиÑнÑÑ ÑовмеÑÑимоÑÑÑ Ñ Linux] и man:debootstrap[8]. ÐлеÑки не имеÑÑ ÑобÑÑвенного ÑдÑа. Ðни ÑабоÑаÑÑ Ð½Ð° ÑдÑе Ñ Ð¾ÑÑа. ÐоÑÑÐ¾Ð¼Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ вклÑÑиÑÑ ÐвоиÑнÑÑ ÑовмеÑÑимоÑÑÑ Ñ Linux в Ñ Ð¾ÑÑ-ÑиÑÑеме. +FreeBSD Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑкие пÑогÑÐ°Ð¼Ð¼Ñ Linux внÑÑÑи клеÑки, иÑполÑзÑÑ crossref:linuxemu[linuxemu, ÐвоиÑнÑÑ ÑовмеÑÑимоÑÑÑ Ñ Linux] и package:sysutils/debootstrap[]. ÐлеÑки не имеÑÑ ÑобÑÑвенного ÑдÑа. Ðни ÑабоÑаÑÑ Ð½Ð° ÑдÑе Ñ Ð¾ÑÑа. ÐоÑÑÐ¾Ð¼Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ вклÑÑиÑÑ ÐвоиÑнÑÑ ÑовмеÑÑимоÑÑÑ Ñ Linux в Ñ Ð¾ÑÑ-ÑиÑÑеме. ЧÑÐ¾Ð±Ñ Ð²ÐºÐ»ÑÑиÑÑ ABI Linux пÑи загÑÑзке, вÑполниÑе ÑледÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ: @@ -743,16 +1086,25 @@ FreeBSD Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑ Linux внÑÑÑи клеÑки, иÑпо СледÑÑÑим Ñагом бÑÐ´ÐµÑ Ñоздание клеÑки, как Ñказано вÑÑе, напÑимеÑ, в Ñазделе crossref:jails[creating-thin-jail-openzfs-snapshots, Создание Ñонкой клеÑки Ñ Ð¸ÑполÑзованием Ñнимков OpenZFS], но *без* вÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð½Ð°ÑÑÑойки. ÐлеÑки FreeBSD Linux ÑÑебÑÑÑ Ð¾Ñобой конÑигÑÑаÑии, коÑоÑÐ°Ñ Ð±ÑÐ´ÐµÑ Ð¿Ð¾Ð´Ñобно опиÑана ниже. -ÐоÑле ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ»ÐµÑки, как опиÑано вÑÑе, вÑполниÑе ÑледÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð´Ð»Ñ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾Ð¹ конÑигÑÑаÑии и запÑÑка клеÑки: +ÐÑли на Ñ Ð¾ÑÑе еÑÑ Ð½ÐµÑ Ñайла [.filename]#/etc/jail.conf# â напÑимеÑ, в ÑиÑÑеме, где клеÑки до ÑÐ¸Ñ Ð¿Ð¾Ñ ÑоздавалиÑÑ ÑолÑко из командной ÑÑÑоки, â ÑоздайÑе пÑÑÑой Ñайл, ÑÑÐ¾Ð±Ñ man:service[8] заÑем мог оÑÑановиÑÑ ÐºÐ»ÐµÑкÑ: + +[source, shell] +.... +# touch /etc/jail.conf +.... + +СкÑÐ¸Ð¿Ñ man:service[8] jail ÑиÑÐ°ÐµÑ [.filename]#/etc/jail.conf# пÑи оÑÑановке клеÑки, поÑÑÐ¾Ð¼Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° оÑÑановки завеÑÑаеÑÑÑ Ð¾Ñибкой, еÑли Ñайл не ÑÑÑеÑÑвÑеÑ. ÐÑли [.filename]#/etc/jail.conf# Ñже пÑиÑÑÑÑÑвÑÐµÑ Ð¸Ð· пÑедÑдÑÑего Ñаздела, ÑÑÐ¾Ñ Ñаг не ÑÑебÑеÑÑÑ. + +СледÑÑÑÐ°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° man:jail[8] вÑполнÑÐµÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼ÑÑ Ð½Ð°ÑÑÑÐ¾Ð¹ÐºÑ Ð´Ð»Ñ ÐºÐ»ÐµÑки и запÑÑÐºÐ°ÐµÑ ÐµÑ Ð½Ð°Ð¿ÑÑмÑÑ, без запиÑи в [.filename]#/etc/jail.conf#. Флаг `-c` ÑоздаÑÑ Ð½Ð¾Ð²ÑÑ ÐºÐ»ÐµÑкÑ, а `-m` изменÑÐµÑ ÑÑÑеÑÑвÑÑÑÑÑ; в ÑоÑеÑании как `-cm`, man:jail[8] ÑоздаÑÑ ÐºÐ»ÐµÑкÑ, еÑли она еÑÑ Ð½Ðµ ÑÑÑеÑÑвÑеÑ, и обновлÑÐµÑ ÐµÑ, еÑли она ÑÑÑеÑÑвÑеÑ: [source, shell] .... # jail -cm \ name=ubuntu \ host.hostname="ubuntu.example.com" \ - path="/usr/local/jails/ubuntu" \ + path="/usr/local/jails/containers/ubuntu" \ interface="em0" \ - ip4.addr="192.168.1.150" \ + ip4.addr="192.168.1.155" \ exec.start="/bin/sh /etc/rc" \ exec.stop="/bin/sh /etc/rc.shutdown" \ mount.devfs \ @@ -767,16 +1119,14 @@ FreeBSD Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑ Linux внÑÑÑи клеÑки, иÑпо enforce_statfs=1 .... -ÐÐ»Ñ Ð´Ð¾ÑÑÑпа к клеÑке Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑÑÑановиÑÑ Ð¿Ð°ÐºÐµÑ package:sysutils/debootstrap[]. - -ÐÑполниÑе ÑледÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к клеÑке FreeBSD Linux: +ÐолÑÑиÑе доÑÑÑп к Ð²Ð½Ð¾Ð²Ñ Ñозданной клеÑке как `root` Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ man:jexec[8]: [source, shell] .... -# jexec -u root ubuntu +# jexec -u root ubuntu sh .... -ÐнÑÑÑи клеÑки вÑполниÑе ÑледÑÑÑие ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð´Ð»Ñ ÑÑÑановки пакеÑа package:sysutils/debootstrap[] и подгоÑовки окÑÑÐ¶ÐµÐ½Ð¸Ñ Ubuntu: +ÐнÑÑÑи клеÑки ÑÑÑановиÑе package:sysutils/debootstrap[] и иÑполÑзÑйÑе его Ð´Ð»Ñ ÑбоÑки полÑзоваÑелÑÑкого окÑÑÐ¶ÐµÐ½Ð¸Ñ Ubuntu в [.filename]#/compat/ubuntu#. package:sysutils/debootstrap[] â ÑÑо инÑÑÑÑменÑ, коÑоÑÑй ÑобиÑÐ°ÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑÑкое окÑÑжение Linux; поÑле ÑÑого он не ÑÑебÑеÑÑÑ Ð´Ð»Ñ Ð²Ñ Ð¾Ð´Ð° в клеÑкÑ. ÐеÑвÑй запÑÑк man:pkg[7] авÑомаÑиÑеÑки вÑполнÑÐµÑ ÐµÐ³Ð¾ наÑалÑнÑÑ Ð½Ð°ÑÑÑойкÑ: [source, shell] .... @@ -784,13 +1134,17 @@ FreeBSD Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑ Linux внÑÑÑи клеÑки, иÑпо # debootstrap jammy /compat/ubuntu .... -Ðогда пÑоÑеÑÑ Ð·Ð°Ð²ÐµÑÑиÑÑÑ Ð¸ на конÑоли поÑвиÑÑÑ ÑообÑение `Base system installed successfully`, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ из Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ Ð¾ÑÑановиÑÑ ÐºÐ»ÐµÑки, вÑполнив ÑледÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ: +`jammy` вÑбиÑÐ°ÐµÑ Ubuntu 22.04 LTS. Ðожно вÑбÑаÑÑ Ð±Ð¾Ð»ÐµÐµ новÑÑ LTS, напÑÐ¸Ð¼ÐµÑ `noble` (Ubuntu 24.04), пÑи ÑÑловии, ÑÑо она ÑабоÑÐ°ÐµÑ Ð² linuxulator. + +Ðогда пÑоÑеÑÑ Ð·Ð°Ð²ÐµÑÑиÑÑÑ Ð¸ на конÑоли поÑвиÑÑÑ ÑообÑение `Base system installed successfully`, из Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ Ð¾ÑÑановиÑе клеÑкÑ. Так как ÑÑа клеÑка не акÑивиÑована в [.filename]#/etc/rc.conf# и еÑе не пеÑеÑиÑлена в [.filename]#/etc/jail.conf#, иÑполÑзÑйÑе дейÑÑвие man:service[8] Ñ Ð¿ÑеÑикÑом `one`, коÑоÑое запÑÑÐºÐ°ÐµÑ ÐºÐ»ÐµÑки, коÑоÑÑе не акÑивиÑованÑ: [source, shell] .... # service jail onestop ubuntu .... +ÐейÑÑÐ²Ð¸Ñ `onestart` и `onestop` ÑвлÑÑÑÑÑ Ð°Ð½Ð°Ð»Ð¾Ð³Ð°Ð¼Ð¸ `start` и `stop` Ð´Ð»Ñ ÐºÐ»ÐµÑок, коÑоÑÑе не вклÑÑÐµÐ½Ñ ÑеÑез `jail_enable` или не пеÑеÑиÑÐ»ÐµÐ½Ñ Ð² `jail_list`. + ÐаÑем добавÑÑе запиÑÑ Ð² [.filename]#/etc/jail.conf# Ð´Ð»Ñ Linux-конÑейнеÑа: [.programlisting] @@ -826,6 +1180,11 @@ ubuntu { } .... +[TIP] +==== +ÐлеÑка Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑедÑÑавлÑÑÑ ÐºÐ¾Ð½ÐºÑеÑнÑÑ Ð¸Ð´ÐµÐ½ÑиÑноÑÑÑ ÑдÑа Linux пÑогÑаммам, ÑабоÑаÑÑим внÑÑÑи неÑ. ÐаÑамеÑÑ `linux` вÑбиÑаеÑ, наÑледÑÐµÑ Ð»Ð¸ клеÑка ÑÑÐµÐ´Ñ ÑмÑлÑÑии Linux Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ (`inherit`) или полÑÑÐ°ÐµÑ ÑобÑÑвеннÑÑ (`new`), а `linux.osname`, `linux.osrelease` и `linux.oss_version` задаÑÑ Ð¸Ð¼Ñ ÐС, Ñелиз и веÑÑÐ¸Ñ OSS, коÑоÑÑе видÑÑ Ð±Ð¸Ð½Ð°ÑнÑе ÑÐ°Ð¹Ð»Ñ Linux. ÐапÑимеÑ, `linux.osrelease=6.1.0` заÑÑавлÑÐµÑ man:uname[1] и пÑовеÑÑÑÑие веÑÑÐ¸Ñ Ð¿ÑогÑÐ°Ð¼Ð¼Ñ Linux внÑÑÑи клеÑки ÑообÑаÑÑ ÑказаннÑй Ñелиз ÑдÑа Ð²Ð¼ÐµÑ Ñо знаÑÐµÐ½Ð¸Ñ `compat.linux.osrelease` Ð´Ð»Ñ Ð²Ñей Ñ Ð¾ÑÑа-ÑиÑÑемÑ. +==== + ÐаÑем клеÑÐºÑ Ð¼Ð¾Ð¶Ð½Ð¾ запÑÑÑиÑÑ ÐºÐ°Ðº обÑÑно Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑледÑÑÑей командÑ: [source, shell] @@ -842,8 +1201,53 @@ ubuntu { ÐополниÑелÑнÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ найÑи в главе crossref:linuxemu[linuxemu, ÐвоиÑÐ½Ð°Ñ ÑовмеÑÑимоÑÑÑ Ñ Linux]. +[[jail-nat]] +== NAT и пеÑенапÑавление поÑÑов Ð´Ð»Ñ ÐºÐ»ÐµÑок + +ÐлеÑка, коÑоÑой пÑиÑвоен ÑаÑÑнÑй адÑÐµÑ â на клониÑованном инÑеÑÑейÑе man:lo[4], Ñаком как `lo1`, на ÑаÑÑном моÑÑÑ Ð¸Ð»Ð¸ на VNET epair во внÑÑÑенней ÑеÑи, â не Ð¸Ð¼ÐµÐµÑ ÑобÑÑвенного маÑÑÑÑÑа в инÑеÑнеÑ. ХоÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ ÑÑанÑлиÑоваÑÑ ÑÑаÑик клеÑки в маÑÑÑÑÑизиÑÑемÑй адÑеÑ, а Ð´Ð»Ñ Ð´Ð¾ÑÑÑпа к ÑлÑжбе, ÑабоÑаÑÑей внÑÑÑи Ñакой клеÑки, извне â пеÑенапÑавлÑÑÑ Ð²Ñ Ð¾Ð´ÑÑие ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð½Ð° клеÑкÑ. + +СнаÑала ÑазÑеÑиÑе Ñ Ð¾ÑÑÑ Ð¿ÐµÑеÑÑлаÑÑ Ð¿Ð°ÐºÐµÑÑ Ð¼ÐµÐ¶Ð´Ñ ÐµÐ³Ð¾ инÑеÑÑейÑами. ÐклÑÑиÑе ÑÑо пÑи загÑÑзке и немедленно Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑледÑÑÑÐ¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´: + +[source, shell] +.... +# sysrc gateway_enable="YES" +# sysctl net.inet.ip.forwarding=1 +.... + +ÐÐ»Ñ IPv6 иÑполÑзÑйÑе `ipv6_gateway_enable="YES"` и `net.inet6.ip6.forwarding=1`. + +ÐаÑем наÑÑÑойÑе ÑÑанÑлÑÑÐ¸Ñ ÑеÑевÑÑ Ð°Ð´ÑеÑов на Ñ Ð¾ÑÑе Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ man:pf[4]. СледÑÑÑий [.filename]#/etc/pf.conf# пÑедоÑÑавлÑÐµÑ ÐºÐ°Ð¶Ð´Ð¾Ð¹ клеÑке в ÑаÑÑной ÑеÑи `192.168.0.0/24` иÑÑ Ð¾Ð´ÑÑий доÑÑÑп ÑеÑез внеÑний инÑеÑÑÐµÐ¹Ñ Ñ Ð¾ÑÑа `em0` и пÑбликÑÐµÑ Ð²ÐµÐ±-ÑеÑÐ²ÐµÑ Ð²Ð½ÑÑÑи клеÑки на поÑÑÑ 80 Ñ Ð¾ÑÑа: + +[.programlisting] +.... +ext_if = "em0" + +# Translate outbound jail traffic to the host address +nat on $ext_if from 192.168.0.0/24 to any -> ($ext_if) + +# Forward inbound web traffic to the jailed server +rdr on $ext_if proto tcp to port 80 -> 192.168.0.151 +.... + +Ð¦ÐµÐ»Ñ `rdr` должна бÑÑÑ ÑобÑÑвеннÑм адÑеÑом клеÑки. + +ÐкÑивиÑÑйÑе и запÑÑÑиÑе man:pf[4] Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑледÑÑÑей командÑ: + +[source, shell] +.... +# sysrc pf_enable="YES" +# service pf start +.... + +[NOTE] +==== +FreeBSD 15.0 добавлÑÐµÑ ÑинÑакÑÐ¸Ñ Ð² ÑÑиле OpenBSD Ð´Ð»Ñ Ð²ÑÑÑоеннÑÑ `nat-to` и `rdr-to`, коÑоÑÑй пÑивÑзÑÐ²Ð°ÐµÑ ÑÑанÑлÑÑÐ¸Ñ Ðº пÑÐ°Ð²Ð¸Ð»Ñ `pass` или `match`, напÑÐ¸Ð¼ÐµÑ `match out on $ext_if from 192.168.0.0/24 to any nat-to ($ext_if)`. ÐлаÑÑиÑеÑкие пÑавила `nat on` и `rdr on`, показаннÑе вÑÑе, ÑабоÑаÑÑ ÐºÐ°Ðº на FreeBSD 14.x, Ñак и на 15.x. +==== + +ÐÐ»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ ÑаÑÑмоÑÑÐµÐ½Ð¸Ñ man:pf[4] и man:ipfw[8], вклÑÑÐ°Ñ Ð¿Ð¾Ð»Ð½Ñе набоÑÑ Ð¿Ñавил и NAT на оÑнове man:ipfw[8], Ñм. crossref:firewalls[firewalls,ÐежÑеÑевÑе ÑкÑанÑ]. + [[service-jails-config]] -=== ÐаÑÑÑойка ÑеÑвиÑнÑÑ ÐºÐ»ÐµÑок +== СеÑвиÑнÑе клеÑки (Service Jails) СеÑвиÑÐ½Ð°Ñ ÐºÐ»ÐµÑка полноÑÑÑÑ Ð½Ð°ÑÑÑаиваеÑÑÑ ÑеÑез [.filename]#/etc/rc.conf# или man:sysrc[8]. ÐазовÑе ÑиÑÑемнÑе ÑеÑвиÑÑ Ð³Ð¾ÑÐ¾Ð²Ñ Ð´Ð»Ñ ÑабоÑÑ Ð² ÑеÑвиÑнÑÑ ÐºÐ»ÐµÑÐºÐ°Ñ . Ðни ÑодеÑÐ¶Ð°Ñ ÑÑÑÐ¾ÐºÑ ÐºÐ¾Ð½ÑигÑÑаÑии, коÑоÑÐ°Ñ Ð²ÐºÐ»ÑÑÐ°ÐµÑ ÑеÑÑ Ð¸Ð»Ð¸ ÑÐ½Ð¸Ð¼Ð°ÐµÑ Ð´ÑÑгие огÑаниÑÐµÐ½Ð¸Ñ ÐºÐ»ÐµÑок. ÐазовÑе ÑиÑÑемнÑе ÑеÑвиÑÑ, коÑоÑÑе не Ð¸Ð¼ÐµÐµÑ ÑмÑÑла запÑÑкаÑÑ Ð²Ð½ÑÑÑи клеÑок, наÑÑÑÐ¾ÐµÐ½Ñ Ñак, ÑÑÐ¾Ð±Ñ Ð½Ðµ запÑÑкаÑÑÑÑ ÐºÐ°Ðº ÑеÑвиÑнÑе клеÑки, даже еÑли они вклÑÑÐµÐ½Ñ Ð² [.filename]#/etc/rc.conf#. ÐекоÑоÑÑе пÑимеÑÑ ÑÐ°ÐºÐ¸Ñ Ñе ÑвиÑов â ÑÑо ÑеÑвиÑÑ, коÑоÑÑе Ñ Ð¾ÑÑÑ Ð¼Ð¾Ð½ÑиÑоваÑÑ Ð¸Ð»Ð¸ ÑазмонÑиÑоваÑÑ ÑÑо-Ñо в меÑоде start или stop, или ÑолÑк о наÑÑÑаиваÑÑ ÑÑо-Ñо, напÑÐ¸Ð¼ÐµÑ Ð¼Ð°ÑÑÑÑÑ, межÑеÑевой ÑкÑан или подобное. @@ -897,7 +1301,7 @@ ubuntu { .... JID IP Address Hostname Path - 1 192.168.250.70 classic /usr/local/jails/containers/classic + 1 192.168.1.151 classic /usr/local/jails/containers/classic .... man:jls[8] поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð°ÑгÑÐ¼ÐµÐ½Ñ `--libxo`, коÑоÑÑй ÑеÑез библиоÑÐµÐºÑ man:libxo[3] позволÑÐµÑ Ð¾ÑобÑажаÑÑ Ð´Ð°Ð½Ð½Ñе в дÑÑÐ³Ð¸Ñ ÑоÑмаÑÐ°Ñ , ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðº `JSON`, `HTML` и Ñ.д. @@ -912,52 +1316,103 @@ man:jls[8] поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð°ÑгÑÐ¼ÐµÐ½Ñ `--libxo`, коÑоÑÑй ÐÑвод должен бÑÑÑ Ð¿Ð¾Ñ Ð¾Ð¶ на ÑледÑÑÑий: .... -{"__version": "2", "jail-information": {"jail": [{"jid":1,"ipv4":"192.168.250.70","hostname":"classic","path":"/usr/local/jails/containers/classic"}]}} +{"__version": "2", "jail-information": {"jail": [{"jid":1,"ipv4":"192.168.1.151","hostname":"classic","path":"/usr/local/jails/containers/classic"}]}} .... -[[start-jail]] -=== ÐапÑÑк, пеÑезапÑÑк и оÑÑановка клеÑки - -man:service[8] иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑка, пеÑезагÑÑзки или оÑÑановки клеÑки на Ñ Ð¾ÑÑе. - -ÐапÑимеÑ, ÑÑÐ¾Ð±Ñ Ð·Ð°Ð¿ÑÑÑиÑÑ ÐºÐ»ÐµÑкÑ, вÑполниÑе ÑледÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ: +СÑандаÑÑнÑй вÑвод ÑвлÑеÑÑÑ Ð»Ð¸ÑÑ Ð¼Ð°Ð»Ð¾Ð¹ ÑаÑÑÑÑ Ñого, ÑÑо Ð¼Ð¾Ð¶ÐµÑ ÑообÑиÑÑ man:jls[8]. ÐобавÑÑе Ñлаг `-v` Ð´Ð»Ñ Ð¿Ð¾Ð´Ñобной многоÑÑÑоÑной Ñводки по каждой клеÑке, вклÑÑаÑÑей ÐµÑ ÑоÑÑоÑние и назнаÑеннÑй иденÑиÑикаÑÐ¾Ñ Ð½Ð°Ð±Ð¾Ñа пÑоÑеÑÑоÑов (cpuset ID): [source, shell] .... -# service jail start jailname +# jls -v .... -ÐзмениÑе аÑгÑÐ¼ÐµÐ½Ñ `start` на `restart` или `stop`, ÑÑÐ¾Ð±Ñ Ð²ÑполниÑÑ Ð´ÑÑгие дейÑÑÐ²Ð¸Ñ Ñ ÐºÐ»ÐµÑкой. - -[[destroy-jail]] -=== Удаление клеÑки - -Удаление клеÑки, ÑÑо не пÑоÑÑо оÑÑановка клеÑки Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ man:service[8] и Ñдаление каÑалога клеÑки и запиÑи в [.filename]#/etc/jail.conf#. - -FreeBSD оÑÐµÐ½Ñ ÑеÑÑезно оÑноÑиÑÑÑ Ðº безопаÑноÑÑи ÑиÑÑемÑ. Ðо ÑÑой пÑиÑине ÑÑÑеÑÑвÑÑÑ Ð¾Ð¿ÑеделÑннÑе ÑайлÑ, коÑоÑÑе не Ð¼Ð¾Ð¶ÐµÑ ÑдалиÑÑ Ð´Ð°Ð¶Ðµ полÑзоваÑÐµÐ»Ñ root. ÐÑа ÑÑнкÑионалÑноÑÑÑ Ð½Ð°Ð·ÑваеÑÑÑ Ð¤Ð»Ð°Ð³Ð¸ Файлов. - -ÐеÑвÑм Ñагом ÑвлÑеÑÑÑ Ð¾ÑÑановка нÑжной клеÑки Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑледÑÑÑей командÑ: +ÐÑполÑзÑйÑе `-h` Ð´Ð»Ñ Ð²Ñвода ÑÑÑоки заголовка Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñми полей над знаÑениÑми запÑаÑиваемÑÑ Ð¿Ð°ÑамеÑÑов: [source, shell] .... -# service jail stop jailname +# jls -h jid name path .... -ÐÑоÑой Ñаг â ÑдалиÑÑ ÑÑи Ñлаги Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ man:chflags[1], вÑполнив ÑледÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, где `classic` â Ð¸Ð¼Ñ ÑдалÑемой клеÑки: +ЧÑÐ¾Ð±Ñ Ð·Ð°Ð¿ÑоÑиÑÑ ÐºÐ¾Ð½ÐºÑеÑнÑе паÑамеÑÑÑ Ð¾Ð´Ð½Ð¾Ð¹ клеÑки, ÑкажиÑе ÐµÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `-j` и пеÑеÑиÑлиÑе паÑамеÑÑÑ Ð´Ð»Ñ Ð²Ñвода: [source, shell] .... -# chflags -R 0 /usr/local/jails/containers/classic +# jls -j classic path host.hostname ip4.addr .... -ТÑеÑий Ñаг â ÑдалиÑÑ ÐºÐ°Ñалог, в коÑоÑом Ð½Ð°Ñ Ð¾Ð´Ð¸Ð»Ð°ÑÑ ÐºÐ»ÐµÑка: +ÐÑвод должен бÑÑÑ Ð¿Ð¾Ñ Ð¾Ð¶ на ÑледÑÑÑий: + +.... +/usr/local/jails/containers/classic classic 192.168.1.151 +.... + +ÐобавÑÑе `-d`, ÑÑÐ¾Ð±Ñ Ð²ÐºÐ»ÑÑиÑÑ ÐºÐ»ÐµÑки, коÑоÑÑе завеÑÑаÑÑ ÑабоÑÑ Ð¸ в пÑоÑивном ÑлÑÑае ÑкÑÑÑÑ, пока Ð½Ð°Ñ Ð¾Ð´ÑÑÑÑ Ð² ÑоÑÑоÑнии завеÑÑениÑ: + +[source, shell] +.... +# jls -d +.... + +[[start-jail]] +=== ÐапÑÑк, пеÑезапÑÑк и оÑÑановка клеÑки + +man:service[8] иÑполÑзÑеÑÑÑ Ð´Ð»Ñ Ð·Ð°Ð¿ÑÑка, пеÑезагÑÑзки или оÑÑановки клеÑки на Ñ Ð¾ÑÑе. + +ÐапÑимеÑ, ÑÑÐ¾Ð±Ñ Ð·Ð°Ð¿ÑÑÑиÑÑ ÐºÐ»ÐµÑкÑ, вÑполниÑе ÑледÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ: + +[source, shell] +.... +# service jail start jailname +.... + +ÐзмениÑе аÑгÑÐ¼ÐµÐ½Ñ `start` на `restart` или `stop`, ÑÑÐ¾Ð±Ñ Ð²ÑполниÑÑ Ð´ÑÑгие дейÑÑÐ²Ð¸Ñ Ñ ÐºÐ»ÐµÑкой. + +ÐÑÑановка клеÑки â ÑÑо не пÑоÑÑо завеÑÑение пÑоÑеÑÑов внÑÑÑи неÑ. Ðогда клеÑка оÑÑанавливаеÑÑÑ, man:jail[8] ÑнаÑала вÑполнÑÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¸Ð· ÐµÑ Ð¿Ð°ÑамеÑÑа `exec.stop` â обÑÑно `/bin/sh /etc/rc.shutdown` â внÑÑÑи клеÑки, ÑÑÐ¾Ð±Ñ ÐµÑ ÑлÑÐ¶Ð±Ñ ÐºÐ¾ÑÑекÑно завеÑÑилиÑÑ. ÐаÑем он оÑпÑавлÑÐµÑ `SIGTERM` вÑем пÑоÑеÑÑам, вÑÑ ÐµÑÑ ÑабоÑаÑÑим в клеÑке, и ждÑÑ Ð´Ð¾ `stop.timeout` ÑекÑнд (по ÑмолÑÐ°Ð½Ð¸Ñ 10) Ð¸Ñ Ð·Ð°Ð²ÐµÑÑениÑ. Ðо иÑÑеÑении ÑÑого вÑемени клеÑка ÑдалÑеÑÑÑ, ÑÑо завеÑÑÐ°ÐµÑ Ð¾ÑÑавÑиеÑÑ Ð¿ÑоÑеÑÑ Ñ Ñигналом `SIGKILL`. ÐÑли `stop.timeout` ÑÑÑановлен в нолÑ, `SIGTERM` не оÑпÑавлÑеÑÑÑ, и клеÑка ÑдалÑеÑÑÑ Ð½ÐµÐ¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾. Рменно поÑÑÐ¾Ð¼Ñ ÐºÐ»ÐµÑка Ñ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾ оÑÑанавливаÑÑимÑÑ Ð´ÐµÐ¼Ð¾Ð½Ð¾Ð¼ Ð¼Ð¾Ð¶ÐµÑ ÐºÐ°Ð·Ð°ÑÑÑÑ Ð·Ð°Ð²Ð¸ÑÑей на деÑÑÑÑ ÑекÑнд пÑи оÑÑановке; ÑвелиÑÑÑе `stop.timeout` в [.filename]#/etc/jail.conf# Ð´Ð»Ñ ÐºÐ»ÐµÑки, в коÑоÑой ÑабоÑÐ°ÐµÑ Ð±Ð°Ð·Ð° даннÑÑ Ð¸Ð»Ð¸ дÑÑÐ³Ð°Ñ ÑлÑжба, ÑÑебÑÑÑÐ°Ñ Ð±Ð¾Ð»ÑÑе вÑемени Ð´Ð»Ñ ÐºÐ¾ÑÑекÑного завеÑÑениÑ. + +[[destroy-jail]] +=== Удаление клеÑки + +Удаление клеÑки, ÑÑо не пÑоÑÑо оÑÑановка клеÑки Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ man:service[8] и Ñдаление каÑалога клеÑки и запиÑи в [.filename]#/etc/jail.conf#. + +FreeBSD оÑÐµÐ½Ñ ÑеÑÑезно оÑноÑиÑÑÑ Ðº безопаÑноÑÑи ÑиÑÑемÑ. Ðо ÑÑой пÑиÑине ÑÑÑеÑÑвÑÑÑ Ð¾Ð¿ÑеделÑннÑе ÑайлÑ, коÑоÑÑе не Ð¼Ð¾Ð¶ÐµÑ ÑдалиÑÑ Ð´Ð°Ð¶Ðµ полÑзоваÑÐµÐ»Ñ root. ÐÑа ÑÑнкÑионалÑноÑÑÑ Ð½Ð°Ð·ÑваеÑÑÑ Ð¤Ð»Ð°Ð³Ð¸ Файлов. РклеÑÐºÐ°Ñ , ÑÑи ÑÐ°Ð¹Ð»Ñ Ð½Ð°Ñ Ð¾Ð´ÑÑÑÑ Ð½Ð° Ñайловой ÑиÑÑеме UFS, ÑÑи Ñлаги Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¾ÑиÑÐµÐ½Ñ Ð´Ð¾ Ñдаление каÑалога клеÑки. + +ÐеÑвÑм Ñагом ÑвлÑеÑÑÑ Ð¾ÑÑановка нÑжной клеÑки Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð²ÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ ÑледÑÑÑей командÑ: + +[source, shell] +.... +# service jail stop classic +.... + +ÐÑоÑой Ñаг â ÑдалиÑÑ ÑÑи Ñлаги Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ man:chflags[1], вÑполнив ÑледÑÑÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ, где `classic` â Ð¸Ð¼Ñ ÑдалÑемой клеÑки: + +[source, shell] +.... +# chflags -R 0 /usr/local/jails/containers/classic +.... + +ТÑеÑий Ñаг â ÑдалиÑÑ ÐºÐ°Ñалог, в коÑоÑом Ð½Ð°Ñ Ð¾Ð´Ð¸Ð»Ð°ÑÑ ÐºÐ»ÐµÑка: [source, shell] .... # rm -rf /usr/local/jails/containers/classic .... -ÐаконеÑ, Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑдалиÑÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð¾ клеÑке в [.filename]#/etc/jail.conf# или в [.filename]#jail.conf.d#. +Ðва Ñага вÑÑе оÑноÑÑÑÑÑ Ðº клеÑке, Ñ ÑанÑÑейÑÑ Ð² Ñайловой ÑиÑÑеме UFS. ÐлеÑка, поддеÑÐ¶Ð¸Ð²Ð°ÐµÐ¼Ð°Ñ ÑобÑÑвеннÑм набоÑом даннÑÑ ZFS â как ÑÐ¾Ð·Ð´Ð°Ð½Ð½Ð°Ñ Ð² crossref:jails[host-configuration-directories,ÐаÑÑÑойка деÑева каÑалогов клеÑки] â ÑдалÑеÑÑÑ Ð²Ð¼ÐµÑÑо ÑÑого пÑÑем ÑниÑÑÐ¾Ð¶ÐµÐ½Ð¸Ñ Ð½Ð°Ð±Ð¾Ñа даннÑÑ . УниÑÑожение набоÑа даннÑÑ Ð½Ðµ блокиÑÑеÑÑÑ ÑайловÑми Ñлагами, поÑÑÐ¾Ð¼Ñ Ñаг Ñ man:chflags[1] в ÑÑом ÑлÑÑае не ÑÑебÑеÑÑÑ: + +[source, shell] +.... +# service jail stop classic +# zfs destroy zroot/jails/containers/classic +.... + +ÐобавÑÑе `-r`, ÑÑÐ¾Ð±Ñ Ñакже ÑниÑÑожиÑÑ Ð»ÑбÑе Ñнимки, коÑоÑÑе Ñ ÑÐ°Ð½Ð¸Ñ Ð½Ð°Ð±Ð¾Ñ Ð´Ð°Ð½Ð½ÑÑ . + +[NOTE] +==== +Ð¢Ð¾Ð½ÐºÐ°Ñ ÐºÐ»ÐµÑка на ZFS, ÑÐ¾Ð·Ð´Ð°Ð½Ð½Ð°Ñ ÐºÐ»Ð¾Ð½Ð¸Ñованием Ñнимка Ñаблона (Ñм. crossref:jails[thin-jail,Тонкие клеÑки]), завиÑÐ¸Ñ Ð¾Ñ ÑÑого Ñнимка. Ðока ÑÑÑеÑÑвÑÐµÑ Ð»Ñбой клон, man:zfs[8] оÑказÑваеÑÑÑ ÑниÑÑожаÑÑ Ñнимок Ñаблона и вÑÐ²Ð¾Ð´Ð¸Ñ ÑпиÑок завиÑимÑÑ ÐºÐ»Ð¾Ð½Ð¾Ð². ЧÑÐ¾Ð±Ñ ÑдалиÑÑ Ñаблон, ÑнаÑала ÑниÑÑожÑÑе каждÑÑ ÐºÐ»ÐµÑкÑ, клониÑованнÑÑ Ð¸Ð· него, или вÑполниÑе `zfs promote` на клоне, ÑÑÐ¾Ð±Ñ Ð¾Ð½ болÑÑе не завиÑел Ð¾Ñ Ñаблона. +==== + +ÐаконеÑ, в лÑбом ÑлÑÑае ÑдалиÑе запиÑÑ ÐºÐ»ÐµÑки в [.filename]#/etc/jail.conf# или в [.filename]#/etc/jail.conf.d#. ÐÐ»Ñ Ñонкой клеÑки NullFS Ñакже ÑдалиÑе ÐµÑ Ñайл [.filename]#.fstab# и ÐµÑ ÑепеÑÑ Ð¿ÑÑÑой каÑалог ÑоÑки монÑиÑованиÑ. [[handle-packages-jail]] === РабоÑа Ñ Ð¿Ð°ÐºÐµÑами в клеÑке @@ -973,6 +1428,21 @@ FreeBSD оÑÐµÐ½Ñ ÑеÑÑезно оÑноÑиÑÑÑ Ðº безопаÑноÑÑ ÐÐ»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑной инÑоÑмаÑии о ÑабоÑе Ñ Ð¿Ð°ÐºÐµÑами в FreeBSD Ñм. crossref:ports[ports,"УÑÑановка пÑиложений: ÐакеÑÑ Ð¸ поÑÑÑ"]. +[[jail-services-host]] +=== УпÑавление ÑлÑжбами в клеÑке Ñ Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ + +СлÑÐ¶Ð±Ñ Ð²Ð½ÑÑÑи клеÑки можно вклÑÑаÑÑ Ð¸ конÑÑолиÑоваÑÑ Ñ Ñ Ð¾ÑÑ-ÑиÑÑемÑ, не Ð·Ð°Ñ Ð¾Ð´Ñ ÑнаÑала в клеÑÐºÑ ÑеÑез man:jexec[8]. Ðак man:service[8], Ñак и man:sysrc[8] пÑинимаÑÑ Ð°ÑгÑÐ¼ÐµÐ½Ñ `-j`, коÑоÑÑй ÑказÑÐ²Ð°ÐµÑ ÑелевÑÑ ÐºÐ»ÐµÑÐºÑ Ð¿Ð¾ ID или имени и ÑабоÑÐ°ÐµÑ Ñ ÐºÐ¾Ð½ÑигÑÑаÑией man:rc[8] ÑÑой клеÑки. + +ÐÑÐ¾Ð´Ð¾Ð»Ð¶Ð°Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ñ Ð¿Ð°ÐºÐµÑами вÑÑе, вклÑÑиÑе и запÑÑÑиÑе nginx в клеÑке `classic` непоÑÑедÑÑвенно Ñ Ñ Ð¾ÑÑ-ÑиÑÑемÑ: + +[source, shell] +.... +# sysrc -j classic nginx_enable=YES +# service -j classic nginx start +.... + +ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð¸Ð¼ÐµÑÑ ÑÐ¾Ñ Ð¶Ðµ ÑÑÑекÑ, ÑÑо и запÑÑк man:sysrc[8] и man:service[8] ÑеÑез man:jexec[8], но они ÑÐ¾Ñ ÑанÑÑÑ ÐµÐ´Ð¸Ð½Ð¾Ð¾Ð±Ñазие админиÑÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ напиÑÐ°Ð½Ð¸Ñ ÑÑенаÑиев на ÑÑоÑоне Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ Ñ ÑиÑÑемой без клеÑок. + [[access-jail]] === ÐоÑÑÑп к клеÑке @@ -985,6 +1455,8 @@ FreeBSD оÑÐµÐ½Ñ ÑеÑÑезно оÑноÑиÑÑÑ Ðº безопаÑноÑÑ # jexec -u root jailname .... +Флаг `-u` вÑбиÑÐ°ÐµÑ Ð¿Ð¾Ð»ÑзоваÑелÑ, Ð¾Ñ Ð¸Ð¼ÐµÐ½Ð¸ коÑоÑого вÑполнÑеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°, ÑазÑеÑÐ°Ñ Ð¸Ð¼Ñ ÑеÑез Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿Ð°Ñолей *Ñ Ð¾ÑÑ-ÑиÑÑемÑ*. ЧÑÐ¾Ð±Ñ ÑазÑеÑиÑÑ Ð¿Ð¾Ð»ÑзоваÑÐµÐ»Ñ ÑеÑез *ÑобÑÑвеннÑÑ* Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð¿Ð°Ñолей клеÑки, иÑполÑзÑйÑе `-U`. ÐÑли команда не задана, как в данном ÑлÑÑае, man:jexec[8] запÑÑÐºÐ°ÐµÑ Ð¾Ð±Ð¾Ð»Ð¾ÑÐºÑ Ð²Ñ Ð¾Ð´Ð° ÑÑого полÑзоваÑÐµÐ»Ñ Ð²Ð½ÑÑÑи клеÑки. ÐобавÑÑе `-l`, ÑÑÐ¾Ð±Ñ Ð·Ð°Ð¿ÑÑÑиÑÑ ÐµÑ Ð² ÑиÑÑой ÑÑеде Ð²Ñ Ð¾Ð´Ð°, ÑÐ¾Ñ ÑанÑÑÑей ÑолÑко `HOME`, `SHELL`, `TERM` и `USER`, ÑбÑаÑÑваÑÑей `PAT H` на [.filename]#/bin:/usr/bin# и ведÑÑей ÑÐµÐ±Ñ ÐºÐ°Ðº новÑй Ð²Ñ Ð¾Ð´; `-d` задаÑÑ ÑабоÑÑÑ Ð´Ð¸ÑекÑоÑиÑ, по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑо коÑÐµÐ½Ñ ÐºÐ»ÐµÑки. + ÐÑи Ð²Ñ Ð¾Ð´Ðµ в клеÑÐºÑ Ð±ÑÐ´ÐµÑ Ð¾ÑобÑажено ÑообÑение, наÑÑÑоенное в man:motd[5]. [[execute-commands-jail]] @@ -999,11 +1471,168 @@ FreeBSD оÑÐµÐ½Ñ ÑеÑÑезно оÑноÑиÑÑÑ Ðº безопаÑноÑÑ # jexec -l jailname service nginx stop .... +[[jail-view-processes]] +=== ÐÑоÑмоÑÑ Ð¿ÑоÑеÑÑов и ÑокеÑов в клеÑÐºÐ°Ñ Ñ Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ + +С Ñ Ð¾ÑÑ-ÑиÑÑÐµÐ¼Ñ Ð¿ÑоÑеÑÑÑ Ð¸ ÑокеÑÑ ÐºÐ°Ð¶Ð´Ð¾Ð¹ клеÑки Ð²Ð¸Ð´Ð½Ñ Ð¸ могÑÑ ÑилÑÑÑоваÑÑÑÑ Ð¿Ð¾ клеÑке. + +man:ps[1] пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ `-J` Ð´Ð»Ñ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ñвоего вÑвода одной клеÑкой, заданной по JID или имени: + +[source, shell] +.... +# ps -J classic +.... + +ÐÑвод должен бÑÑÑ Ð¿Ð¾Ñ Ð¾Ð¶ на ÑледÑÑÑий, где `J` в ÑÑолбÑе `STAT` оÑмеÑÐ°ÐµÑ Ð¿ÑоÑеÑÑ, запÑÑеннÑй в клеÑке: + +.... + PID TT STAT TIME COMMAND +2841 - IsJ 0:00.02 /usr/sbin/syslogd -ss +2903 - IsJ 0:00.00 nginx: master process /usr/local/sbin/nginx +.... + +ÐÑполÑзÑйÑе `ps -J 0`, ÑÑÐ¾Ð±Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑ ÑолÑко пÑоÑеÑÑÑ Ñамой Ñ Ð¾ÑÑ-ÑиÑÑемÑ. ÐлÑÑевÑе Ñлова `jail` и `jid` Ñакже можно добавиÑÑ Ð² ÑоÑÐ¼Ð°Ñ Ð²Ñвода `-o`, ÑÑÐ¾Ð±Ñ Ð¿Ð¾ÐºÐ°Ð·Ð°ÑÑ, к какой клеÑке оÑноÑиÑÑÑ ÐºÐ°Ð¶Ð´Ñй пÑоÑеÑÑ. ÐапÑимеÑ, ÑÑÐ¾Ð±Ñ Ð²ÑвеÑÑи ÑпиÑок вÑÐµÑ Ð¿ÑоÑеÑÑов на Ñ Ð¾ÑÑ-ÑиÑÑеме вмеÑÑе Ñ Ð¸Ñ ÐºÐ»ÐµÑкой: + +[source, shell] +.... +# ps ax -o pid,jail,command +.... + +man:top[1] пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ `-J` Ð´Ð»Ñ ÑилÑÑÑаÑии Ñвоего живого оÑобÑÐ°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ одной клеÑке, ÑÑо подÑазÑÐ¼ÐµÐ²Ð°ÐµÑ `-j` и добавлÑÐµÑ ÑÑÐ¾Ð»Ð±ÐµÑ `JID`: + +[source, shell] +.... +# top -J classic +.... + +man:sockstat[1] вÑÐ²Ð¾Ð´Ð¸Ñ ÑпиÑок ÑокеÑов, пÑинадлежаÑÐ¸Ñ ÐºÐ»ÐµÑке, Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `-j`, ÑÑо ÑвлÑеÑÑÑ ÐµÑÑеÑÑвеннÑм ÑпоÑобом пÑовеÑиÑÑ, какие поÑÑÑ Ð´ÐµÐ¼Ð¾Ð½Ñ ÐºÐ»ÐµÑки ÑакÑиÑеÑки пÑивÑзали поÑле запÑÑка в ней ÑлÑжбÑ: + +[source, shell] +.... +# sockstat -4 -6 -l -j classic +.... + +ÐзнÑÑÑи клеÑки каÑÑина обÑаÑнаÑ: пÑоÑеÑÑ, заклÑÑеннÑй в клеÑкÑ, Ð²Ð¸Ð´Ð¸Ñ ÑолÑко пÑоÑеÑÑÑ Ð¸ ÑокеÑÑ Ñвоей ÑобÑÑвенной клеÑки и никогда не Ð²Ð¸Ð´Ð¸Ñ Ð¿ÑоÑеÑÑÑ Ð¸Ð»Ð¸ ÑокеÑÑ Ñ Ð¾ÑÑа или дÑÑÐ³Ð¸Ñ ÐºÐ»ÐµÑок. + +[[jail-manage-cli]] +=== УпÑавление клеÑками напÑÑмÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑилиÑÑ jail + +ÐÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÑÑе обÑÑÑка man:service[8] â ÑÑо обÑÑнÑй ÑпоÑоб запÑÑка клеÑок пÑи загÑÑзке, но man:jail[8] Ñакже Ð¼Ð¾Ð¶ÐµÑ ÑоздаваÑÑ, изменÑÑÑ Ð¸ ÑдалÑÑÑ ÐºÐ»ÐµÑки напÑÑмÑÑ, ÑÑо полезно Ð´Ð»Ñ Ð½Ð°Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ ÑкÑипÑов и ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð½ÑигÑÑаÑии без ÑÑеймвоÑка rc. + +СоздайÑе наÑÑÑоеннÑÑ ÐºÐ»ÐµÑÐºÑ Ð¿Ð¾ имени: + +[source, shell] +.... +# jail -c classic +.... + +УдалиÑе ÑабоÑаÑÑÑÑ ÐºÐ»ÐµÑкÑ; ÑÑо Ñакже ÑÐ´Ð°Ð»Ð¸Ñ Ð²Ñе доÑеÑние клеÑки, коÑоÑÑе она Ñоздала, и завеÑÑÐ¸Ñ Ð¿ÑоÑеÑÑÑ Ð²Ð½ÑÑÑи неÑ: + +[source, shell] +.... +# jail -r classic +.... + +Флаг `-m` изменÑÐµÑ Ð¿Ð°ÑамеÑÑÑ Ñже запÑÑенной клеÑки без ÐµÑ Ð¿ÐµÑезапÑÑка. ÐапÑимеÑ, ÑÑÐ¾Ð±Ñ Ð´Ð¾Ð±Ð°Ð²Ð¸ÑÑ Ð²ÑоÑой IPv4-адÑÐµÑ Ðº запÑÑенной клеÑке: + +[source, shell] +.... +# jail -m name=classic ip4.addr+=192.168.250.71 +.... + +man:jail[8] оÑмеÑаеÑ, ÑÑо «некоÑоÑÑе паÑамеÑÑÑ Ð½ÐµÐ»ÑÐ·Ñ Ð¸Ð·Ð¼ÐµÐ½Ð¸ÑÑ Ð² ÑабоÑаÑÑей клеÑке»; на пÑакÑике ÑÑо вклÑÑÐ°ÐµÑ `path` и `vnet`, Ð´Ð»Ñ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ ÐºÐ¾ÑоÑÑÑ ÑÑебÑеÑÑÑ Ð¿ÐµÑезапÑÑк клеÑки. + +ÐаконеÑ, `-e` оÑобÑÐ°Ð¶Ð°ÐµÑ Ð²Ñе наÑÑÑоеннÑе не-ÑаблоннÑе клеÑки и Ð¸Ñ Ð¿Ð°ÑамеÑÑÑ Ð±ÐµÐ· ÑозданиÑ, Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ ÑÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñего-либо, ÑÑо Ñдобно Ð´Ð»Ñ Ð¿ÑовеÑки Ñайла конÑигÑÑаÑии. РкаÑеÑÑве аÑгÑменÑа она пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑÑÑокÑ, иÑполÑзÑемÑÑ Ð´Ð»Ñ ÑÐ°Ð·Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¿Ð°ÑамеÑÑов: + +[source, shell] +.... +# jail -e , +.... + +[[jail-backup]] +=== РезеÑвное копиÑование и пеÑÐµÐ½Ð¾Ñ ÐºÐ»ÐµÑки + +ÐлеÑка в знаÑиÑелÑной ÑÑепени ÑамодоÑÑаÑоÑна, поÑÑÐ¾Ð¼Ñ ÐµÑ ÑезеÑвное копиÑование или пеÑÐµÐ½Ð¾Ñ Ð½Ð° дÑÑгой Ñ Ð¾ÑÑ Ð² оÑновном ÑводиÑÑÑ Ðº копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐµÑ Ñайлов и ÐµÑ ÐºÐ¾Ð½ÑигÑÑаÑии. + +ÐÑÑановиÑе клеÑÐºÑ ÑнаÑала Ð´Ð»Ñ Ð¿Ð¾Ð»ÑÑÐµÐ½Ð¸Ñ ÐºÐ¾Ð½ÑиÑÑенÑной копии; клеÑÐºÑ Ð½Ð° оÑнове ZFS можно вмеÑÑо ÑÑого ÑделаÑÑ Ñнимок во вÑÐµÐ¼Ñ ÐµÑ ÑабоÑÑ. ÐÐ»Ñ ÐºÐ»ÐµÑки на ÑобÑÑвенном набоÑе даннÑÑ ZFS вÑполниÑе ÑекÑÑÑивнÑй Ñнимок и пеÑедайÑе его на Ñелевой Ñ Ð¾ÑÑ: + +[source, shell] +.... +# service jail stop classic +# zfs snapshot -r zroot/jails/containers/classic@migrate +# zfs send -R zroot/jails/containers/classic@migrate | ssh newhost zfs receive zroot/jails/containers/classic +.... + +ÐÐ¾Ð»Ð½Ð°Ñ Ð¼ÐµÑ Ð°Ð½Ð¸ÐºÐ° man:zfs-send[8] и man:zfs-receive[8], вклÑÑÐ°Ñ Ð¸Ð½ÐºÑеменÑалÑнÑе пеÑедаÑи, опиÑана в crossref:zfs[zfs-zfs-send,РепликаÑиÑ]. + +ÐÐ»Ñ ÐºÐ»ÐµÑки на Ñайловой ÑиÑÑеме UFS иÑполÑзÑйÑе man:tar[1] Ñ Ð¾Ð¿Ñией `-p`, ÑÑÐ¾Ð±Ñ ÑÐ¾Ñ ÑаниÑÑ Ð²Ð»Ð°Ð´ÐµÐ»ÑÑа, пÑава доÑÑÑпа и Ñлаги Ñайлов: + +[source, shell] +.... +# tar -cpf classic.tar -C /usr/local/jails/containers classic +.... + +ÐзвлекиÑе аÑÑ Ð¸Ð² как `root` на Ñелевой ÑиÑÑеме Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ `tar -xpf`, ÑÑÐ¾Ð±Ñ ÑÐ¾Ñ ÑанилиÑÑ Ñлаги. man:dump[8] и man:restore[8] ÑвлÑÑÑÑÑ Ð°Ð»ÑÑеÑнаÑивой, когда клеÑка Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð²ÑделеннÑÑ ÑайловÑÑ ÑиÑÑÐµÐ¼Ñ UFS; они ÑабоÑаÑÑ Ñ ÑелÑми ÑайловÑми ÑиÑÑемами, поÑÑÐ¾Ð¼Ñ Ð½Ðµ пÑÐ¸Ð¼ÐµÐ½Ð¸Ð¼Ñ Ðº ÑÑÑÑкÑÑÑе, иÑполÑзÑемой в ÑÑой главе, где вÑе клеÑки ÑвлÑÑÑÑÑ ÐºÐ°Ñалогами в одной обÑей Ñайловой ÑиÑÑеме. + +ÐаконеÑ, ÑкопиÑÑйÑе блок ÑÑÑок, оÑноÑÑÑÐ¸Ñ ÑÑ Ðº клеÑке, из [.filename]#/etc/jail.conf# â или его Ñайл в [.filename]#/etc/jail.conf.d# â на новÑй Ñ Ð¾ÑÑ, наÑÑÑойÑе лÑбÑе паÑамеÑÑÑ, ÑпеÑиÑиÑнÑе Ð´Ð»Ñ Ñ Ð¾ÑÑа, Ñакие как `interface`, `ip4.addr` или моÑÑ, иÑполÑзÑемÑй клеÑкой VNET, и запÑÑÑиÑе клеÑÐºÑ Ñам. + +[CAUTION] +==== +Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ñ Ð¾ÑÑ-ÑиÑÑема не должна запÑÑкаÑÑ Ð±Ð¾Ð»ÐµÐµ ÑÑаÑÑÑ Ð²ÐµÑÑÐ¸Ñ FreeBSD, Ñем полÑзоваÑелÑÑкое окÑÑжение клеÑки, ÑледÑÑ ÑÐ¾Ð¼Ñ Ð¶Ðµ пÑавилÑ, ÑÑо клеÑка никогда не Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑ Ð±Ð¾Ð»ÐµÐµ новÑÑ Ð²ÐµÑÑиÑ, Ñем ÐµÑ Ñ Ð¾ÑÑ-ÑиÑÑема. Ð¢Ð¾Ð½ÐºÐ°Ñ ÐºÐ»ÐµÑка на NullFS не ÑвлÑеÑÑÑ Ð°Ð²Ñономной: ÐµÑ Ñаблон и ÑÐºÐµÐ»ÐµÑ Ñакже Ð´Ð¾Ð»Ð¶Ð½Ñ ÑÑÑеÑÑвоваÑÑ Ð½Ð° Ñелевой Ñ Ð¾ÑÑ-ÑиÑÑеме, поÑÑÐ¾Ð¼Ñ Ð¿ÐµÑенеÑиÑе и Ð¸Ñ , или ÑнаÑала пÑеобÑазÑйÑе клеÑÐºÑ Ð² ÑолÑÑÑÑ ÐºÐ¾Ð¿Ð¸Ñ. ÐÑбÑе пÑавила man:rctl[8], Ñ ÑанÑÑиеÑÑ Ð² [.filename ]#/etc/rctl.conf#, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿ÐµÑенеÑÐµÐ½Ñ Ð¾ÑделÑно. +==== + +[[jail-inside]] +== ÐдминиÑÑÑиÑование изнÑÑÑи клеÑки *** 7839 LINES SKIPPED ***