Проксирование трафика

12
Евгений Русаченко
На сайте с 17.04.2013
Offline
157
2529

Здравствуйте.

Я немного уменьшу схему, но надеюсь цель передам.

Есть 3 слабеньких сервера или VPS / VDS и один мощный сервер.

Цель - проксировать трафик с трех слабых серверов на мощный с целью сокрытия IP основного сервера, так скажем, три сервера выступают в качестве щитов и привязаны к сервису AMAZON Route 53 для гибкости DNS.

Проксирование успешно настраивали с помощью NAT, xinetd, haproxy, но не смогли добиться передачи IP клиента на главный сервер. Вопрос такой - это реально? Сейчас передаются IP адреса прокси-серверов.

Трафик TCP, не HTTP, то есть NGINX не поставишь.

Подскажите, может все просто и я копаю вовсе, не в ту степь? :)

Почта для домена ( https://lite.host/pochta/dlya-domena ) с безлимитными пользователями и доменами / Хостинг ( https://lite.host/hosting/dlya-blogov ) от 99 рублей / поддержка Let's Encrypt / PHP от 5.2 до 8.3 / SSH / бесплатный перенос,
M
На сайте с 01.12.2009
Offline
235
#1

А чем вы пытаетесь увидеть реальные айпишки на мощном сервере ? - как юзайте nat ? пример правила tcp

Администратор Linux,Freebsd. построения крупных проектов.
Евгений Русаченко
На сайте с 17.04.2013
Offline
157
#2
madoff:
А чем вы пытаетесь увидеть реальные айпишки на мощном сервере ? - как юзайте nat ? пример правила tcp

Вот такой небольшой скриптик:

#!/bin/sh


LOCAL_IP=
LOCAL_PORT=
SHIELD_IP=
SHIELD_PORT=

iptables -t nat -A PREROUTING --dst $LOCAL_IP -p tcp --dport $LOCAL_PORT -j DNAT --to-destination $SHIELD_IP:$SHIELD_PORT
iptables -t nat -A POSTROUTING -p tcp --dst $SHIELD_IP --dport $SHIELD_PORT -j SNAT --to-source $LOCAL_IP
iptables -t nat -A OUTPUT --dst $LOCAL_IP -p tcp --dport $LOCAL_PORT -j DNAT --to-destination $SHIELD_IP:$SHIELD_PORT

С тем, как получают IP - сложнее. Приложение на java, максимум могу читать код с горем пополам.

Если верно нашел, то идет импорт:

import java.net.InetAddress;

В переменной _ip типа InetAddress хранятся данные о IP. Заполняют переменную таким образом: _ip = socket.getInetAddress();

MIRhosting.com
На сайте с 18.10.2006
Offline
203
#3

Маскарадинг включен?

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Андрей Нестеренко, MIRhosting Облачная платформа для DevOps (https://mirhosting.com/paas)
Евгений Русаченко
На сайте с 17.04.2013
Offline
157
#4
MIRhosting.com:
Маскарадинг включен?
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Был отключен, после включения ничего не изменилось.

M
На сайте с 01.12.2009
Offline
235
#5

Не получится у вас не чего, так как инициатор будет всегда первый сервер соединения и перенаправления.

M
На сайте с 24.10.2011
Offline
173
#6
Евгений Русаченко:
Подскажите, может все просто и я копаю вовсе, не в ту степь?

все действительно просто, надо на прокси дописывать в запрос оригинальный ип, а на бэкенде его извлекать. точно так же как это делает nginx/haproxy с x-forwarded-for

M
На сайте с 01.12.2009
Offline
235
#7
michaek:
все действительно просто, надо на прокси дописывать в запрос оригинальный ип, а на бэкенде его извлекать. точно так же как это делает nginx/haproxy с x-forwarded-for

michaek угу, добавить в заголовок tcp пакета .. но с словами TC "С тем, как получают IP - сложнее. " будет это сложно..

Теория у нас бурная у всех, а реализация.. хромает.. :)

M
На сайте с 24.10.2011
Offline
173
#8

madoff, естественно, придется пилить свой прокси, но это забота не ТС, а разработчиков, которые как-то этот java-сервер сделали

A
На сайте с 19.07.2010
Offline
130
#9

может тунель построить? ssh или openvpn

.............
M
На сайте с 24.10.2011
Offline
173
#10
admak:
может тунель построить? ssh или openvpn

а потом еще на бэкенде разруливать в какой туннель отвечать? :)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий