使用netcat进行端口转发

使用netcat进行端口转发

我有一个进程监听IP:port- 事实上它是连接到套接字的火花流。问题是我希望以某种方式创建一台连接到一个端口上的 Spark 的服务器,并且数据从另一个端口流式传输到该服务器。

例如,spark 流示例使用 netcat 实用程序(例如nc -lk 5005)。但是,我有另一个服务可以侦听传入的消息,然后发出消息。所以我需要某种服务器可以监听来自服务A的消息并将它们传递给spark。

我的服务 A 依赖于套接字。我的 Spark 消费者依赖于套接字。

这是我到目前为止所做的从端口到端口的转发,但这似乎不起作用:

nc -X 4 -x 127.0.0.1:5005 localhost 5006

想法是service A:5005-> socket -> 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

答案1

您不能仅nc用于转发流量、nc 没有keep-alivefork模式

你必须使用其他工具来代替nc;例如使用socatncat


此命令侦听端口5050并将所有内容转发到端口2020

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

Ncat 是一个功能丰富的网络实用程序,可以从命令行跨网络读取和写入数据。 Ncat 是为 Nmap 项目编写的,是对古老的 Netcat 的大幅改进的重新实现。它

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

您还可以使用其他工具:

侦听端口 1234 并将其转发到地址“1.1.1.1”上的端口 4567

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

侦听端口 1234 并将其转发到地址“1.1.1.1”上的端口 4567来源

./gost -L tcp://:1234/1.1.1.1:4567

答案2

我有一个类似的用例。我的目的是监听外部端口并将其转发到指向反向 ssh 隧道的内部端口。

外部端口:8001

内部端口:18820

nc -l -k -p 8001 -c "nc 127.0.0.1 18820"

参考:

创建从一个本地端口到另一个本地端口的隧道的简单方法?

如何保持 netcat 连接打开?

答案3

对于仅通过 net cat 进行端口转发,您可以使用管道:

mkfifo pip
nc -l -p port_to_listen < pip | nc target_ip port_to_be_forwarded > pip

或者:

nc target_ip port_to_be_forwarded < pip | nc -l -p port_to_listen > pip

相关内容