Обсуждение статьи тематического каталога: source routing policy pfСсылка на текст статьи: http://www.opennet.me/base/net/srcroute.txt.html
подсказка тем кто ищет аналог 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, а она не виновата :)
>подсказка тем кто ищет аналог policy-routing под pf.
>
>Всё очень просто, если внимательно читать доку. Ключевое слово "route-to":
Спасибо тебе, добрый человек!! А то у меня на эту тему чуть истерика не случилась: лучший пакетный файр, а такую тупую фишку не умеет делать.. :)
>[оверквотинг удален]
>
>pass in on $int_if route-to \
> { ($ext_if1 $ext_gw1) } \
> from $lan_net to any keep state
>
>то есть все пакеты с src=$lan_net будут маршрутизироваться (next-hop) в нужный вам
>интерфейс и шлюз.
>
>Вроде бы ничего сложного, но я убил неделю, пытаясь добиться такого от
>zebra, а она не виновата :)Вроде неплохо выглядит конструкция, но у меня другая проблема этот самый ext_gw1 у меня меняет пров периодически (PPPoe) как поступать в таком случае?
>[оверквотинг удален]
>
>pass in on $int_if route-to \
> { ($ext_if1 $ext_gw1) } \
> from $lan_net to any keep state
>
>то есть все пакеты с src=$lan_net будут маршрутизироваться (next-hop) в нужный вам
>интерфейс и шлюз.
>
>Вроде бы ничего сложного, но я убил неделю, пытаясь добиться такого от
>zebra, а она не виновата :)Подсказка очень пригодилась - спасибо. А ларчик оказывается просто открывался :)
А на ipf как routing policy замутить?
http://www.opennet.me/openforum/vsluhforumID3/1902.html#16
цитирую:тоже никак не хотело работать с правилом "ipfw add fwd ..."
(если важно: FreeBSD 4.11, связка ipfw и ipnat, два внешних и-фейса к разным ISP... хоть по логам правило якобы работало - фактически, кроме статик_роутов, пакеты с "неподходящего ip" пытались уходить не с нужного интерфейса, а через тот, за которым defaultrouter)
зато всё отлично заработало с помощью единственного правила ipfilter!
/etc/ipf.rules:
pass out quick on fxp0 to fxp1:1.1.1.254 from 1.1.1.1 to any