Да, действительно. Вот как закрутил:
^^^ выше наты идут и редиректы ^^^
#
# SOURCE ROUTING (ROUTE POLICY, enforcing symetric traffic)
## some tagging if we need it goes here
#pass in on $ext_if1 all tag $ext_if1 keep state
#pass in on $ext_if2 all tag $ext_if2 keep state
# source routing for our external IPs of router
# route replies. both services on router and behind him after rdr rules
pass in on $ext_if1 reply-to ($ext_if1 $ext_gw1) all keep state
pass in on $ext_if2 reply-to ($ext_if2 $ext_gw2) all keep state
# route new connections, originated from our external IPs
pass out on $ext_if1 route-to ($ext_if2 $ext_gw2) from $ext_if2 to any keep state
pass out on $ext_if2 route-to ($ext_if1 $ext_gw1) from $ext_if1 to any keep state
Первые строки созадают кип стейты для входящих запросов. Последние 2 ве корректируют "нетуда" пошедшие, заблудившиеся, блудящие пакеты ;)
Последних двух строк недостаточно, так как даже если не писать keep state правила оказываются в таблице с keep state. ибо route-to? ответы на приходящие запросы идут обратно, они уже установленные соединения и новых записей не создают. Кажется так. С 4 мя строками всё работает. Единственно если я ниже напишу конструкцию block all + pass some addresses может быть это отменит предидущие строки? не пробовал, хотя должно работать. ибо keep state.
Забил на ipfilter отныне. IPFW не люблю. Ибо сетевой демон на роутере natd смотрится для меня диковато. Писали умные люди, но я как то не могу что бы какой то демон сетевой вертелся на моём роутере.
>
>>Но вот ответ, который
>>идёт обратно, согласно default gateway уходит на интерфейс A там его
>>не знают, а если и знают, то провайдер вместе с машиной
>>отправителем не понимают его.
>
>Известный баг.
>Якобы можно с помощью pf исправить...