LINUX.ORG.RU
ФорумAdmin

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

redirect используется для локальных процессов то есть когда нужно перенаправить трафик на другой порт этого же сервера

для перенаправления на другие хосты нужно использовать цепочки prerouting и postrouting таблицы nat

и там соотвественно указывать адреса хостов для цели DNAT и если SNAT если нужно

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

Да ... про НАТ я знаю нго проблеммы это не решает ... всёравно не удаётся узнать куда же изначально конектился клиент.

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

что значит куда коннектился что на какой то адрес, который не принадлежит вашей сети то это будет идти через цепочку форвард и тебе не надо заботиться об адресе куда клиент обращается он будет в заголовке Ip пакета только если он идет на внешний адрес если есть необходимость - нужно делать SNAT

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