欢迎光临散文网 会员登陆 & 注册

低网络成本搭建Minecraft服务器

2023-07-30 13:54 作者:Thaumstrial  | 我要投稿

B站对md语法不支持,懒得重新排版了,可以前往

https://thaumstrial.github.io/post/di-wang-luo-cheng-ben-da-jian-minecraft-fu-wu-qi/

查看原文

开了一段时间服务器,发现一个不错的联机方法,具体可以查看"自己电脑+NAT打洞"部分

有多个小伙伴想要一起玩Minecraft时,搭建服务器不可避免。

除开硬件成本下,网络成本对腐竹也是很大的考验,接下来提供可行的思路和我的解决方案。

使用自己的电脑开服+内网穿透

在自己电脑上运行MC,开放到局域网,再使用第三方内网穿透工具,如花生壳,sakura等。

可以实现几乎免费开服,但相应的,不稳定的延迟,你的电脑必须24小时在线,阻止了你和基友畅玩MC。

不过对手残党和学生党开几个人的服务器还是相当友好,b站上也有很多教程。

VPS开服

使用私有的云服务器开服,网络体验可以得到极大改善,但致命的问题就是:

非常贵!

而且我开的是工业服务器,对服务器计算能力要求高,有钱买强劲的VPS,不如多买几个烂点的VPS做代理分流玩家划算。

自己电脑+VPS代理

在自己电脑上运行MC,买一个云服务器使用内网穿透。

这个方案是我一开始使用的,截至2023年7月30日,腾讯的轻量云大概60元一个月,4mbps的带宽和稳定的连接可以让多个基友畅玩MC,但服务器->云->客户端,客户端->云->服务器这种传输路线会导致较大延迟。

