我想设置一个小游戏服务器和我的朋友一起玩,我支付了一个 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 命令吗?我只是对这个命令应该做什么感到非常困惑。所以......我是否在正确的轨道上但只是错过了一步?还是我需要一种完全不同的方法?
我试过一件事,希望你也可以试试。我已经在具有公共 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 服务器上运行
ssh -L 8080:10.8.0.2:8000 -N -o GatewayPorts=yes [email protected]
并繁荣!所以从现在开始,任何来自 8080 端口的请求都会被转发到我的本地机器的 8000 端口。我可以使用 VPS 公共 IP 从 Internet 连接到我的本地计算机
x.x.x.x:8080
如果我的回答偏离主题,我很抱歉,但由于您的目标是将您的家用 PC 暴露在 Internet 上,我想知道 - 它真的必须通过您的 VPS 转发吗?
如果通过外部服务执行此操作也是一个可行的选择,您可以尝试使用 ngrok - 它非常易于使用,只需下载二进制文件,然后在运行 ./ngrok [protocol] [port_number] 后,您将获得一个服务器 URL,例如 [hash].ngrok.io,您与朋友分享(至少在 Stack Overflow 上似乎有人像这样玩 Minecraft)
但是请注意,美国服务器的位置可能对您和您的朋友来说不是最理想的(在最坏的情况下,如果它对延迟敏感,甚至可能使游戏无法玩) - 或者,您可以尝试选择最近的一个使用上述 SO 链接中描述的 -region 选项(查看文档以获取详细的区域列表)