BSDPORTAL.RU

На этом сайте обсуждаются вопросы использования ОС FreeBSD
 Портал  •  Статьи  •  Форум  •  Wiki  •  Поиск  •  FAQ  •  Обои  •   Официальная документация  •  Новые темы 

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 16 ] 
Автор Сообщение
СообщениеДобавлено: Пт 27 ноя, 2009 8:04 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн 26 мар, 2007 6:04 pm
Сообщения: 1129
Откуда: Kiev
Стоят клетки (ставил через ezjail), включил поддержку в ядре vimage. Даже дошёл до создания интерфейсов epair. Есть ли толковая дока по внедрению vimage или может кто-то уже прикручивал?

_________________
"Винда съела дрова и резет здесь не фурычит"
"Все говорят, что у меня /dev/hands кривой и я всё делаю через /dev/ass. А у меня этих файлов вообще нет!"


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Сб 28 ноя, 2009 4:12 pm 
Не в сети

Зарегистрирован: Пн 23 мар, 2009 5:00 am
Сообщения: 1513
Откуда: Saint-Petersburg
skeletor писал(а):
Стоят клетки (ставил через ezjail), включил поддержку в ядре vimage. Даже дошёл до создания интерфейсов epair. Есть ли толковая дока по внедрению vimage или может кто-то уже прикручивал?


в 8.0 в jail еще не интегрировали весь функционал от vimage. Julian Elisher где-то публиковал версию jail, работающую полноценно. Если найду - скину. Этот функционал еще не готов к использованию (много чего не работает с vimage, известны утечки памяти и пр.), в ReleaseNotes лишь обозначен факт проделанных работ по виртуализации стека.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб 28 ноя, 2009 10:04 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн 26 мар, 2007 6:04 pm
Сообщения: 1129
Откуда: Kiev
Ясно, буду знать. А насчёт jail'a - то буду ждать, если найдёшь - скинь. :)

_________________
"Винда съела дрова и резет здесь не фурычит"
"Все говорят, что у меня /dev/hands кривой и я всё делаю через /dev/ass. А у меня этих файлов вообще нет!"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Сб 28 ноя, 2009 11:35 pm 
Не в сети

Зарегистрирован: Пн 23 мар, 2009 5:00 am
Сообщения: 1513
Откуда: Saint-Petersburg
skeletor писал(а):
Ясно, буду знать. А насчёт jail'a - то буду ждать, если найдёшь - скинь. :)


Покопался в том, что есть в 8.0. Показалось, что заюзать все таки можно. skeletor, вон-клянь ;)

Эксперементил на домашней машине с двумя Jail-ами. На машине 2 физических интерфейса, но активный лишь один (msk0).

Vimage-ы я через него бриджом и пропустил (по-хорошему, в продакшне надо задействовать 1 физический интерфейс hosted-системы чисто под managment и ничего больше, а vimage гонять через vlan-ы или бриджы на других интерфейсах.)

Исходное состояние системы:

Код:
[oleg@localhost ~]$ uname -irm
8.0-RELEASE amd64 GENERIC-VIMAGE


Конфиг текущего рабочего ядра:
Код:
[oleg@localhost ~]$ cat /sys/amd64/conf/GENERIC-VIMAGE
include GENERIC

ident           GENERIC-VIMAGE

nomakeoptions   DEBUG

nooptions       INET6                   # IPv6 communications protocols
nooptions       SCTP                    # Stream Control Transmission Protocol
nooptions       UFS_ACL                 # Support for access control lists

options VIMAGE



//IP у меня плюшевые, ничего страшного.
Код:
[oleg@localhost ~]$ grep ^ipv4 /etc/rc.conf
ipv4_addrs_msk0="192.168.137.2/24 192.168.137.200-250/32"


также, в rc.conf:
Код:
gateway_enable="YES"


// ipfw грузится, с default_to_accept. Это здесь - главное.
Код:
[oleg@localhost ~]$ cat /boot/loader.conf

ipfw_load="YES"
net.inet.ip.fw.default_to_accept=1

