如何通过另一台服务器转发端口

如何通过另一台服务器转发端口

我想设置一个小型游戏服务器来和我的朋友一起玩,我付费购买了 vps,但它没有运行该游戏服务器的硬件。我自己的电脑可以运行该服务器,但从外部互联网打开我的电脑的端口对我来说并不是一个真正的选择。

因此,对我来说最理想的是通过我的 vps 从我的电脑转发端口,但我实际上没有任何网络知识,而且我在网上找到的信息对我来说非常混乱。

据我了解,可以通过ssh吗?

我看到这个人在做类似的事情: 如何将端口从一台机器转发到另一台机器?

不过,我对这个问题的答案有点困惑。它提到做:

ssh -L 2222:localhost:8888 -N -o GatewayPorts=yes hostname-of-M

在问题中,M 应该是主机,S 是流量应该路由的机器服务器。这个人 anwsering 提到:“你可以使用 localhost 而不是 M”,这让我认为你应该从机器 M 运行这个命令

但如果 M 是 localhost,那么在这个命令中您实际上在哪里连接到 S?

我尝试使用我的 vps 的 ip 而不是“hostname-of-M”,但这似乎没有多大作用。

这就是我现在的情况,我认为应该可以通过 ssh 实现吗?但我并不完全确定这一点?只有当 M 的 ip 从 S 可见时,这个 ssh 功能才可能实现,然后我应该从 S 运行 ssh 命令吗?我只是对这个命令到底应该做什么感到非常困惑。那么...我是否走在正确的轨道上,但只是错过了一步?或者我需要一种完全不同的方法吗?

答案1

我尝试过一件事,希望你也可以尝试一下。我已经在具有公共 IP 的 VPS 上安装了 OpenVPN 服务器,并将我的本地计算机连接到 VPN 服务器。在这种情况下

VPS 公共 IP: xxxx
VPS 内部 Openvpn 隧道 IP: 10.8.0.1
本机 Openvpn 隧道 IP: 10.8.0.2

激怒python3 -m http.server本地机器哪些服务器在端口 上提供 http 服务器8000

VPS服务器跑和繁荣!因此,从现在开始,任何到达端口 8080 的请求都将转发到我本地计算机的端口 8000。ssh -L 8080:10.8.0.2:8000 -N -o GatewayPorts=yes [email protected]

我可以使用 VPS 公共 IP 从互联网连接到我的本地计算机x.x.x.x:8080

答案2

如果我的回答偏离主题,我很抱歉,但由于您的目标是将您的家用电脑暴露在互联网上,我想知道 - 它真的必须通过您的 VPS 转发吗?

如果通过外部服务执行此操作也是一个可行的选择,您可以尝试恩格罗克相反 - 它真的很容易使用,只需下载二进制文件,然后运行 ​​./ngrok [protocol] [port_number] 后,您将获得一个服务器 URL,如 [hash].ngrok.io 您与朋友分享(至少,Stack Overflow 上似乎有人这样玩 Minecraft

但请注意,美国服务器位置可能对您和您的朋友来说不是最理想的(在最坏的情况下,如果对延迟敏感,甚至可能导致游戏无法玩) - 或者,您可以尝试选择最接近的服务器使用 -region 选项,如上面的 SO 链接中所述(检查文档获取详细地区列表)

相关内容