<<< Headline | Index | http | bash | basics | x11 | net | vpn | humor | sles | cXX | php | db | perl | soft | unsorted | hw | ppp | tips | linux | fbsd | mail
[Timeline] [View Photos] [rtfm] [Search] [Index by Title] [Index by Date]
FreeBSD Documentation: ezjail: == post:fbsd/posts/ezjail


  Пример работы с jail
From:    <unknown@kirgudu.org>
Subject:        Note!
Created:        08.09.2009 01:02:09

Просьба завести для проекта clientstorage тестовые jails:
clientstorage.beta.dev.x99.ru
clientstorage.stage.dev.x99.ru
на main1.dev по аналогии с тем как это сделано для ivrstat и
callobserver (чтобы работало пересоздание через скрипт
/root/bin/make_jail.sh)

Также для этих доменов просьба сгенерировать сертификаты для
ssl. Выложить можно в srv5.test:/home/amashanov/certs

Выясняем свободные IP:
[root@main1 ~]#  ezjail-admin list
STA JID   IP              Hostname                     Root Directory
--- ----- --------------- ---------------------------- -------------------------
DSN N/A   10.12.2.20      vvatlin.dev.x99.ru    /jails/vvatlin.dev.x99.ru
DR  1     10.12.2.18      test1.dev.x99.ru      /jails/test1.dev.x99.ru
DR  2     10.12.2.27      support.stage.dev.x99.ru /jails/support.stage.dev.x99.ru
DR  3     10.12.2.26      support.beta.dev.x99.ru /jails/support.beta.dev.x99.ru
DSN N/A   10.10.13.37     stat2.akriventsov.int.test.x99.ru /jails/stat2.akriventsov.int.test.x99.ru
DR  4     10.12.2.7       srv1.dev.x99.ru       /jails/srv1.dev.x99.ru
DSN N/A   10.12.2.22      net2ftp.akriventsov.dev.x99.ru /jails/net2ftp.akriventsov.dev.x99.ru
DSN N/A   10.12.2.15      jail2.aabdulin.dev.x99.ru /jails/jail2.aabdulin.dev.x99.ru
DR  5     10.12.2.19      jail1.amashanov.dev.x99.ru /jails/jail1.amashanov.dev.x99.ru
DSN N/A   10.12.2.14      jail1.aabdulin.dev.x99.ru /jails/jail1.aabdulin.dev.x99.ru
DR  6     10.12.2.25      ivr.stage.dev.x99.ru  /jails/ivr.stage.dev.x99.ru
DR  7     10.12.2.24      ivr.beta.dev.x99.ru   /jails/ivr.beta.dev.x99.ru
DR  8     10.12.2.30      install.tderbysheva.dev.x99.ru /jails/install.tderbysheva.dev.x99.ru
DR  9     10.12.2.23      dstest1.akriventsov.dev.x99.ru /jails/dstest1.akriventsov.dev.x99.ru
DR  10    10.12.2.31      desktop.akriventsov.dev.x99.ru /jails/desktop.akriventsov.dev.x99.ru
DR  14    10.12.2.29      callobserver.stage.dev.x99.ru /jails/callobserver.stage.dev.x99.ru
DR  12    10.12.2.28      callobserver.beta.dev.x99.ru /jails/callobserver.beta.dev.x99.ru
DSN N/A   10.12.2.21      builder.akriventsov.dev.x99.ru /jails/builder.akriventsov.dev.x99.ru
DR  13    10.12.2.8       amashanov.dev.x99.ru  /jails/amashanov.dev.x99.ru
DSN N/A   10.10.13.33     akriventsov.int.test.x99.ru /jails/akriventsov.int.test.x99.ru
Видим что джейлы строятся в сети 10.12.2.0/24
[john@hq3 ~]$ ssh ldapctl.dev.vega.ru
Enter passphrase for key '/usr/home/john/.ssh/id_rsa': 
Last login: Tue Aug 25 05:55:42 2009 from 10.10.65.203
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.

FreeBSD 7.1-PRERELEASE-20090101 (GENERIC) #0: Thu Jan  1 01:14:17 UTC 2009


[john@ldapctl ~]$ ldap_ctl --allocate 'ip-address' --network 10.12.2.0-10.12.2.255
Password: 
Available variants count: 210
10.12.2.35, 10.12.2.46-10.12.2.254
В этой сети свободны 10.12.2.46 и 10.12.2.47. Добавляем их.
   14  ifconfig vlan102 inet 10.12.2.46/32 alias
   15  ifconfig 
   16  ifconfig vlan102 inet 10.12.2.47/32 alias

