如何使用socat在客户端之间转发流量?

问题描述 投票:0回答:2

假设 socat 监听 TCP:8888。客户端 A 和客户端 B 都连接到它。我应该使用什么命令将客户端A发送的流量转发给客户端B,客户端B发送给客户端A?我知道

socat TCP4-LISTEN:8888 TCP4-LISTEN:8889
可以在两个端口之间转发。所以我可以将客户端A和客户端B分别连接到8888和8889来实现这一点。但是有没有办法使用单个端口呢?

我还发现使用

socat TCP4-LISTEN:8888 TCP4-LISTEN:8889
我必须先将一个客户端连接到8888,然后再将另一个客户端连接到8889。如何使其在两个端口中的任何一个端口接受连接?

sockets networking netcat socat
2个回答
0
投票

socat
默认情况下无法识别连接的客户端。 如果您通过
socat
clientA
监听端口,并且
ClientB
连接到它,那么如果您从 socat 终端发送相同的消息,客户端将被随机识别。 意味着有时
clientA
有时
ClientB
会收到消息。这是
socat
的默认行为。 因为socat TCP 不是有状态连接。
socat
中没有套接字会话标识符,
nc
也没有。

但是如果

clientB
在内网中,您可以将收听流量转发到那里。


0
投票

对我来说,以下命令可以完成您想要的操作(在 Linux 上):

socat TCP4-LISTEN:8888,reuseaddr TCP4-LISTEN:8888,reuseaddr
© www.soinside.com 2019 - 2024. All rights reserved.