Пример настройки PF для двух каналов с симметричной маршрутизацией

Файл с примером настройки PF для двух каналов с симметричной маршрутизацией pf-dual.conf.

  • Задача: FreeBSD 7.2-RELEASE #0. Две сетевые карты: rl0 (основной провайдер, шлюз по умолчанию, ifconfig_rl0="DHCP"), vr0 (резервный провайдер, ifconfig_vr0="inet x.x.x.x netmask 255.255.255.224"). Письма должны пересылаться через удаленный почтовый сервер используя маршрут резервного провайдера vr0, весь остальной трафик (репликация MySQL) должен уходить по route default rl0. SSH и Apache должны быть доступны через оба интерфейса.
  • Решение: Решение приведенное в файле pf-dual.conf с использованием маркера tagged у меня не заработало. Предполагаю потому что PF не был скомпилирован в ядро, а загружался как модуль.
ext_if_a="rl0"
ext_if_b="vr0"
ext_gw_a="x.x.x.161"
ext_gw_b="x.x.x.253"

#Normalization: scrub incoming packets
scrub in all

# pass traffic on the loopback interface in either direction
pass quick on lo0 all
# spoofing
antispoof quick for $ext_if_a inet

#Симметричная маршрутизация: (если пакет пришел из канала A, ответ пойдет
#через канал A независимо от default route).
pass in quick on $ext_if_a reply-to ($ext_if_a $ext_gw_a) keep state
pass in quick on $ext_if_b reply-to ($ext_if_b $ext_gw_b) keep state

pass in all
pass out all
PQ VPS сервера в 28+ странах.