我有点挣扎,想弄清楚如何使用 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 或其他任何程序)也不是从您想要连接的用户的图形会话中 - 否则,您将看到黑屏或掉线等。
希望我的回答能够对你有帮助。