[root@main1 ~]# ifconfig 
em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:02:b3:e9:f0:9a
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
fxp0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=219b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,WOL_MAGIC>
        ether 00:02:b3:e9:f0:9b
        media: Ethernet autoselect (none)
        status: no carrier
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 
        inet6 ::1 prefixlen 128 
        inet 127.0.0.1 netmask 0xff000000 
vlan102: flags=9843<UP,BROADCAST,RUNNING,SIMPLEX,LINK0,MULTICAST> metric 0 mtu 1500
        options=3<RXCSUM,TXCSUM>
        ether 00:02:b3:e9:f0:9a
        inet 10.12.2.4 netmask 0xffffff00 broadcast 10.12.2.255
        inet 10.12.2.18 netmask 0xffffffff broadcast 10.12.2.18
        inet 10.12.2.27 netmask 0xffffffff broadcast 10.12.2.27
        inet 10.12.2.26 netmask 0xffffffff broadcast 10.12.2.26
        inet 10.12.2.7 netmask 0xffffffff broadcast 10.12.2.7
        inet 10.12.2.19 netmask 0xffffffff broadcast 10.12.2.19
        inet 10.12.2.25 netmask 0xffffffff broadcast 10.12.2.25
        inet 10.12.2.24 netmask 0xffffffff broadcast 10.12.2.24
        inet 10.12.2.30 netmask 0xffffffff broadcast 10.12.2.30
        inet 10.12.2.23 netmask 0xffffffff broadcast 10.12.2.23
        inet 10.12.2.31 netmask 0xffffffff broadcast 10.12.2.31
        inet 10.12.2.28 netmask 0xffffffff broadcast 10.12.2.28
        inet 10.12.2.8 netmask 0xffffffff broadcast 10.12.2.8
        inet 10.12.2.29 netmask 0xffffffff broadcast 10.12.2.29
        inet 10.12.2.46 netmask 0xffffffff broadcast 10.12.2.46
        inet 10.12.2.47 netmask 0xffffffff broadcast 10.12.2.47
        media: Ethernet autoselect (100baseTX <full-duplex>)
        status: active
        vlan: 102 parent interface: em0
pflog0: flags=141<UP,RUNNING,PROMISC> metric 0 mtu 33204
   
   17  ezjail-admin create clientstorage.stage.dev.x99.ru 10.12.2.46
   23* ezjail-admin create clientstorage.beta.dev.x99.ru 10.12.2.48
   25  ezjail-admin start clientstorage.beta.dev.x99.ru
   26  ezjail-admin start clientstorage.stage.dev.x99.ru
   27  ezjail-admin console clientstorage.stage.dev.x99.ru
   28  ezjail-admin console clientstorage.beta.dev.x99.ru
	
если jail уже создан его можно удалить либо создать снова если каталог не удален
   18  ezjail-admin create -x clientstorage.stage.dev.x99.ru 10.12.2.46
   22  ezjail-admin delete clientstorage.beta.dev.x99.ru
