socat 连接连接“代理”两个入站 TCP 连接以公开防火墙服务?

cjo*_*s26 4 firewall port tcp redirection socat

我正在努力尝试了解如何使用 socat(或类似的 TCP 端口重定向器)在 PC 上公开防火墙服务。

这是场景:我有一台服务器 PC,它将充当两台客户端计算机之间的侦听“代理”/重定向器。服务器可以根据需要打开任意数量的防火墙端口,并有一个公共 IP。在第一个“客户端”(如建立到代理服务器的出站连接)客户端 A 上,我在端口 4200 上托管服务。这台 PC 位于防火墙后面,该防火墙仅允许基于先前出站连接的入站 TCP 连接。Client B 后面的防火墙也是如此。

我需要做的是让客户端 B 能够通过面向 Internet 的 TCP 代理服务器访问客户端 A 上的端口 42000。问题是我只能从客户端 A 启动出站 TCP 连接。当中继的两个客户端都位于只允许出站连接的防火墙之后时,我如何通过服务器重定向 TCP 连接?请查看下图并让我知道是否需要澄清。

                  ------------
                 |   Server   |
                 |w/ public IP|
                  ------------
                 /            \
          {|<Firewall>|}    {|<Firewall>|}
                |                 |
          ----------          ----------        
         | Client A |        | Client B |
          ----------          ----------
       (hosting a service    (wanting to access
         on port 4200)         Client A port 4200)
Run Code Online (Sandbox Code Playgroud)

我将不胜感激任何建议,谢谢。

Red*_*ick 6

就像是

在“服务器”上:

socat TCP4-LISTEN:10000 TCP4-LISTEN:4200
Run Code Online (Sandbox Code Playgroud)

在“客户 A”上

socat TCP4:Server:10000 TCP4:localhost:4200
Run Code Online (Sandbox Code Playgroud)

在“客户端 B”上
配置客户端连接到服务器:4200

或者,查看 SSH 端口转发。