Есть роутер (FreeBSD 6.1), к нему подключены два провайдера.
Дефолтгейтвеем для системы задан гейт первого провайдера, в rc.conf включена опция gateway_enable="YES".Имеем следующий конфиг pf.conf
prov1_if="fxp0"
prov2_if="fxp1"
lan_if="fxp2"
nat on $prov1_if from $lan_net to any -> ($prov2_if)
pass out on $prov1_if route-to ($prov2_if $prov2_gw) from ($prov2_if) to any
При этом нат работает замечательно, и с самого роутера пакетики ходят, в зависимости от указания внешнего IP, через обоих провайдеров. Соответственно, при изменении адреса назначения в команде nat - выбирается нужный провайдер.
Но потребовалось пробросить порт через второго провайдера на машину из локалки, добавив правило:
rdr on $prov2_if proto tcp from any to ($prov2_if) port 1234 -> 192.168.0.1 port 1234
При этом - пакеты доходят до локальной машины, но возвращаются, почему-то, на интерфейс $prov1_if (их видно там через tcpdump) и, естественно, никуда дальше не идут.
Если настроить редирект на интерфейсе первого провайдера - все работает замечательно. Однако, редирект нужен именно для второго провайдера.
Подскажите, пожалуйста, в чем тут может быть дело и как решить данную проблему.