现有的 TCP 中继解决方案

现有的 TCP 中继解决方案

我有一个需要使用 TCP 中继的场景。在着手编写自定义内容之前,我想看看是否有人知道现有的软件可以为我做到这一点。

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

A -> C <- B

思路如下:

  1. A 与 C 建立 TCP 连接并等待
  2. 当 B 需要从 A 获得某些东西时,它会与 C 建立 TCP 连接。
  3. C 读取来自 B 的数据并将其响应给来自 A 的已打开的连接。
  4. A 处理数据并响应 C,C 再转发给 B。

是否存在现有的工具可以做到这一点?

答案1

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

socat TCP4-LISTEN:12345 TCP4-LISTEN:54321

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

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

相关内容