дополнительно нужно завести 2 записи в днс в зоне dev.x99.ru.
[root@main1 ~]#  ezjail-admin list
STA JID   IP              Hostname                     Root Directory
--- ----- --------------- ---------------------------- -------------------------
DSN N/A   10.12.2.20      vvatlin.dev.x99.ru    /jails/vvatlin.dev.x99.ru
DR  1     10.12.2.18      test1.dev.x99.ru      /jails/test1.dev.x99.ru
DR  2     10.12.2.27      support.stage.dev.x99.ru /jails/support.stage.dev.x99.ru
DR  3     10.12.2.26      support.beta.dev.x99.ru /jails/support.beta.dev.x99.ru
DSN N/A   10.10.13.37     stat2.akriventsov.int.test.x99.ru /jails/stat2.akriventsov.int.test.x99.ru
DR  4     10.12.2.7       srv1.dev.x99.ru       /jails/srv1.dev.x99.ru
DSN N/A   10.12.2.22      net2ftp.akriventsov.dev.x99.ru /jails/net2ftp.akriventsov.dev.x99.ru
DSN N/A   10.12.2.15      jail2.aabdulin.dev.x99.ru /jails/jail2.aabdulin.dev.x99.ru
DR  5     10.12.2.19      jail1.amashanov.dev.x99.ru /jails/jail1.amashanov.dev.x99.ru
DSN N/A   10.12.2.14      jail1.aabdulin.dev.x99.ru /jails/jail1.aabdulin.dev.x99.ru
DR  6     10.12.2.25      ivr.stage.dev.x99.ru  /jails/ivr.stage.dev.x99.ru
DR  7     10.12.2.24      ivr.beta.dev.x99.ru   /jails/ivr.beta.dev.x99.ru
DR  8     10.12.2.30      install.tderbysheva.dev.x99.ru /jails/install.tderbysheva.dev.x99.ru
DR  9     10.12.2.23      dstest1.akriventsov.dev.x99.ru /jails/dstest1.akriventsov.dev.x99.ru
DR  10    10.12.2.31      desktop.akriventsov.dev.x99.ru /jails/desktop.akriventsov.dev.x99.ru
DR  16    10.12.2.46      clientstorage.stage.dev.x99.ru /jails/clientstorage.stage.dev.x99.ru
DR  15    10.12.2.47      clientstorage.beta.dev.x99.ru /jails/clientstorage.beta.dev.x99.ru
DR  14    10.12.2.29      callobserver.stage.dev.x99.ru /jails/callobserver.stage.dev.x99.ru
DR  12    10.12.2.28      callobserver.beta.dev.x99.ru /jails/callobserver.beta.dev.x99.ru
DSN N/A   10.12.2.21      builder.akriventsov.dev.x99.ru /jails/builder.akriventsov.dev.x99.ru
DR  13    10.12.2.8       amashanov.dev.x99.ru  /jails/amashanov.dev.x99.ru
DSN N/A   10.10.13.33     akriventsov.int.test.x99.ru /jails/akriventsov.int.test.x99.ru

  Подробности
Зададимся вопросом - как, используя сервер на базе FreeBSD, получить несколько независимых окружений, в народе называемых jail? Например, как использовать одну из jail для почтового сервера, а вторую для web-сервера, при этом каждая jail должна иметь собственный IP-адрес?

Каждая jail на FreeBSD имеет собственные файлы, процессы и учетные записи. Находясь внутри, практически невозможно отличить jail от реальной системы. Самым простым способом определения, создания и модифицирования jail является использование среды ezjail.

Внимание! Сетевые демоны, перед использованием jail, должны быть сконфигурированы на использование адреса 127.0.0.1 или на работу с адресом интерфейса. По крайней мере, это необходимо сделать со службами sshd и syslogd.


  Вводные данные

    * * server.nixcraft.net.in : FreeBSD host server running v7.2 with 202.54.1
    * * smtpd.nixcraft.net.in : Mail server jail with 202.54.1
    * * httpd.nixcraft.net.in : Web server jail with 202.54.1.4

  Шаг 1: Обновляем корневую систему

Убедитесь в том, что ваша система достаточно актуальна. Руководство по обновлению системы вы можете найти здесь.

  Шаг 2: Устанавливаем ezjail

Для установки ezjail выполните нижеприведенные команды. Таким образом, мы получим два скрипта, позволяющие нам более просто управлять жизненным циклом jail.
    # cd /usr/ports/sysutils/ezjail
    # make install clean
Расположение файлов ezjail по умолчанию:
1. /usr/jails/ каталог размещения шаблонов jail.
2. /usr/jails/flavours/ настройка каждой jail может быть выполнена через flavours. Служит для того чтобы, например, добавить значение по умолчанию в файл /etc/resolv.conf или обновить существующий файл /etc/make.conf
3. /usr/jails/basejail/ базовая система jail, которая монтируется в режиме &#8220;read only” и является одинаковой для всех jail, что позволяет сэкономить место на жестком диске.
4. /usr/local/etc/rc.d/ezjail.sh скрипты Stop/Start/Restart
5. /usr/local/etc/ezjail.conf конфигурационный файл ezjail, который содержит настройки для rc скрипта. Таже данный файл может быть просмотрен командой ezjail-admin.
6. /usr/local/etc/ezjail/ все файлы конфигурации ваших jail хранятся здесь

  Шаг 3: Создаем базовый шаблон jail

Для создания или обновления окружения ezjail (aka basejail) из исходных текстов, выполните следующую команду:
    # ezjail-admin update -p -i
