![如何将流量从公开可用的服务器转发到非公开可用的计算机?](https://linux22.com/image/16006/%E5%A6%82%E4%BD%95%E5%B0%86%E6%B5%81%E9%87%8F%E4%BB%8E%E5%85%AC%E5%BC%80%E5%8F%AF%E7%94%A8%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BD%AC%E5%8F%91%E5%88%B0%E9%9D%9E%E5%85%AC%E5%BC%80%E5%8F%AF%E7%94%A8%E7%9A%84%E8%AE%A1%E7%AE%97%E6%9C%BA%EF%BC%9F.png)
我的家用计算机位于 ISP 级 NAT 后面,因此不允许我托管游戏服务器。
我有一个 VPS,用作网络服务器。我想托管一个《我的世界》游戏服务器,但 VPS 不够强大。
我的电脑和 VPS 都运行 Linux。我的计算机可以连接到我的服务器,但服务器无法打开到我的家庭计算机的连接。
我想要实现的是:
- 某些用户连接到我的服务器上的端口 27015。
- 然后,服务器通过我与家用计算机打开的某个连接,将所有流量从服务器上的端口 27015 转发到我家用计算机上的端口 27015。
ssh可以做到这一点吗?我知道它可以起到相反的作用。如果没有的话还有其他程序可以做到这一点吗?
答案1
简短回答:是的,SSH可以做到这一点。答案就在你的问题中:“反向”隧道。请参阅-R的选项SSH客户:
-R [绑定地址:]端口:主机:主机端口
指定给定的港口在远程(服务器)上主持人将转发到本地侧的给定主机和端口。这是通过分配一个套接字来监听的港口在远程端,每当与此端口建立连接时,该连接都会通过安全通道转发,并与主机端口建立连接主机端口从本地机器。
多读一些永远有用的文章如何锻造(反向 SSH 隧道),但基本原则是你SSH从您的私有主机到您的公共主机,指定要映射回的端口。记住在命令中设置你的绑定地址,否则默认情况下它只会绑定到本地循环。
答案2
作为替代方案,您也可以使用 netcat 来完成此操作。
http://en.wikipedia.org/wiki/Netcat#Port_Forwarding_or_Port_Mapping
Netcat 值得拥有。你可以用它做各种有趣的事情。