LINUX.ORG.RU
ФорумAdmin

Помогите с socat

 


0

2

Есть роутер, внешний адрес 10.0.0.1, внутренний 192.168.0.1.

Во внутренней сетке есть сервер 192.168.0.2.

Клиент извне коннектится на 10.0.0.1:6000 TCP.

Нужно преобразовать TCP в UDP и сделать port forwarding на 192.168.0.2.

Ответные пакеты на 192.168.0.1:6000 UDP нужно преобразовать в TCP и отправить клиенту.

Подскажите, как это провернуть с помощью socat?

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

Предполагаю, что мы можем данные из TCP пакета (без заголовка) просто положить в UDP дейтаграмму и отправить адресату. Ну и наоборот, при получении ответа.

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

Мочь мы можем всё, хоть вобще убрать всякие заголовки протоколов и плеваться чистым пэйлоадом в виде байткода обернув только заголовками IP, но работать это не будет.

Если софт написан на работу по такому-то протоколу и автором задуманы такие-то процедуры обмена данныими по сети, то обойдешь это ты только переписав сетевой стэк своего ПО.

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

Очень похоже, что ты изобретаешь слово инкапсуляция, но ложно рассматриваешь его не так, как оно на самом деле работает.

Попробуй перестать рассказывать о твоём решении (неверном), а рассказать о задаче, которую ты пытаешься решать. С приведением названия софта, может быть конфигов и схем адресации.

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

Должно заработать. Только я думал, вы хотите на маршрутизаторе запускать socat. В этой схеме у вас не будет:

Ответные пакеты на 192.168.0.1:6000 UDP

Ответные udp-пакеты будут на 127.0.0.1. Хотя с точки зрения надёжности, socat на 192.168.0.2 лучше.

Плюс, здесь не будет преобразования пакет в пакет. Если придёт разом несколько tcp-пакетов, ядро отдаст их содержимое разом, а socat как-то по своему нарежет в UDP-пакеты. Ну и в обратную сторону, данные из принятых UDP-пакетов просто пишутся в tcp-сокет и сколько там будет TCP-пакетов решит ядро. ″ Ну, и для красоты, раз уж пишете ″UDP:127″, то и ″TCP4-LISTEN″.

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

Только я думал, вы хотите на маршрутизаторе запускать socat.

Я и хотел на маршрутизаторе запускать, но вот это не сработало:

socat tcp4-listen:6000,reuseaddr,fork udp:192.168.0.2:6000

Можно как-то заставить работать это на маршрутизаторе?

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

В чём именно не сработало? socat на запустился? Не устанавливается tcp-соединение? Не доходят UDP пакеты до 192.168.0.2? Не доходят ответные UDP пакеты? Или в tcp-пакеты не заворачиваются?

mky ★★★★★
()