搭建内网穿透服务器并使用可以查看这篇教程[jamesdodo 内网穿透工具 FRP Linux 环境搭建安装](https://blog.csdn.net/jamesdodo/article/details/120970420)


我使用这个方案开服开了半年多,但随着人数从几个人增加到最大10多个人同时在线,4mbps的小水管已经快被撑爆了。想要更大的带宽,得氪更多金,虽然有好心玩家提供的赞助,不过这样服务器就没法作为公益服长远维持下去了。

然而,最离谱的是服务器不知道为什么被Ddos攻击了:

服务器被蕨了,悲

太惨了,开个公益服还会一直被DDoS。首先考虑使用Cloudflare套上,应该能把Ddos扛下来,但发现套上Cloudflare后延迟高得离谱。买高防包又贵,看着玩家就要跑完,我不得不尝试新的办法。

自己电脑+P2P组网联机

把玩家的电脑和服务器构建一个p2p网络,使用的是[OpenP2P](https://www.openp2p.cn/),使用公共的转发服务,甚至可以把VPS的钱剩下来。

但还是有很大的问题,对于手残的玩家,需要配置p2p客户端很麻烦,增加了进服门槛。同时使用公共转发的p2p联机需要等上一会儿扫描才能建立,消耗玩家耐心,而且p2p同样不稳定,可能有的人延迟很低,有的人网络体验就不行了。

于是在尝试了一下p2p联机后,我把这个作为备份方案,如果DDoS还继续下去,或许只能试试这个了。不过我暂时把目光移向了IPv6。

自己电脑+IPv6

现在据说是大力推行ipv6,每家都很好搞到公网ipv6地址,但ipv6不能向下兼容ipv4,所以有玩家只有ipv4地址的话就不能连接到服务器了,去调查了一圈,发现大部分人都不能进入ipv6网络。

虽然可以使用类似4in6的技术让纯ipv4机器能连接到纯ipv6,但也要中转服务器。

无论如何,看着被DDoS打得奄奄一息的服务器,先试试吧。


去问了广电运营商,说ipv6还在测试???向工信部投诉也没用了,换了移动运营商,不过宽带师傅也不懂ipv6这个新玩意,折腾了半天自己弄了好了。

可以参考[移动宽带如何获取IPV6地址 - 知乎](https://zhuanlan.zhihu.com/p/146528034)

记得一定要找宽带师傅要光猫的超级管理密码,和拨号上网密码!

在服务器的电脑获得了公网ipv6后玩家就可以通过[ipv6]:port来直连服务器啦。


比如在多人游戏中输入[2409:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX]:25565(注意是公网的ipv6,别把局域网的ipv6输入进去了)

ipv6就是给力速度是真的快,由于从服务器->云->客户端变成了服务器->客户端的连接方式,延迟能显著降低。而且一般100兆的家庭宽带能有20mbps左右的上行,轻松承载很多玩家。


不过大部分玩家还是不支持ipv6网络,所以仍然作为备用方案2号。

自己电脑+NAT打洞

置NAT1

正当我一筹莫展的时候,在配置ipv6时学习到了4中NAT类型,可以参考这篇文章[wellnw 路由器四种NAT](https://blog.csdn.net/wgl307293845/article/details/120450626)。发现如果家里的网络是NAT1,可以实现ip+固定端口打洞,不就能能公网直连MC服务器了吗?

多亏有人已经提供了工具[github natmap](https://github.com/heiher/natmap)

但是natmap只支持linux和freeBDS操作系统,就算是用windows+WSL也有兼容问题,参考[搞个windows版本? issues 8](https://github.com/heiher/natmap/issues/8)。如果是只有windows操作系统的电脑,得整个linux虚拟机(可以使用VMware安装),或者在别的linux机器上运行。

由于家里的PC电脑运行的是[PVE](https://www.proxmox.com/en/proxmox-virtual-environment/overview)(非常推荐这个,如果要在服务器上开很多个虚拟机用于不同服务),Minecraft服务器运行在一个Windows操作系统上,再开了一个Ubuntu虚拟机作为代理到公网的服务器。

查看linux服务器的NAT类型,如果为NAT1可以少折腾点,参考[835705904 Linux设备检测外部网络NAT类型](https://blog.csdn.net/u012176686/article/details/116455566)

如果发现linux服务器所在不为NAT1,进行下面操作:路由器把linux服务器ip地址放入DMZ区域,打开upnp。(有一定被网络攻击的风险,请确保你明白在做什么并根据专业指导做好相关防护)。参考[Toptab 网络类型NAT3改NAT1](https://blog.csdn.net/qq_46648437/article/details/113747066)

确保检测linux服务器为NAT1后,就可以愉快的打洞到公网啦。

NATMAP打洞

前往[natmap release](https://github.com/heiher/natmap/releases)下载适用于linux操作系统的版本。

把程序改名为natmap,执行

```ssh

natmap -s stunserver.stunprotocol.org -h qq.com -b 123 -t 192.168.1.201 -p 25565

```

stunserver.stunprotocol.org为stun服务器,有可能会抽风,可以换成别的stun服务器

qq.com是http服务器

192.168.1.201为跟linux服务器同一网络下,MC服务器的局域网ip地址,25565为Minecraft服务器打开的端口,默认为25565,可以在server.properties中被修改。

实现原理就不多介绍了,进阶用法或感兴趣的伙伴可以参考官方wiki[natmap wiki](https://github.com/heiher/natmap/wiki)

运行完上面的命令,成功的话就会返回公网ip地址+端口,到时候使用这个ip+端口就可以直连服务器了。

于是服务器有10多个玩家都不卡了233。

DDNS

但基友们玩得正高兴的时候,突然全体掉线了,难道又被DDos攻击了?家用网络有着运营商级别的防火墙,就算被打了家用的公共的ip也会被切换。

对,打洞到公网的ip是被切换了,但不是由DDos引起的。家用网络的公网ip是动态的,可能几天或者时不时就换了。如果每次公网ip被切换了,要再次向基友们公布新的服务器地址也太麻烦了,刚好有DDNS这个技术来解决问题。我花了7块钱从腾讯云上买了1年的域名(腾讯云是不是该给我打钱)

这是目前唯一的网络开销(不算家里网费的话)。

使用[github ArDNSPod](https://github.com/imki911/ArDNSPod/tree/master),里面有详细介绍,可以通过一个sh脚本更新dns,再配合linux的corn定时任务,参考[linux corn使用教程](https://blog.csdn.net/qq_51514930/article/details/124269555)。定时地执行这个脚本,我设置的是半小时执行一次。这样公网ip偶尔变动了,也可以通过域名动态解析到服务器的公网ip上。

终于,使用域名:端口号,就能和许多人畅快联机啦,在能够享受到很好的网络体验同时,花的钱又少。

结束

由于涉及到太多东西,具体的操作难以详细描述,比如怎么安装PVE。怎么配置虚拟机,怎么弄DNS,NAT1234又是什么鬼,将持续更新新的文章补充细节。如果有任何疑问也欢迎提出来讨论。


低网络成本搭建Minecraft服务器的评论 (共 条)

分享到微博请遵守国家法律