现有的 TCP 中继解决方案

Val*_*ant 5 tcp tcpreplay

我有一个需要使用 TCP 中继的场景。在我开始写一些自定义的东西之前,我想看看是否有人知道可以为我做这件事的现有软件。

我在不同的网络上有 2 台无法相互连接的设备。我们称它们为网络 A 和 B。这些设备需要通信,它们可以通过网络 C 上的“中间人”中继来实现。A 可以连接到 C,B 可以连接到 C。C 不能连接到 A 或 B .

A -> C <- B
Run Code Online (Sandbox Code Playgroud)

思路如下:

  1. A 建立到 C 的 TCP 连接并简单地等待
  2. 当 B 想从 A 那里得到一些东西时,它建立到 C 的 TCP 连接。
  3. C 从 B 读取数据并用它响应来自 A 的已经打开的连接。
  4. A 处理数据并响应 C,C 中继到 B。

有没有现有的工具可以做到这一点?

Ale*_*Ale 2

如果您的中继机器运行 Linux 或任何类似 UNIX 的操作系统,您可以使用socathttp://www.dest-unreach.org/socat/,它作为软件包包含在许多 Linux 发行版中)。最简单的形式是,您可以通过以下方式启动中继:

socat TCP4-LISTEN:12345 TCP4-LISTEN:54321
Run Code Online (Sandbox Code Playgroud)

(其中1234554321是服务器侦听每个连接的端口)。其中一个客户端连接一个端口,另一个客户端连接另一个端口,然后双向交换数据。如果一台机器在另一台机器连接之前发送数据,则数据会被缓冲并在连接后发送。

另请参阅此处:socat connect-connect“代理”两个入站 TCP 连接以公开受防火墙保护的服务?