Назад | Перейти на главную страницу

Перенаправление портов между 2 Интернет-машинами

Вот мой сценарий:

Настроить

Есть 3 машины:

A: в инете: есть ip (a.a.a.a), имеет порт pa открыто

B: мой сервер / шлюз: есть ip (b.b.b.b), имеет порт pb открыто

C: в инете: есть ip (c.c.c.c), имеет порт pc открыто

Ограничения

Владелец машины A предлагает услугу через порт pa который должен быть доступен на машине C через порт pc. Проблема в том, что владелец A может разрешить только прямое соединение с моим сервером, машиной B в порту pb.

Обратите внимание, что, A и C находятся в Интернете, поэтому, по сути, я должен действовать как шлюз между двумя машинами в Интернете (литература, которую я нашел в большинстве документов по брандмауэру, касается работы в качестве шлюза между интернетом и вашим местным сеть).

Дополнительно

Машина B работает под управлением OpenSuse 11.4

Требования

Моя задача - убедиться, что я отдаю машину C услуга, предлагаемая A через мой сервер B, таким образом, чтобы трафик из A:pa заканчивается на C:pc и трафик из C:pc заканчивается на A:pa.

Итак, как я могу этого добиться, скажем, используя iptables или другая утилита Linux / Unix? Это вообще возможно?

Гипотетическое решение:

Вот идея, которую я имею в виду, но не уверен, что она законна или имеет смысл:

iptables -t nat -A PREROUTING -p tcp --source a.a.a.a --source-port pa \
--destination b.b.b.b --destination-port pb -j DNAT --to-destination c.c.c.c:pc

и

iptables -t nat -A PREROUTING -p tcp --source c.c.c.c --source-port pc \
--destination b.b.b.b --destination-port pb -j DNAT --to-destination a.a.a.a:pa

Я предполагаю, что C подключается к A: pa (это не совсем понятно). Вам необходимо выполнить как DNAT, так и SNAT на B для этих подключений от C:

iptables -t nat -A PREROUTING -p tcp -s c.c.c.c -d b.b.b.b --dport pb -j DNAT --to-destination a.a.a.a:pa
iptables -t nat -A POSTROUTING -p tcp -d a.a.a.a --dport pa -j MASQUERADE