подсказка тем кто ищет аналог policy-routing под pf.Всё очень просто, если внимательно читать доку. Ключевое слово "route-to":
Load Balance Outgoing Traffic
Address pools can be used in combination with the route-to filter option to load balance two or more Internet connections when a proper multi-path routing protocol (like BGP4) is unavailable. By using route-to with a round-robin address pool, outbound connections can be evenly distributed among multiple outbound paths.
One additional piece of information that's needed to do this is the IP address of the adjacent router on each Internet connection. This is fed to the route-to option to control the destination of outgoing packets.
Немного переделав пример получаем желаемое:
lan_net = "192.168.0.0/24"
int_if = "dc0"
ext_if1 = "fxp0"
ext_gw1 = "68.146.224.1"
pass in on $int_if route-to \
{ ($ext_if1 $ext_gw1) } \
from $lan_net to any keep state
то есть все пакеты с src=$lan_net будут маршрутизироваться (next-hop) в нужный вам интерфейс и шлюз.
Вроде бы ничего сложного, но я убил неделю, пытаясь добиться такого от zebra, а она не виновата :)