Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
||||||||||||||||
www.lissyara.su
—> статьи
—> FreeBSD
|
|
Ну и запускаем его:
|
Понеслась. Пока он собирает мир, готовимся - надо на родительской машине (реальной) завести альясы для клеток - у каждой клетки должен быть свой IP адрес. Добавляем в /etc/rc.conf такие строки:
|
Заставляем работать sshd на одном адресе:
|
Вешаем syslogd на тот же адрес:
|
После чего, если мир дособирался и проинсталлился (у меня ушло часа три-четыре), перезагружаем машину - можно и без перезагрузки, но с ней надёжней - вылезут все возможные ошибки. До перезагрузки у меня было так:
|
Ну а после стало так:
|
Проверяем, все ли альясы подцепились:
|
Создаём в клетке пусой файл /etc/fstab
|
Создаём в ней файл /usr/local/jails/jail_test/etc/resolv.conf такого содержания:
|
Добавляем в файл /usr/local/jails/jail_test/etc/rc.conf такие строки (если там нужны эти демоны)
|
Затем на родительской машине добавляем такие строки в /etc/rc.conf
|
Затем заводим пользователя и даём руту в клетке пароль, для этого входим в клетку:
|
И заводим пользователя командой useradd. Не забываем задать пароль для рута. Выходим из клетки командой exit, и можно запускать:
|
Запуск может занять много времени (минут 5), т.к. sshd генерит ключи. Последующие запуски будут гораздо быстрей. Для ускорения, можно положить свои ключи, с реального хоста.
C клеткой можно работать точно также как и с реальной машиной - ставить приложения, запускать. Едиственое что - на -реальной машине, при установке любых приложений нужно не забывать вешать их на тот IP адрес который ей принадлеит - большинство приложений по дефолту слушают все адреса. Работает всё точно также шустро как и на реальной машине.
размещено: 2006-08-10,
последнее обновление: 2007-01-17,
автор: lissyara
Abigor, 2006-08-10 в 14:08:26
хорошоя статья, можно сказать man jail только RU вариант. у меня в jail вертится web хотинг, так как большая часть сайтов дырявая. боротся с этим смысла нет так как это можно сказать сервер для homepages единственное что я бы добавил, а квотирования места на диске. я это сделал вот так
dd if=/dev/zero of=jail_fs bs=1024 8388608 (это в килобайтах)
а потом
mdconfig -a -t vnode -f jail_fs -u 0
tunefs -n enable /dev/md0
mount /dev/md0 /var/www_web/jail
ну и ставим в /var/www_web/jail если кому надо поделючь стартовым скриптом чтоб монтировать так fs
Abigor, 2006-08-16 в 14:31:01
Расскажи как пользоваться вот этим
#jail_example_fstab="" # fstab(5) for mount/umount
было бы интересно
Key, 2006-09-19 в 17:31:02
У меня на сервере три сетевых интерфейса: fxp0, bge0, bge1 - настроен fxp0, на нем же алиасы для jails, имеем:
# /etc/rc.d/jail start test
Configuring jails:.
Starting jails:ifconfig:interface aliasdoes not exist
test.local
#
Почитал man jail и нашел советы добавить в /etc/rc.conf jail'ла следующие строки:
rpcbind_enable="NO" # отключить портмаппер
network_interfaces="" # отключать конфигурацию интерфейсов для подавления стартовых ошибок об ifconfig(8)
Сделал - не помогло, по-прежнему созерцал ругательства ifconfig. Полез в /etc/rc.d/jail и нашел там опцию "jail_${_j}_interface". Чтож, пишем в /etc/rc.conf ко всему прочему:
jail_test_interface="fxp0" # интерфейс, на котором алиасы для jail
Заработало. Не ругается )
И не забудьте установить временную зону в jail перед установкой портов ;)
Lupus, 2006-11-09 в 13:53:35
make world DESTDIR=${jail_dir}
Здесь надо добавить > cd etc
make distribution DESTDIR=${jail_dir}
pym, 2006-12-19 в 0:57:02
думал, алиасы должны иметь разные маски..
lissyara, 2006-12-19 в 8:31:24
Смотря на какой версии FreeBSD.
Например, на 4.11 с такими масками бы не прокатило. Пришлось бы забивать 255.255.255.255. Шестёрка и так и так понимает.
AirKing, 2007-01-17 в 18:47:36
Товарищщи!
Клетку создал без проблем, а как ее удалить, у меня много файлов не удаляются. хотя удаляю рутом с основной машины.
lissyara, 2007-01-17 в 22:11:24
man chflags
maslivets, 2007-04-09 в 18:47:57
Было бы не плохо добавить сюда практическое использования jail.
Хотя бы на примере ВЕБ-сервера (Apache+PHP+MySQL).
Ну и бекап/рековер jail.
Vitaly, 2007-04-12 в 13:42:19
у меня в jail крутится exim+dovecot+dspam+mysql+Apache+PHP - почта на пару десятков пользователей. и неплохо так крутится ;) только вот чтоб рестартонуть jail приходится ребутить машину полностью - если делать через /etc/rc.d/jail restart - то в jls показывает что у тебя 2 клетки вместо одной запущено - хотя реально запущена одна. это немного нервирует - хотя даже и так глюков замечено небыло
Vitaly, 2007-04-12 в 13:45:28
бэкап делается элементарно
/etc/rc.d/jail stop и потом tar'ум со сжатием и не забываем об опции -p в tar ;) при распаковке -р тоже пригодится ;)
maslivets, 2007-04-14 в 3:52:46
Очень много времени потратил на поиск того как свзяать две клетки... т.е. допустим на одном (jail#1) крутится MySQL с опцией (skip-networking), а на втором (jail#2) Apache+PHP и сюда нажо как то пеместить /tmp/mysql.sock
Вроде как задача решается "ln /jail#1/tmp/mysql.sock /jail#2/tmp/mysql.sock" но вот стартовать этот скрипт необходимо только после старта первого jail#1.
Пришлось лезть в /etc/rc.d/jail и редактировать его. А имено процедурки Jail_start() и Jail_stop(). Причем таким образом, что в начале процедуры Jail_start() прописать "rm /jail#2/tmp/mysql.sock" [на случай если кто, то задел кнопку рестарта (:] а в конце "ln /jail#1/tmp/mysql.sock /jail#2/tmp/mysql.sock", а в процедуре Jail_stop() точней в конеце ее "rm /jail#2/tmp/mysql.sock".
Могу еще заметить, что для компиляции PHP в jail#2 пришлось с портов качать клинет для MySQL он весит порядка 800К хотя вероятно есть более простые варианты.
Askel, 2007-06-18 в 15:53:17
А mkdir -p ${jail_dir} после jail_dir="$1" можно и убрать
ipfw, 2007-09-07 в 10:22:15
Чтобы не править sshd_config можно ограничиться правкой rc.conf
sshd_flags="-o ListenAddress=192.168.0.1"
cj_nik, 2007-10-08 в 22:06:47
Жаль только им роуты разные нельзя задавать... defaultroute :(
Или я что-то недопонял?
cj_nik, 2007-10-09 в 14:33:32
> В клетке всё как вреальной машине, за тем исключением, что не работают сетевые приложения которым нужен прямой доступ к сетевым сокетам (например ping)
ну можно включить чтобы работали ыерез sysctrl.
а вот роуты, чёрт я так надеялся... :(
Александр, 2007-11-13 в 16:28:33
Насколько понял для каждого Jail окружения нужен свой IP адрес, а как быть если у меня несколько окружений (BIND, Web, MailRelay) а нужно что бы все это сверьё на одном IP слушало.
Александр, 2007-11-13 в 16:33:10
> В клетке всё как вреальной машине, за тем исключением, что не работают сетевые приложения которым нужен прямой доступ к сетевым сокетам (например ping)
ну можно включить чтобы работали ыерез sysctrl.
а вот роуты, чёрт я так надеялся... :(
Подробностей пожалуйста или ссылку плз.
cj_nik, 2007-12-18 в 15:37:48
>> Подробностей пожалуйста или ссылку плз.
Подробности чего?
Роуты мне нужн ыбыли разные для jail и для реальной машины, типа как в виртуальной машине.
хотел несоклько squid рассадить по jail-сам и у каждого свой defaultrouter но надо было почитать сначала :)
Spank, 2008-01-15 в 19:47:13
имхо лучше ezjail использоветь, много головной боли пропадает. У мну на нем поднято www 3 клетки, в одной из которых висят cacti и мониторят все что попало. На другой машине в разных клетках verlihub,icecast,dns,asterisk,games(cs-1.6,quake,batlenet) Фсе работает просто супер.
Что бы включть ping и прочее в /etc/sysctl.conf пишем строку security.jail.allow_raw_sockets=1 . Если кому нужно напишу как использовать ezjail...
vadiko, 2008-01-16 в 22:16:48
2 Spank. Ну так ждемс от Вас статеечку с коментариями: мол тут bla-bla-bla и тут bla-bla-bla головняка много меньше, и т.д. ЗЫ: слышал лестное о ezjail, интересненько...
paix, 2008-01-18 в 22:13:27
Да нечего там использовать...просто все как 5 копеек, все по ману практически.
ezjail-admin install
ezjail-admin create -r /jails/web12 web12.test.org 10.0.1.12
/usr/local/etc/rc.d/ezjail.sh start web12.test.org
все джаил поднят и работает.
paix, 2008-01-18 в 22:16:01
Первый раз, правда, рекомендую установить руками дабы пронаблюдать и понять процесс. Дальше ezjail. Сэкономите много времени и нервов.
L00p, 2008-04-22 в 14:31:11
хорошая статья, всё поднялось очень быстро. поднимал на 7.0 amd64 ветке, ( (тут надо учесть что в ней убрали все mount_* и команда "mount_devfs devfs ${jail_dir}/dev" будет выглядеть как "mount -t devfs devfs ${jail_dir}/dev") ещё пришлось отказаться от ntpd в общей системе, который как оказалось слушает все интерфейсы. хотя можно было порыться в исходниках, да лень:)
paix, 2008-04-22 в 18:26:19
openntpd умеет не слушать все интерфейсы.
PS. сегодня апдейтил 6х->7х, соотвественно в джайлах тоже пришлось мир апдейтить. Еще раз порадовался ezjail :) такая вот реклама ))
tr, 2008-05-18 в 11:53:54
Создаём в клетке пусой файл /etc/fstab
Лис, не "пусой", а "пустой"! Букву упустил.
mrali, 2008-07-14 в 21:10:14
/usr/home/lissyara/>jail /usr/local/jails/jail_test/ test 192.168.0.201 /bin/csh
можно заменить на jexec JID
JID легко узнать командой jls
Тест, 2008-12-06 в 18:54:37
Товарищщи! Это поля для ввода комментариев к статье, а не для вопросов. Сюда пишите найденные баги, или какие-то фичи :)
Для вопросов есть форум!
Askel, 2008-12-11 в 19:05:13
А разве когда прописываются алиасы из той же подсети, не /32 используется. Что-то память моя говорит, где-то в хенбуке читал
Sukinsky, 2009-01-21 в 9:36:24
В продолжение комментария maslivets, 2007-04-14 в 3:52:46
Можно проще связать две клетки без симлинков и правки скриптов.
Подмонтировать можно как папки из основной системы, так и папки разных клеток. Само собой монтировать надо от рута в основной системе.
В этом примере юникс-сокет mysql из клетки с БД будет доступен в клетке с веб-сервером:
mount_nullfs /var/jails/mysql/var/run/mysqld/ /var/nginx/var/www/mysql/
Sukinsky, 2009-01-23 в 11:01:40
И еще. если конструкция сверху не заработала, например, mysql не соединяется через юникс-сокет (ошибка 61), следует внести пару строк в исходник и пересобрать ядро :)
-— null_subr_old.c
+++ null_subr.c
@@ -247,6 +247,8 @@
xp->null_vnode = vp;
xp->null_lowervp = lowervp;
vp->v_type = lowervp->v_type;
+ if (vp->v_type == VSOCK || vp->v_type == VFIFO)
+ vp->v_un = lowervp->v_un;
vp->v_data = xp;
vp->v_vnlock = lowervp->v_vnlock;
if (vp->v_vnlock == NULL)
Askel, 2009-02-13 в 9:56:15
Для 7 ветки, правильнее будет (man jail)
make world DESTDIR=${jail_dir}
make distribution DESTDIR=${jail_dir}
mount -t devfs devfs ${jail_dir}/dev
Yukh, 2009-02-25 в 19:37:48
Небольшое уточнение.
Alias-ы немного не так должны выглядеть. Нельзя на один интерфейс повесить несколько адресов из одной сети. Поэтому:
НЕ:
# IP реальной машины
ifconfig_ed0="inet 192.168.0.200 netmask 255.255.255.0"
# альяс для первого jail`a
ifconfig_ed0_alias0="inet 192.168.0.201 netmask 255.255.255.0"
А:
# IP реальной машины
ifconfig_ed0="inet 192.168.0.200 netmask 255.255.255.0"
# альяс для первого jail`a
ifconfig_ed0_alias0="inet 192.168.0.201 netmask 255.255.255.255"
Проверил на себе - работает, в отличие от варианта указанного в статье.
lissyara, 2009-02-25 в 19:57:11
Для версии ОС указанной в статье - всё работало именно так.
Yukh, 2009-02-25 в 20:08:20
Странно, как то давно пытался поднять несколько адресов из одной сети на одном интерфейсе - система упорно ругалась и отказывалась работать с этими адресами.
igor, 2009-03-17 в 2:17:05
когда-то давно я глядя на mod_chroot сделал mod_jail (он есть в портах), но он имел недостатки, например, не мог перечитать конфиги (apachectl graceful). Недавно, начиная с версии 2.2.10, в apache появилась встроенная поддержка chroot, его логика работы отличается от mod_chroot - чрутится каждый child отдельно. Я чуток переписал под jail, патч и порт здесь.
FOX, 2009-04-27 в 0:57:07
Добрый вечер ребята обяснити что такое jail для чего он надо? ПРосто что то я не вкурю!) Спасибо за внимание!)
amd_miek, 2009-05-22 в 13:37:23
А мне вот что интересно, а нельзя ли как-нибудь справиться с проблемами слушания различными демонами на всех портах средствами файрволов, например просто перенаправлять запросы или какой нибудь SNAT применять?
neotkm, 2009-10-14 в 2:52:52
to amd_miek
Проблема в том что демон биндит порт монопольно, соответственно другие попытки его занять будут без успешны. Так что фаерволы-наты тут не помогут.
FreeBSP, 2009-12-22 в 14:07:45
маленькое замечание по скрипту
mkdir -p ${jail_dir}
cd /usr/src
mkdir -p ${jail_dir}
зачем дважды создавать одну и ту же папку? ))
nemilen, 2010-01-08 в 21:54:54
Abigor - мудак.
Диск для джейла создается следующим образом:
#Создаем файл с ноликами объемом в 2Гб
dd if=/dev/zero of=fs_jail1 bs=1M count=2048
#Аттачим файл к /dev/md0 (для md1 нужно указывать -u 1)
mdconfig -a -t vnode -f fs_jail1 -u 0
#Создаем файловую систему на диске (UFS)
newfs md0
#Создаем папку и маунтим диск
mkdir /jails/host.ru
mount /dev/md0 /jails/host.ru
Затем создаем джейл в этой папке и запускаем
ezjail-admin create host.ru 10.0.0.100
В итоге получится такая картина
# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/md0 1.9G 1.9M 1.8G 0% /
Увеличивать квоту, видимо, придется через dd.
evafobia, 2010-01-31 в 13:24:02
>>Затем заводим пользователя и даём руту в клетке >>пароль, для этого входим в клетку:
Зачем входить в клетку?
Проще использовать jexec [jail_pid] adduser
Для этого jexec и создан.
gonzo111, 2010-06-17 в 12:41:51
Чтоб не сильно грузить сервак при сборки портов
лучше писать nice -10 make portupgrade
а в клетке nice -10 jexec -u root 1 portupgrade
Blitzkrieg, 2010-10-07 в 23:39:30
А что мешает не делать алиас на интерфейс, а при запуске джейла задать ip адрес основной системы?
Я так сделал, все пашет. При этом поднявшийся sshd в джейле отвечал при подключении, а не sshd родительской системы.
И вопрос: как из основной системы сунуть сокет от mysql, нульфс не проканало, при тыкании в сокет телнетом пишет коннекшн рефьюз.
iZEN, 2011-08-11 в 11:57:33
Вот тут http://myfreebsd.ru/other/sozdanie-jail-v-freebsd-8-0
разобраны примеры для 8.x версии FreeBSD.
ttys, 2011-10-19 в 21:04:58
всё равно как то криво работает, апач становится отказался пхп тоже, может из за того что всё на zfs крутится, хз. но вот с ezjail всё заработало
http://dreamcatcher.ru
fox, 2011-10-19 в 21:46:51
Да с jail не когда проблем не было! Это может угол кривизны рук играет роль?
ttys, 2011-10-20 в 7:15:43
хз глюк именно в сборке из портов - их через нуллфс подмапил сам хост zfs + gpt
2 fox а по поводу кривизны и тд:
если есть чё по делу то говори, а тролить можешь на ЛОРе
fox, 2011-10-20 в 11:07:47
Да я не тролю. Просто я не вижу проблемы если приблизительно действовать по статье то всё ок! насчёт портов, у БСД такое бывает иногда как например несовместимость зависемостей, но проходит день другой и всё становится на круги свои...
ttys, 2011-10-20 в 19:47:54
с ezjail всё отлично =)
romko, 2011-12-22 в 10:45:44
товарищи, помогите вот с чем. есть 2 внешних ипа в разных диапазонах с разными шлюзами соответсвенно. в основной системе один, а в клетке хочу другой, как сделать, будет ли работать если я присвою клетке второй ip и в rc.conf (в jail) укажу нужный defaultrouter ?
fox, 2011-12-22 в 21:26:25
Я думаю без танцев с бубном и fwd не обойтись) Или route править прейдётся...
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [52 шт.]