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

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

我有点挣扎,想弄清楚如何使用 socat(或类似的 TCP 端口重定向器)在 PC 上公开防火墙服务。

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

我需要做的是让客户端 B 能够通过面向互联网的 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)

我将非常感激任何建议,谢谢。

答案1

就像是

在“服务器”上:

socat TCP4-LISTEN:10000 TCP4-LISTEN:4200

关于“客户 A”

socat TCP4:Server:10000 TCP4:localhost:4200

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

或者,看看 SSH 端口转发。

答案2

您还可以使用端口融合我个人最初就是针对这种情况开发的,特别是针对 RDP。

  server> PortFusion                ] 10000        [
client-a> PortFusion 4200 localhost - 10000 server [ 4200

现在客户端 b 可以连接到服务器:4200 进行 RDP。

重要的提示!!

client-a你应该以不同的用户身份启动 PortFusion (或 socat 或其他任何程序)也不是从您想要连接的用户的图形会话中 - 否则,您将看到黑屏或掉线等。

希望我的回答能够对你有帮助。

相关内容