coretemp_load="YES"
vboxdrv_load="YES"
atapicam_load="YES"
snd_hda_load="YES"              # Intel High Definition Audio (Controller)
nullfs_load="YES"

accf_data_load="YES"
accf_dns_load="YES"
accf_http_load="YES"



//ip шники для имиджей возьму 192.168.137.{251,252}

// buildworld у меня сделан, раскатываем целостную клетку окружения в /jail (это меня отдельный партишн)
Код:
[root@localhost /]# mkdir /jail/jail/{v1,v2}
[root@localhost /]# make -C /usr/src installworld DESTDIR="/jail/jail/v1"
[root@localhost /]# make -C /usr/src installworld DESTDIR="/jail/jail/v2"
[root@localhost /]# make -C /usr/src distribution DESTDIR="/jail/jail/v1"
[root@localhost /]# make -C /usr/src distribution DESTDIR="/jail/jail/v2"
[root@localhost /]# echo 'sshd_enable="YES"' >> /jail/jail/v1/etc/rc.conf
[root@localhost /]# echo 'sshd_enable="YES"' >> /jail/jail/v2/etc/rc.conf
// пускай с портами
[root@localhost /]# mkdir /jail/jail/v{1,2}/usr/ports
[root@localhost /]# echo '/usr/ports /jail/jail/v1/usr/ports nullfs rw 0 0' > /etc/fstab.v1
[root@localhost /]# echo '/usr/ports /jail/jail/v2/usr/ports nullfs rw 0 0' > /etc/fstab.v2


в /etc/rc.conf:
Код:
// jail общие
jail_enable="YES"       # Set to NO to disable starting of any jails
jail_list="v1 v2"
jail_set_hostname_allow="YES" # Allow root user in a jail to change its hostname
jail_socket_unixiproute_only="YES" # Route only TCP/IP within a jail
jail_sysvipc_allow="YES"        # Allow SystemV IPC use from within a jail

//v1 jail
jail_v1_rootdir="/jail/jail/v1" # Jail's root directory
jail_v1_hostname="v1"   # Jail's hostname
jail_v1_devfs_enable="YES"                  # mount devfs in the jail
jail_v1_mount_enable="YES"                  # mount/umount jail's fs
jail_v1_flags="-c host.hostname=v1 path=/jail/jail/v1 vnet command=/bin/sh /etc/rc"             # flags for jail(8)

/v2 jail
jail_v2_rootdir="/jail/jail/v2" # Jail's root directory
jail_v2_hostname="v2"   # Jail's hostname
jail_v2_devfs_enable="YES"                  # mount devfs in the jail
jail_v2_mount_enable="YES"                  # mount/umount jail's fs
jail_v2_flags="-c host.hostname=v2 path=/jail/jail/v2 vnet command=/bin/sh /etc/rc"             # flags for jail(8)


Собственно, создание vimage для jail удалось получить только через
jail_flags, по умолчанию он его не делает и vimage был неприменим.

Запускаем:
Код:
[root@localhost /]# /etc/rc.d/jail start
Configuring jails:.
Starting jails: v1 v2.

[root@localhost /]# jls
   JID  IP Address      Hostname                      Path
     1  -               v1                            /jail/jail/v1
     2  -               v2                            /jail/jail/v2



(прим: привязать к существующему IP через jail не вышло, соотв. сделал без IP - назначим в джейлах)

//Подключаем бриджом v1 и v2 (msk0 мой рабочий физический интерфейс):

Код:
[root@localhost /]# kldload ng_ether
[root@localhost /]# ngctl mkpeer eiface ether ether
[root@localhost /]# ngctl mkpeer eiface ether ether

[root@localhost /]# ngctl mkpeer msk0: bridge lower link0
[root@localhost /]# ngctl name msk0:lower b0

[root@localhost /]# ngctl connect msk0: b0: upper link9

[root@localhost /]# ngctl connect ngeth0: b0: ether link1
[root@localhost /]# ngctl connect ngeth1: b0: ether link2


