1) ng0 - 1.1.1.1
2) ng1 - 2.2.2.2
Есть внутреняя сеть
vlan3 - 192.168.1.0/24
Нужно несколько хостов во внутренней сети пускать через разные аплинки. Например хост 192.168.1.100 через 2-ой аплинк (ng1 2.2.2.2), хост 192.168.1.150 через 1-ый аплинк (ng0 1.1.1.1). Дефолт роут прописан через 1-ый аплинк (ng0 1.1.1.1). Делаю так
Код: Выделить всё
ext1_if="ng0"
ext1_gw="1.0.0.1"
ext2_if="ng1"
ext2_gw="2.0.0.1"
int_if="vlan3"
int_net="192.168.1.0/24"
nat on $ext1_if inet from $int_net to any -> ($ext1_if)
nat on $ext2_if inet from $int_net to any -> ($ext2_if)
pass in on $int_if from 192.168.1.0/24 to $int_if
pass in on $int_if route-to ($ext2_if $ext2_gw) from 192.168.1.100 to !($int_if)
Код: Выделить всё
1 <1 мс <1 мс <1 мс 192.168.1.1
2 14 ms 14 ms 14 ms 1.0.0.1
...
Код: Выделить всё
1 14 ms 14 ms 14 ms 2.0.0.1
...
Теперь самое интересное, если с хоста 192.168.1.100 сделать трасировку до 1.1.1.1, то она уходит через 2-ой аплинк (всё по правилам фаервола), а потом делая кольцо через n-ое кол-во хопов доходит до 1.1.1.1 (это правда можно вылечить, добавив пару строк в правила фаервола).
Вообщем route-to работает с одной стороны и правильно, но можно ли избежать пропуска роутера в трассировке?
Хочется, чтобы маршруты были всё таки правильными

PS С pf только начал разбираться. Всегда пользовался только ipfw.