LINUX.ORG.RU

iptables & REDIRECT & сокеты


0

0

Люди ... ХЕЛП !!!

Надо сделать прозрачное проксирование TCP соединения (не HTTP - просто TCP) ...

пробую сделать так

есть клиент  10.0.0.1
есть шлюз    10.0.0.3
есть севера Х.Х.Х.Х

должно получится следующее КЛИЕНТ конектится к серверу на порт 1234 ... при этом его трафик идёт через шлюз ... 

на шлюзе трафик заворачиваем для прозрачного проксирования с помощью 
iptables командой:

iptables -t nat -A PREROUTING -p tcp --dport 1234 -j REDIRECT --to-ports 5678

на шлюзе также есть TCP сервер который принимая коннекты на порт 5678 должен перенаправлять их на 1234 сервера Х.Х.Х.Х. вопрос ... Как этот TCP сервер узнае на какой IP сервера Х.Х.Х.Х ему конектиться .... Куда изначально конектился клиент ? как это узнать ?

если в сервере делать getsockname и getpeername ... они возвращают
только IP клиента и шлюза ... а как узнать серсеру куда же редиректить это соединение ? 
может правила какие другие надо для iptables или как вообще такое можно сделать ?

Заранее благодарю.


anonymous

Прозрачное проксирование работает из за того что в протоколе HTTP/1.0 есть поддержка виртуальных серверов (кажется hostname: ....) что и обрабатывает прокся.

nat меняет поля заголовка пакетов а об исходных хранится гдето (вот тут я незнаю толи это алгоритм толи таблица ) таким образом возможно стоит попробовоть сделать взаимодействие с этой "таблицей"

или же вместо редиректа через queueing передовать своей програме которая и будет обрабатывать пакеты (заворацивать куда надо)

если число серверов и портов ограничено можно попробовать на каждый саой редирект

Если что то удастся буду благодарен если запостите инфу об это (или ссылк на неё)

С уважением и желаю удачи.

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