Приаттачим бриджовые ngeth к jail 1, 2 соотв:
Код:
[root@localhost /]#  ifconfig ngeth0 vnet 1
[root@localhost /]#  ifconfig ngeth1 vnet 2


Все ;)
Осталось лишь проверить это чудо.

//заведем усера и запустим sshd
Код:
[root@localhost /]#  jexec 1 csh
v1# adduser
Username: oleg
Full name: oleg
Uid (Leave empty for default):
Login group [oleg]:
Login group is oleg. Invite oleg into other groups? []: wheel
Login class [default]:
Shell (sh csh tcsh nologin) [sh]: csh
Home directory [/home/oleg]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username   : oleg
Password   : *****
Full Name  : oleg
Uid        : 1001
Class      :
Groups     : oleg wheel
Home       : /home/oleg
Home Mode  :
Shell      : /bin/csh
Locked     : no
OK? (yes/no): yes
adduser: INFO: Successfully added (oleg) to the user database.
Add another user? (yes/no): no
Goodbye!

v1# ifconfig ngeth0 192.168.137.251/24
v1# /etc/rc.d/sshd restart
Ctr+D


Логинимся в имидж и успешно применяем виртуальный ipfw в виде deny:

Код:
[root@localhost /]#  ssh oleg@192.168.137.251
Password:
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.

FreeBSD 8.0-RELEASE (GENERIC-VIMAGE) #1: Sat Nov 28 19:49:23 MSK 2009

Welcome to FreeBSD!

Before seeking technical support, please use the following resources:

o  Security advisories and updated errata information for all releases are
   at http://www.FreeBSD.org/releases/ - always consult the ERRATA section
   for your release first as it's updated frequently.

o  The Handbook and FAQ documents are at http://www.FreeBSD.org/ and,
   along with the mailing lists, can be searched by going to
   http://www.FreeBSD.org/search/.  If the doc distribution has
   been installed, they're also available formatted in /usr/share/doc.

If you still have a question or problem, please take the output of
`uname -a', along with any relevant error messages, and email it
as a question to the questions@FreeBSD.org mailing list.  If you are
unfamiliar with FreeBSD's directory layout, please refer to the hier(7)
manual page.  If you are not familiar with manual pages, type `man man'.

You may also use sysinstall(8) to re-enter the installation and
configuration utility.  Edit /etc/motd to change this login announcement.

You can use "pkg_info" to see a list of packages you have installed.
                -- Konstantinos Konstantinidis <kkonstan@duth.gr>
%su -
v1# ipfw list
65535 allow ip from any to any
v1# ipfw add deny ip from any to any




PS: утилита /usr/src/tools/tools/vimage не пригодилась, видимо это сэмпл и в конечном итоге все будет в jail.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вс 29 ноя, 2009 12:04 am 
Не в сети

Зарегистрирован: Пн 23 мар, 2009 5:00 am
Сообщения: 1513
Откуда: Saint-Petersburg
route add default в jail-ах тоже нужен, для связи с миром и мира с ним ;)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вс 29 ноя, 2009 12:35 am 
Не в сети

Зарегистрирован: Пн 23 мар, 2009 5:00 am
Сообщения: 1513
Откуда: Saint-Petersburg
skeletor писал(а):
Даже дошёл до создания интерфейсов epair.


