На шлюзе Freebsd стояли правила выхода в инет через squid. Для проброса портов использовал natd. Позже добавился второй канал на другого провайдера, начал использовать опцию tcp_outgoing в squid.
Часть http трафика отправлял через один канал, часть через другой.
Со временем правил стало много, решил перейти на ядерный nat и прозрачный squid. Перешел. Правила стали короткими, для задействования squid использовал правило fwd.
Естественно, что tcp_outgoing в настройках squid перестал работать. Я для себя понимаю это так. Пакет идущий по правилам ipfw уже имеет установленные параметры откуда он пришел и как уйдет из системы.
Логичным продолжением для задействования второго канала для меня стало попробовать использовать setfib.
Пересобирать ядро с options ROUTETABLES не стал. Добавил в loader.conf строку net.fibs=2
Посмотрел в скрипт rc.d/squid Там есть строки посвященные setfib
Я прочитал это так. Скрипт анализирует, была ли сборка squid произведена с поддержкой fib
# setup FIB tables:
if command -v check_namevarlist > /dev/null 2>&1; then
check_namevarlist fib && return 0
fi
Пошел в options порта squid. Нет там fib.
Есть мысли попробовать собрать ядро с поддержкой routetables и пересобрать squid. Может он при сборке смотрит на параметр и добавляет fib.
Как собрать squid с поддержкой fib?
Отправлено спустя 18 минут 27 секунд:
Сейчас проверил, все вроде нормально.
При старте squid нигде не пишет, что используется fib. Показанный выше кусочек из стартового скрипта выходит из условия.
Если в rc.conf добавить squid_fib, то squid на него реагирует как надо.
Так что собирать squid с поддержкой fib не требуется
