IP адрес материнской подсети для jail

Задача: сделать клетки равными по 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