У меня есть система FreeBSD 9.1-RELEASE-p1 с тремя сетевыми адаптерами, которые я использую: igb0, sfxge1 и sfxge2. igb0 используется для доступа в Интернет и является шлюзом по умолчанию. Два других сетевых адаптера, которые мне нужно использовать для создания bridge0. Когда система загружается, я выполняю следующие команды и запускаю мост без каких-либо проблем.
ifconfig bridge0 create
ifconfig bridge0 addm sfxge0 addm sfxge1 up
ifconfig bridge0 inet 172.18.0.1/24
Проблема начинается, когда я хочу, чтобы мост работал во время загрузки. После прочтения документация и после этого я придумал следующее в своем /etc/rc.conf
:
cloned_interfaces="bridge0"
ifconfig_bridge0="addm sfxge0 addm sfxge1 up"
ifconfig_sfxge0="up"
ifconfig_sfxge1="up"
ifconfig_bridge0="inet 172.18.0.1/24"
При перезагрузке система зависает при включении шлюза по умолчанию на igb0. Единственный способ продолжить - нажать ctrl + alt + delete, перезагрузиться в одиночный режим и изменить /etc/rc.conf
. Часть конфига, определяющая igb0 и шлюз по умолчанию:
defaultrouter="10.100.4.254"
hostname="zfstank"
ifconfig_igb0="up"
ifconfig_igb0="inet 10.100.4.1 netmask 255.255.255.0"
Я попытался изменить последнюю строку настройки bridge0 на ifconfig_bridge0_alias0="inet 172.18.0.1/24"
и изменить строку настройки моста ifconfig_bridge0="addm sfxge0 addm sfxge1 inet 172.18.0.1/24 up"
- привело к той же проблеме - застревание при создании шлюза по умолчанию.
Во время загрузки я вижу, что igb0 подключается к сети после настройки bridge0.
if_bridge и sfxge были скомпилированы в ядро.
Обновление1: Вот что еще у меня в /etc/rc.conf
:
sshd_enable="YES"
ntpd_enable="YES"
zfs_enable="YES"
sfxge_load="YES"
Обновление2:
Когда я нажимаю Ctrl + T:
load 0.03 cmd: route 1136 [keglimit] 281.48r 0.00u 0.00s 0% 1080k
Обновление3:
Похоже, проблема связана с быстрым исчерпанием mbuf. Так как Вики FreeNAS указывает, что это обычное явление для многопортовых карт em и igb и в основном не имеет ничего общего с мостом (поправьте меня, если я ошибаюсь).
Итак, после того, как я добавил следующие строки в /boot/loader.conf
и загрузился, система правильно завершила загрузку.
kern.ipc.nmbclusters="131072"
hw.igb.num_queues=1
У вас не может быть нескольких линий одной и той же конфигурации. Более поздние строки имеют приоритет перед предыдущими.
Не зная, что остальное rc.conf
файл выглядит примерно так:
hostname="zfstank"
defaultrouter="10.100.4.254"
cloned_interfaces="bridge0"
autobridge_interfaces="bridge0"
autobridge_bridge0="sfxge0 sfxge1"
ifconfig_bridge0="inet 172.18.0.1/24"
ifconfig_sfxge0="up"
ifconfig_sfxge1="up"
ifconfig_igb0="inet 10.100.4.1 netmask 255.255.255.0"
Ноты:
Это:
ifconfig_bridge0="addm sfxge0 addm sfxge1 up"
...
ifconfig_bridge0="inet 172.18.0.1/24"
фактически то же самое, что и вторая строка. И эта попытка установить IP на ненастроенном интерфейсе моста - вероятно, это причина проблемы. Вы должны добавить inet 172.18.0.1/24
в первую строку и удалите вторую.
Не могли бы вы удалить любую конфигурацию интерфейса из rc.conf и прокомментировать ее в rc.local и попробовать этот способ?
defaultrouter="10.100.4.254"
hostname="zfstank"
ifconfig_igb0="inet 10.100.4.1/24 up"
ifconfig_sfxge0="up"
ifconfig_sfxge1="up"
cloned_interfaces="bridge0"
autobridge_interfaces="bridge0"
autobridge_bridge0="sfxge0 sfxge1"
ifconfig_bridge0="inet 172.18.0.1/24 up"
Это немного изменит порядок вещей.