Стоит машинка на FreeBSD 6.0.
У машинки 3 линка в интернет (у 2 линков реальные ип адреса, у третьего ип из сети 10.0.0.0, выходит в интернет через НАТ провайдера).
Причем один линк (который через НАТ) указан, как default gateway.
А на каждый из двух других линков прописано по некоторому количеству статических маршрутов.
И есть линк в локальную сеть 192.168.
А в локальной сети стоит ещё одна машинка.Допустим, адреса на линках в интернет такие: 1.1.1.1, 2.2.2.2 и 10.0.0.3.
И допустим, внутренний ип-адрес машинки 192.168.0.1.
А ип-адрес ещё одной машинки в локалке 192.168.0.2.
Задача: пробросить в локальную сеть пару портов на 192.168.0.2.
Причем нужно, чтобы 192.168.0.2 видел, с какого адреса из интернета к нему идет подключение.
Кажется простым делом, с которым справляется ipfw+natd благодаря опции redirect-port.
Он отлично справляется, если все идет через один канал.
А когда несколько каналов, то получается вот что:
Приходит пакет с какого-то адреса в интернете (допустим с адреса 5.5.5.5) на адрес 1.1.1.1. (пакет 5.5.5.5 -> 1.1.1.1).
Проходит внутрь локалки, становясь пакетом вида 5.5.5.5 -> 192.168.0.2.
Машинка в локальной сети отвечает пакетом 192.168.0.2 -> 5.5.5.5.
И тут начинаются грабли.
Если ответный пакет уйдет в интернет с линка 1.1.1.1, то он преобразуется в пакет 1.1.1.1 -> 5.5.5.5.
И все будет нормально, ушел пакет 5.5.5.5 -> 1.1.1.1, пришел пакет 1.1.1.1 -> 5.5.5.5, соединение установлено.
А если ответный пакет уйдет с линка 2.2.2.2 или 10.0.0.3, то компьтеру придет ответный пакет 2.2.2.2 -> 5.5.5.5 или 10.0.0.3 -> 5.5.5.5, что довольно сложно опознать, как ответ на пакет 5.5.5.5 -> 1.1.1.1.
Сейчас это делается посредством программы redir (/usr/ports/net/redir).
Но у этой программы есть один нюанс.
При посылке пакета вида 5.5.5.5 -> 1.1.1.1 при прохождении через нашу машинку пакет преобразовывается в 192.168.0.1 -> 192.168.0.2.
Т.е. для машины 192.168.0.2 все соединения идут с адреса 192.168.0.1.
Необходимо сделать проброс так, чтоб 192.168.0.2 видел, с какого адреса из интернета к нему идет подключение.
Поиск по сайтам не помог.
Подскажите, пожалуйста, решение для сей ситуации.