Задача: сделать клетки равными по IP-адресации самому хосту(в одной подсети), т.е. получать адреса клеткам от внешнего маршрутизатора с DHCP-сервером, от которого сам хост FreeBSD питается.
По-умолчанию — клетки CBSD берут от вымышленной 10.0.0.0/24( ~cbsd/etc/global.conf). Поэтому без моста адресанция клеток будет, например, 10.0.0.2
Решение: Для получения IP адреса с DHCP сервера, к которому подключена FreeBSD нужно на ОС поднять мост, к нему привязать интерфейс ОС. Тут обычный мост нужен, единственное что в этом случае CBSD не может перехватывать IP и придется их ставить руками через cbsd jset ip4_addr чтобы красиво было в cbsd jls. Один из вариантов как делаю я, но это при условии что позволительно что у твоего хоста HWADDR для мира изменится, т.к. через мост работать будет:
/etc/rc.conf: cloned_interfaces="bridge1" ifconfig_bridge1="addm em0 SYNCDHCP up" ifconfig_em0="up"
, где em0 — старый оригинальный аплинк и перенесенный IP адрес с него на bridge1
(ну либо если хост DHCP получает то тоже DHCP в bridge1 выставить, но из-за нового hwaddr он получит новый IP)
Соотв, остается только зафиксировать чтобы клетки всегда на bridge1 были:
echo "interface=bridge1" >> ~cbsd/etc/jail-freebsd-default.conf
ну и можно сразу заставить опцию vnet=1 по-дефолту + ip4_addr в REALDHCP:
echo "ip4_addr=REALDHCP" >> ~cbsd/etc/jail-freebsd-default.conf echo "vnet=1" >> ~cbsd/etc/jail-freebsd-default.conf
Наверное это самый простой вариант, без dhcrelay. Клетки будут для сети там же где и хост, в том же L2
Если хосту вручную хотите указать IP-адрес, тогда так:
ifconfig_bridge1="inet 172.16.0.1/24 addm em0 up"
Источник: Oleg Ginzburg