epair - это виртуальный кросс-овер ;) можно один конец в один jail, другой в другой. для создания jail-а он ненужен


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт 01 дек, 2009 1:38 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн 26 мар, 2007 6:04 pm
Сообщения: 1129
Откуда: Kiev
Спасибо, делаю. Споткнулся на jail_flags="vnet". Дело в том, что у меня ezjail, и все попытки вставить этот параметр не увенчались успехом. :(

_________________
"Винда съела дрова и резет здесь не фурычит"
"Все говорят, что у меня /dev/hands кривой и я всё делаю через /dev/ass. А у меня этих файлов вообще нет!"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн 07 дек, 2009 9:11 am 
Не в сети

Зарегистрирован: Пн 07 дек, 2009 9:02 am
Сообщения: 3
Откуда: Иркутск
А может имеет смысл поправить rc-скрипт ezjail'а?

Т.е. в моем случае надо перенести пачку клеток с 7.2 на 8.0. Обновить ядро, собрать с поддержкой vimage, обновить клетки и после поправить следующую строку:

# Pass control to jail script which does the actual work
[ "${ezjail_pass}" ] && sh /etc/rc.d/jail one${action%crypto} ${ezjail_pass}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн 07 дек, 2009 1:39 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн 26 мар, 2007 6:04 pm
Сообщения: 1129
Откуда: Kiev
А на какую её подправить?

_________________
"Винда съела дрова и резет здесь не фурычит"
"Все говорят, что у меня /dev/hands кривой и я всё делаю через /dev/ass. А у меня этих файлов вообще нет!"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пн 07 дек, 2009 3:42 pm 
Не в сети

Зарегистрирован: Пн 07 дек, 2009 9:02 am
Сообщения: 3
Откуда: Иркутск
заколбасил в рассылочку:

Я:

Цитата:
Hello!
I want merge all my jails (ezjail framework) working under freebsd 7.2 to freebsd 8.0 with support vimage. Ezjail don't support jail_NAME_flags=""

Whether, I can simply change the line in /usr/local/etc/rc.d/ezjail:

# Pass control to jail script which does the actual work
[ "${ezjail_pass}" ] && sh /etc/rc.d/jail one${action%crypto} ${ezjail_pass}

and add some parametres like:

"jail -c vnet name=vnet1 host.hostname=vnet1.example.net path=/ persist"


Alexander Leidinger:

Цитата:
Цитата:
Hello!
I want merge all my jails (ezjail framework) working under freebsd 7.2 to
freebsd 8.0 with support vimage. Ezjail don't support jail_NAME_flags=""


http://www.leidinger.net/FreeBSD/curren ... /jail.diff
Take only the part for the first two files. After that you have jail_NAME_jailname, jail_NAME_securelevel and jail_NAME_startparams.

It also makes more sanity checks for the fstab entries.

Bye,
Alexander.


Miroslav Lachman:

Цитата:
You can add what ever variables you want in to /usr/local/etc/ezjail/vnet1_example_net
It will be exported to /etc/rc.d/jail, so you can use:

export jail_vnet1_example_net_flags="my special flags here"

Or you can try to set it in /etc/rc.conf. Ezjail is not so special as it looks.


может кто-нить попробует? а то у меня один продакшен под рукой, боязно :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт 26 мар, 2010 1:36 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн 26 мар, 2007 6:04 pm
Сообщения: 1129
Откуда: Kiev
Я пробовал, не ругается, но завести сетевой стэк мне всё-таки не удалось. Буду пробовать ещё.

_________________
"Винда съела дрова и резет здесь не фурычит"
"Все говорят, что у меня /dev/hands кривой и я всё делаю через /dev/ass. А у меня этих файлов вообще нет!"


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт 03 июн, 2010 11:30 pm 
Не в сети

Зарегистрирован: Чт 03 июн, 2010 11:23 pm
Сообщения: 1
есть какой-то способ выполнить ifconfig if vnet N на старте системы, из rc?
джейлы отлично стартуют с системой, а вот интерфейсы в них приходится ручками передвигать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт 18 июн, 2010 11:32 am 
Не в сети

Зарегистрирован: Пн 07 дек, 2009 9:02 am
Сообщения: 3
Откуда: Иркутск
harvex: http://forum.nginx.org/read.php?23,31739,32631

На днях у меня получилось сделать сеть в клетках. Вместо netgraph использовал epair, суть подхода примерно одинкова. Однако выглядит более красиво.

jail -c vnet host.hostname=pin.juise.ru path=/usr/jail/work/pin/ persist
jail -c vnet host.hostname=ejik.juise.ru path=/usr/jail/work/ejik/ persist

ifconfig bridge create
ifconfig epair create
ifconfig epair create

* Интерфейс em0 (192.168.0.3) - физический интерфейс, через него физически ходят пакеты.

ifconfig bridge0 addm em0 addm epair0b addm epair1b
ifconfig bridge0 up
ifconfig epair0b up
ifconfig epair1b up

* Делаются именные алиасы, вместо epair0a в клетке будет виден em1, мне так больше нравится.

ifconfig epair0a name em1
ifconfig em1 vnet 1
ifconfig epair1a name em1
ifconfig em1 vnet 2

jexec 1 ifconfig em1 192.168.0.1
jexec 2 ifconfig em1 192.168.0.2

jexec 1 route add default 192.168.1.10
jexec 2 route add default 192.168.1.10

Все работает без нареканий.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re:
СообщениеДобавлено: Вт 29 дек, 2015 8:55 am 
Не в сети

Зарегистрирован: Вт 20 окт, 2015 3:18 pm
Сообщения: 6
juise писал(а):
Пришел к выводу, что ezjail уже даже страшно тыкать палочкой, думаю положить на него болт и вернуться к классическому способу создания клеток, либо все таки сообразить патчик.


таки, да, согласен с вами - страшновато..
у меня примерно как у вас, командами поднимается всё что нужно из /etc/jail.conf

Код:
allow.raw_sockets = "1";
allow.set_hostname = "0";
allow.sysvipc = "1";
allow.mount.devfs;
host.hostname  = "${name}.local";
path  = "/usr/local/virt/jails/${name}";
mount.fstab  = "/usr/local/virt/jails/fstab.${name}";
mount.devfs  = "1";
devfs_ruleset  = "4";
exec.consolelog  = "/var/log/jail_${name}_console.log";
#devfs_ruleset = "devfsrules_jail";
#devfs_ruleset = "7";

host1 {
   ip4.addr = "10.0.0.1";
   interface = "lo1";
   exec.start = "/bin/sh /etc/rc";
   mount = "procfs ${path}/proc procfs rw 0 0";
}

host2 {
  $if  = "0";
  devfs_ruleset = "7";
  vnet;
  vnet.interface  = "epair${if}b";
  exec.prestart  = "ifconfig epair${if} create up";
  exec.prestart  += "ifconfig bridge0 addm epair${if}a";
  exec.start  = "/sbin/ifconfig lo0 127.0.0.1 up";
  exec.start  += "/sbin/dhclient epair${if}b";
  exec.start  += "/sbin/ipfw add 65000 allow ip from any to any";
  exec.start  += "/bin/sh /etc/rc";
  exec.stop  = "/bin/sh /etc/rc.shutdown";
  exec.poststop  = "ifconfig epair${if}a destroy";
  persist;
  host.hostname  = "host2.ufnp.local";
}


ps.
Код:
uname -sar
FreeBSD hp 10.2-STABLE FreeBSD 10.2-STABLE #0 r291842: Sat Dec  5 11:44:20 NOVT 2015     odmin@hp:/usr/obj/usr/src/sys/vimg  amd64

и таки, имеем небольшой вопросег в тему:
кто какие sysctl-ки рекомендует покрутить стабильности ради?
иногда вижу самопроизвольные ребуты системы, причем в одно и тоже время..
вырубил крон в клетках, шас вот коредамп ковыряю палочкой.... :(


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 29 дек, 2015 11:59 am 
Не в сети

Зарегистрирован: Вс 05 июн, 2005 4:19 pm
Сообщения: 3148
Откуда: Мезозой Пангея
sysutils/cbsd - наше всё.

_________________
Ми можемо все - що здатні собі уявити!
uname -a
Linux nonamehost 5.2.16-zen-my-ksm-muqss+ #6 ZEN SMP Thu Sep 19 21:20:10 EEST 2019 x86_64 x86_64 x86_64 GNU/Linux


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 03 май, 2016 1:50 am 
Не в сети

Зарегистрирован: Вс 11 янв, 2009 5:57 pm
Сообщения: 78
Откуда: Königsberg
fidaj писал(а):
sysutils/cbsd - наше всё.

"И увидел он, что это хорошо."


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 16 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Зарегистрированные пользователи: Bing [Bot], Google [Bot], Majestic-12 [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
Яндекс.Метрика