LINUX.ORG.RU
ФорумAdmin

Перенаправление трафика


0

2
Первый сервер (с которого)
iptables -t nat -A PREROUTING --dst ИП_С_КОТОРОГО_ПЕРЕНАПРАВЛЯЮ -j DNAT --to-destination ИП_КУДА_ПЕРЕНАПРАВЛЯЮ

Второй второй (куда)
iptables -t nat -A POSTROUTING -s ИП_КУДА_ПЕРЕНАПРАВЛЯЮ -j SNAT --to-source ИП_С_КОТОРОГО_ПЕРЕНАПРАВЛЯЮ

На одном сервер (например нода + впски) -> работает. Между двумя разными серверами - нет.
Как можно перенаправить трафик? Именно в варианте с NAT, iptables.


Ответ на: комментарий от Bers666

ну а еще можно повесить socat на tcp порт, эффект тот же.

Bers666 ★★★★★
()
Ответ на: комментарий от Bers666

x.x.x.x - первый сервер, перенаправляем
y.y.y.y - второй сервер, принимаем
Первый сервер получилось перенаправлять с помощью

iptables -t nat -A PREROUTING --dst x.x.x.x -j DNAT --to-destination y.y.y.y
iptables -t nat -A POSTROUTING -p tcp --dst y.y.y.y -j SNAT --to-source x.x.x.x

или

iptables -t nat -A PREROUTING -p tcp --dst x.x.x.x -j DNAT --to-destination y.y.y.y
iptables -t nat -I POSTROUTING -j MASQUERADE;

Теперь проблема с «прозрачностью». Второй сервер определяет IP -> первого. Как сделать чтобы определял реальный ип пользователей?

Пробовал добавить и заменять флаг -s на -d

iptables -t nat -A POSTROUTING -s ИП_КУДА_ПЕРЕНАПРАВЛЯЮ -j SNAT --to-source ИП_С_КОТОРОГО_ПЕРЕНАПРАВЛЯЮ

poiuty
() автор топика
Ответ на: комментарий от poiuty

Как сделать чтобы определял реальный ип пользователей?

никак. только если на уровне протокола вставлять какой-нить заголовок. Например для HTTP это X-Forwarded-For или X-Real-IP, для SMTP Recieved from:.

Да, есть еще способ - добавить запись в таблицу маршрутизации, чтоб ядро просто перекидывало , без snat/dnat, пакет на следующий сервер. Только надо удостовериться, что вышестоящий шлюз разрешит такие пакеты с левым src. Ну или можно кидать их в туннель между серверами. Опять же, надо на сервере-приемнике пошаманить, чтоб они принимались и ответ шел в правильное место - в туннель обратно.

Bers666 ★★★★★
()
Последнее исправление: Bers666 (всего исправлений: 1)
Ответ на: комментарий от Bers666

Можно пример, как добавить заголовок?
Я думаю, лучше будет дописать код приложения. Что-то типо

if(наш_прокси_ип) -> достать реальный ип из заголовка.

poiuty
() автор топика
Ответ на: комментарий от poiuty

Вот, это типичный случай, когда «проблему» надо описывать с начала (перекинуть http трафик), а не с конца (перекинуть IP трафик).

Можно пример, как добавить заголовок?

iptables-ами никак. Повесь на этот порт nginx и сделай проксирование на нужный IP, а на приемнике в апаче поставь mod_rpaf. Примеров в нете куча.

Я думаю, лучше будет дописать код приложения. Что-то типо

Если есть mod_rpaf, то делать ничего не надо в приложении. Апач сам подставит клиентский IP из X-Forwarder-For.

Bers666 ★★★★★
()
Ответ на: комментарий от Bers666

Это не http трафик. Хочу поднять доп хосты «ближе к пользователям» и с них проксировать трафик на главный хост. При этом сохранить их реальные ипы.

poiuty
() автор топика

Чувак, то что тебе нужно называется OpenVPN.

Но конечно, если хочешь - можешь и дальше онанировать вприсядку в ластах в гамаке (это про iptables и NAT)

no-dashi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.