我正努力尝试看看如何使用socat(或类似的TCP端口redirect器)在PC上暴露防火墙服务。
这里的情况是:我有一台服务器PC,它将充当两台客户端机器之间的监听“代理”/redirect器。 服务器可以根据需要打开尽可能多的防火墙端口,并具有公共IP。 在第一个“客户端”(如build立到代理服务器的出站连接)中,客户端A,我在端口4200上托pipe一个服务。这台PC在防火墙后面,它只允许基于以前的出站连接的入站TCP连接。 客户端B在防火墙后面也是如此。
我需要做的是使客户端B能够通过面向Internet的TCP代理服务器访问客户端A上的端口42000。 问题是,我只能从客户端A启动出站TCP连接。当两个中继客户端都在仅允许出站连接的防火墙后面时,如何通过服务器redirectTCP连接? 请参阅下面的图表,让我知道如果澄清是为了。
------------ | Server | |w/ public IP| ------------ / \ {|<Firewall>|} {|<Firewall>|} | | ---------- ---------- | Client A | | Client B | ---------- ---------- (hosting a service (wanting to access on port 4200) Client A port 4200)
我将不胜感激任何build议,谢谢。
就像是
在“服务器”上:
socat TCP4-LISTEN:10000 TCP4-LISTEN:4200
在“客户A”
socat TCP4:Server:10000 TCP4:localhost:4200
在“客户端B”
configuration客户端连接到服务器:4200
另外,看看SSH端口转发。
您也可以使用我最初为这种types的场景专门为RDP开发的PortFusion 。
server> PortFusion ] 10000 [ client-a> PortFusion 4200 localhost - 10000 server [ 4200
现在client-b可以连接到server:4200 for RDP。
重要的提示!!
你应该在client-a上启动PortFusion(或者其他用户)作为另一个用户,而不是从你想要连接的用户的graphics会话中启动 – 否则你会得到一个黑屏或者一个drop,等等
希望我的答案可以帮助。