现有的TCP中继解决scheme

我有一个需要使用TCP中继的场景。 在开始写定制之前,我想看看有没有人知道现有的软件可以为我做这个。

我有两个设备在不同的networking上,无法连接到对方。 我们称它们为networkingA和B.这些设备需要通信,并且可以通过networkingC上的“中间人”中继来完成。A可以连接到C,B可以连接到C. C不能连接到A或B 。

A -> C <- B 

这个想法如下:

  1. Abuild立一个到C的TCP连接,然后等待
  2. B从Abuild立到C的TCP连接。
  3. C从B读取数据,并用它响应来自A的已经打开的连接。
  4. A处理数据并对C进行响应,C中继到B.

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

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

 socat TCP4-LISTEN:12345 TCP4-LISTEN:54321 

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

另请参见: socat connect-connect“proxy”两个入站TCP连接来暴露防火墙服务? 。