无需 IP 即可使用中继服务器连接到远程服务器

无需 IP 即可使用中继服务器连接到远程服务器

我有如下3个系统:

客户端 A:IP 未公开
客户端 B:IP 未公开
服务器:某个公共 IP
客户端 C:IP 未公开

所以,我想做的是,我希望客户端 C 能够通过具有公共 IP 的反向 SSH 连接到服务器,同时客户端 A 和 B 也可以连接到服务器以访问客户端 C 本地网络上的某些端口,我们假设它们是30004000在客户端 C 的机器上运行命令

可能的方法

这是我想到的方法:

我们可以让客户端 C 连接到服务器,但在不同的子域上,并且clientc.example.com共享端口,客户端 A 和客户端 B 可以通过 ssh 来访问。clientc.example.com:3000clientc.example.com:4000

也可以采用动态端口转发的方法,如下所示:

客户端 C 可以通过动态端口转发功能 ssh 到服务器,将端口 1080 暴露为 SOCKS 代理

ssh -D 1080 user@remote_server

客户端 A 和 B 可以使用本地 SOCKS 代理

ssh -L 9000:localhost:1080 user@remote_server

1080 和 9000 只是随机端口,它们可以是任何用户希望的端口

我也可能错了,但这只是我能收集到的一些信息(过去两天我一直喝咖啡来弄清楚这一点)。

请帮我看看我应该使用哪种方法。我认为第一种方法将耗费更多的资源,因为这是一个 FOSS 项目,我希望它消耗尽可能少的资源。第二种方法可能使用较少的资源,但我自己对它如何工作感到困惑。

我看过一些项目,比如穿梭巴士但它们可能不符合我的用例。

谢谢!

答案1

“SOCKS代理”方法可以工作,但不适用于-D创建客户端代理,类似于其-L工作方式(“ssh”客户端监听 1080 通过服务器转发连接)。您需要一个等效的模式-R,它应该只-R 1080与最近的客户端和服务器有关。

使用 SOCKS 模式似乎太复杂;仅通过发布单个端口-R localhost:4000可能就足够了。

别忘了VPN本质上是双向的。如果 A、B 和 C 连接到同一 VPN 服务器,它们将能够直接通过 IP(使用其 VPN IP 地址)相互通信,而无需任何特殊配置。

(甚至存在专门用于连接客户端而几乎不依赖中央中继的“网状”VPN。)

相关内容