Ось 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". Но это какое-то топорное решение.