Использование netcat для переадресации портов

19

У меня есть процесс, который слушает IP:port- на самом деле это потоковое зажигание, которое подключается к сокету. Проблема заключается в том, что я хочу каким-то образом создать сервер, который подключается к серверу Spark на одном порту, и данные передаются на этот сервер с другого порта.

Например, пример потоковой передачи искры использует утилиту netcat (например nc -lk 5005). Однако у меня есть другой сервис, который прослушивает входящие сообщения, а затем выкладывает сообщение. Поэтому мне нужен какой-то сервер, который может прослушивать сообщения от службы А и передавать их на спарк.

Мой сервис А, опирается на сокеты. И мой искровой потребитель полагается на розетки.

Вот что я сделал до сих пор, это переадресация с порта на порт, но это, похоже, не работает:

nc -X 4 -x 127.0.0.1:5005 localhost 5006

С мыслью, что сервис A:5005-> розетка -> 5006-> Spark

Я не могу найти правильный способ сделать эту работу.

Некоторые ответы предложили следующее:

socat tcp-l:5005,fork,reuseaddr tcp:127.0.0.1:5006

Мой приемник искровых розеток не подключается или не может подключиться. Я получаю ошибку:Error connecting to 127.0.0.1:5006 - java.net.ConnectException: Connection refused

разрушительный
источник
Вы уверены, что порт 5006 открыт ?! ; whatis выводит эту команду sudo netstat -nltp
بارپابابا

Ответы:

27

Вы не можете использовать только ncдля прямого трафика, nc не имеют keep-aliveили forkрежим

вместо этого вы должны использовать другие инструменты nc; например использовать socatилиncat


эта команда слушает порт 5050и перенаправляет все на порт2020

socat tcp-l:5050,fork,reuseaddr tcp:127.0.0.1:2020

Ncat - это многофункциональная сетевая утилита, которая читает и записывает данные в сети из командной строки. Ncat был написан для Nmap Project как значительно улучшенная реализация нового почтенного Netcat. Это

ncat -l localhost 8080 --sh-exec "ncat example.org 80"

И вы можете использовать другие инструменты:

Прослушайте порт 1234 и перенаправьте его на порт 4567 по адресу «1.1.1.1».

./proxy tcp -p ":1234" -T tcp -P "1.1.1.1:4567"

Слушайте на порт 1234 и направить его в порт 4567 на адрес «1.1.1.1» источник

./gost -L tcp://:1234/1.1.1.1:4567
بارپابابا
источник
1
Спасибо, я попробовал первый тест socat, но проблема в том, что мой потоковый экземпляр все время ожидает что-то там и слушает на 5006 - без этого я получаю ошибку.
разрушительное
У ncap также есть опции для прокси ... Что позволяет делать некоторые интересные вещи ... ( gostхотя выглядит потрясающе ....)
Герт ван ден Берг,