@Gil-Galad

Почему dhclient на FreeBSD 13 игнорирует setfib и прописывает маршруты в основную таблицу?

Ось FreeBSD 13. Dhclient штатный.

loader.conf
net.add_addr_allfibs=0
net.fibs="2"


Запускаем
setfib 1 dhclient em2

В итоге все маршруты, в том числе и шлюз прописываются в основную таблицу (0) маршрутизации, а не в таблицу (1). Если вручную прописываю маршруты, то они нормально добавляются в таблицу (1).

По логике скрипт, запущенный под setfib, и его потомки используют заданную setfib таблицу маршрутизации. Но по какой-то причине dhclient выходит из под влияния setfib. Уже всю голову сломал.

Пока приходит на ум сдублировать dhclient-script и всем route железно прописать "-fib 1". Но это какое-то топорное решение.
  • Вопрос задан
  • 354 просмотра
Решения вопроса 1
@Gil-Galad Автор вопроса
Проблема оказалась в ifconfig, а не в route. При привязке адреса интерфейсу ifconfig по какой-то причине в FreeBSD 13.0-RELEASE-p4 не учитывает текущую таблицу маршрутизации (fib 1) и использует (fib 0) в скрипте dhclient-script.

В итоге изменил dhclient-script и добавил в начало кода определение текущего fib
FIB="fib `sysctl net.my_fibnum | awk '{print $2}'`"

а затем к каждому вызову ifconfig в конец добавил $FIB. Например,
$IFCONFIG $interface inet -alias $alias_ip_address $FIB > /dev/null 2>&1

в итоге всё нормально начало прописываться и работать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Dystopian
Должна помочь предварительная установка fib на интерфейсе:
ifconfig $iface fib $FIB
Заданная fib будет отображаться в состоянии интерфейса (ifconfig $iface)
В моей конфигурации это работает, но я использовал dhcpcd вместо dhclient.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы