为什么不能用服务器名字直接远程链接_为1M小水管的Minecraft服务器加速的各种尝试...

遇到的问题

阿里云的学生机,10块钱一个月的那种,只有1Mbps的带宽。1Mbps是什么概念呢?就是公网下行带宽最大是1×1024÷8 = 128 kb/s,每秒最多128kb的速度,开mc服务器基本顶不住。一个只有三人的私人服务器,差不多两人就能把带宽占满,三人就开始卡,如何解决呢?

首先从Minecraft服务器的设置出发

Minecraft维基百科上关于服务器的设置文件server.properties讲的非常清楚,其中有两处地方可以大大减少服务器的带宽,他们分别是:

37ed3b251d3b3fa1476063779fc8a571.png

a6596fa45a9acf4f04036d9c12cef984.png

9e3f29d1cbbdc7cd31ff08b8582cbf5a.png

其中network-compression-threshold与数据包的压缩有关,他的本质就是拿CPU资源去换带宽资源,我的设置是0,即压缩全部数据包。

view-distance是玩家的视野距离,我一直开着1(最低配置),不过玩家几乎是感觉不到它的存在的,可以放心调低。

而第三个是Linux专用的,可以优化数据包的收发。

通过这两个配置,我的Minecraft服务器已经基本够3人玩了,但是3人的时候还是会轮流变卡,一看阿里云后台的公网出口带宽,都是全满的。还是需要解决问题!

在本机运行Minecraft服务器,使用阿里云的服务器做中转?

用frp进行端口映射,把本地的25565端口映射到云端上,这样用本机的CPU就会好一些,并且frp可以做压缩。

最终效果:比直接开在云端还慢,因为公网下行数据实际上更多了,阿里云需要在我的电脑和朋友的电脑之间做数据中转。效果很差,放弃了,强烈不推荐。

P2P的Minecraft服务器?

既然做中转会受到阿里云的带宽限制,那如果我们使用P2P呢?直接在两台电脑直接建立对等连接,而云服务器只在一开始负责帮两台电脑建立连接,等到连接建立后,数据是不经过阿里云做中转的,直接在我的朋友的电脑直接流通。

于是我开始着手寻找能够进行P2P打洞的软件,刚开始用了frp的一个P2P打洞功能,叫做XTCP,服务端配置是这样的:

[common]

我的电脑客户端配置是这样的:

# frpc.ini

朋友的电脑客户端的配置是这样的:

# frpc.ini

这样,(理论上)只要朋友访问127.0.0.1:6000就能访问到我的电脑上的Minecraft服务器了。然而最终失败了,连接不能顺利地建立。本来frp的打洞功能也非常不成熟,受到NAT类型的影响。

然后我又开始寻找其他的P2P解决方案,最终找到了NPS

和frp一样,也是Github上开源的项目,也都是用Go语言写的。

https://github.com/ehang-io/nps

于是开始了我的部署之路,安装过程只要照着(官方教程)[https://ehang-io.github.io/nps/#/install]来就行了。最终登陆管理面板是这样的:

bd04a689a97634fad29d0df54c434d39.png

然后照着官方教程,创建一个客户端:

5dca7719c0a2468294e2b942cb314569.png

参数可以随便填,然后复制最下面红色的那行命令:

8746ffa9c7e16df1213aacf29ef628a8.png

然后下载nps的客户端到我运行Minecraft服务器的本机电脑,打开cmd切换到客户端exe所在的目录下,把命令复制进去运行。注意这里不能使用PowerShell,否则会连接不上。如果cmd显示无法运行,就把那行命令前面的./去掉。

之后去创建一个P2P连接,客户端ID要和上面我们创建的客户端的ID一致。

0bae139e89a3b76a1ab57ec25c3582f8.png

然后像前面一样,复制最下面的命令:

88984f1abea72ae151bf776a2c78f7ae.png

其中那个“唯一表示密钥”是自动生成的。然后同理让朋友在他自己电脑上下载nps的客户端并cmd运行命令。之后朋友只要在mc服务器的地址填上"127.0.0.1:2000"(默认端口是2000,可以自己换),就能访问到我本机开在127.0.0.1:25565的Minecraft服务器了。

现在带宽已经没问题了,但是朋友还是反馈很卡,也找不出原因,所以就暂时放弃了这个方案。

阿里云不同实例内网互联+另一台服务器流量转发?

因为阿里云所谓的1Mbps的带宽限制,只是公网下行带宽的限制,对其他带宽(比如上行带宽、或者内网带宽)是没有限制的。我和同学在不同的阿里云账号下各拥有一台阿里云服务器,并且在同地域(这意味着内网互联是免费的)。于是我就有了另一个思路,依然把Minecraft服务器开在一台云服务器上,但是一部分玩家的流量直连云服务器,另一部分玩家通过连接另一台闲置的云服务器,然后由闲置的云服务器把流量转发到Minecraft服务器。这样带宽就变成两台服务器加起来2Mbps了。

首先是探索了半天阿里云的内网互联,由于阿里云的业务一直变化,所以网上找到的教程全都过期了,只好去看阿里云官方的文档。

首先你要在专有网络--快速链接--高速通道,找到云企业网,然后创建云企业网实例。

d37f60ee78ed20a04bde4cd72091ec81.png

先把你自己账号下的实例绑定进去,之后照着阿里云文档操作。

阿里云帮助文档

然后登陆同学的账号,进行企业网授权,详情查看搜索阿里云文档关于授权部分内容。之后再登陆你的账户把同学的实例加入企业网,这样两个实例就可以通网了。

之后,使用frp,把Minecraft服务器的25565端口映射到另一台服务器上(记得ip不要填公网ip,要填内网ip,这样才不会占用公网下行带宽),就可以了,具体不再赘述。你也可以配置服务器的防火墙规则或者使用Nginx做端口转发,也是可以的。

用frp的优点是他可以进行数据压缩,进一步减少了带宽。

总的来说,这个方案的效果还不错,就用这个了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值