Где:

    * * -p : Provide ports for jail
    * * -i : не запускать &#8220;make world”.
Если у вас нет /usr/src и вы никогда не запускали make world, вы можете установить шаблон с ftp сервера, используя утилиту ezjail-admin:
    # ezjail-admin install

  Шаг 4: Создаем SMTPD Mail Server Jail

Для создания jail smtpd.nixcraft.net.in с адресом 202.54.1.3, располагающейся в каталоге /jails/smtpd.nixcraft.net.in, выполните следующую команду:
    # ezjail-admin create -r /jails/smtpd.nixcraft.net.in smtpd.nixcraft.net.in 202.54.1.3

  Обновление файла конфигурации SMTPD Jail

По умолчанию, файл конфигурации расположен в /usr/local/etc/ezjail/smtpd_nixcraft_net_in. Откройте его и добавьте следующие строки:
    export jail_smtpd_nixcraft_net_in_hostname="smtpd.nixcraft.net.in"
    export jail_smtpd_nixcraft_net_in_ip="202.54.1.3,10.21.51.12"

  Шаг 5: Запускаем сервис jail

Добавим строку запуска в файл /etc/rc.conf:
    # echo 'ezjail_enable="YES"' >> /etc/rc.conf
После чего можем запустить службу:
    # /usr/local/etc/rc.d/ezjail.sh start
Для управления конкретным jail можно воспользоваться следующими командами:
    # /usr/local/etc/rc.d/ezjail.sh {start/stop/restart} jail-name
    # /usr/local/etc/rc.d/ezjail.sh start httpd
    # /usr/local/etc/rc.d/ezjail.sh stop smtpd.nixcraft.net.in
Просмотреть список jail можно командой:
    # jls
Или, для получения дополнительной информации, воспользуйтесь синтаксисом:
    # jls -v
Для того, чтобы подключиться к jail, воспользуйтесь командой:
    # jexec jid csh
При этом jid можно получить из вывода команды jls. В данном примере мы подключаемся к jail smtpd.nixcraft.net.in с jid # 2:
    # jexec 2 csh
После подключения к jail мы можем устанавливать необходимое нам ПО, например bash:
    # pkg_add -r -v bash
Или сервер Apache 2.2:
    # cd /usr/ports/www/apache22
    # make install clean

Для того, чтобы подключаться к jail удаленно, необходимо внести следующие изменения в ее файл /etc/rc.conf:
    # echo 'sshd_enable="YES"' >> /etc/rc.conf
Затем откроем файл sshd_config и укажем в нем использовать только IP адрес, назначенный данной jail. После чего запускаем сервер OpenSSH:
    # /etc/rc.d/sshd start
    # sockstat -4
Обновить FreeBSD Jail можно так:
    # /usr/local/etc/rc.d/ezjail.sh stop
    # ezjail-admin update -p -i
    # /usr/local/etc/rc.d/ezjail.sh start
Для обновления дерева портов используйте команду:
    # ezjail-admin update -P
Журнальные файлы jail по умолчанию хранятся в каталоге /var/log. Для того чтобы, к примеру, просмотреть логи jail smtpd.nixcraft.net.in, воспользуйтесь командой:
    # tail -f jail_smtpd_nixcraft_net_in_console.log
    # grep 'error' jail_smtpd_nixcraft_net_in_console.log
Для добавления httpd jail выполните следующие действия:
    # ezjail-admin create -r /jails/httpd.nixcraft.net.in httpd.nixcraft.net.in 202.54.1.4
    # vi /usr/local/etc/ezjail/httpd_nixcraft_net_in
    # /usr/local/etc/rc.d/ezjail.sh start httpd.nixcraft.net.in
    # jls -v
    # jexec id csh
Для резервного копированя jail рекомендую воспользоваться командами tar, rsync и dump.

Для сохранения данных на ленту, воспользуйтесь командой:
    # tar -zcvf /dev/sa0 /jails/smtpd.nixcraft.net.in
Для сохранения всех jail, расположенных в каталоге /jails используйте:
    # /sbin/dump -0uLf /dev/sa0 /jails/
А для инкрементных обновлений полученного архива:
    # /sbin/dump -1uLf /dev/sa0 /jails/

fbsd/posts/ezjail -- Last updated 2010-04-27 Tuesday 14:50:26 Edit

© copyright 2010
Design by: lev