Установите сетевой интерфейс во FreeBSD как DHCP-включенный, но полностью отключенный до явного включения
Я настраиваю резервное копирование маршрутизатора / межсетевого экрана FreeBSD, мой провайдер выдает IP по DHCP, он статичен и привязан к MAC-адресу моего сетевого адаптера, поэтому, когда состояние карпа переключается, я пытаюсь отключить интерфейс на одной машине и включи его по другому. Оно работает. Так хорошо до сих пор...
Моя проблема в том, что когда я перезагружаю BACKUP-машину, после перезагрузки интерфейс настраивается - он обращается к DHCP-серверу с MAC, который уже используется в сети, и получает ответ. Совсем не хорошо - на мгновение таблицы arp моих коммутаторов направляют пакеты на неправильный порт.
Я пытался:
Начните
dhclient em0
при переходе в состояние МАСТЕР иifconfig_em0="down"
в rc.conf, но если в конце концов интерфейс переходит в состояние соединения, dhclient выходит и не возобновляет работу как devd, который должен его возобновить, проверяет с помощьюdhcpif
отnetwork.subr
- и говорит, что "em0 не интерфейс с поддержкой dhcp".задавать
ifconfig_em0="down dhcp"
и удалитьdhclient.leases.em0
файл, затем перезагрузка - мой интерфейс отключен и настроен после запуска (возможно, он даже был включен, а затем отключен моим сценарием при входе в состояние carp BACKUP).
Насколько я понимаю, нет способа установить NIC в качестве DHCP-включенного, чтобы запустить dhclient при подключении с помощью devd, но сохранять его полностью бесшумным во время процесса загрузки?
1 ответ
В качестве обходного пути я добавил пользовательское задание devd для запуска dhclient без проверок:
# cat /usr/local/etc/devd/dhclient.conf
notify 1 {
match "system" "IFNET";
match "type" "LINK_UP";
media-type "ethernet";
match "subsystem" "em0";
action "/usr/local/sbin/dhcp_linkup_carp.sh";
};
# cat /usr/local/sbin/dhcp_linkup_carp.sh
#!/bin/sh
[ "`ifconfig em0 | grep inet`" ] && dhclient em0
и установить ifconfig_em0="down"
в rc.conf
(интерфейс поднимается скриптами devd carp)