目录
首先当然是让云服务器拥有一个固定的IPv4,我这里使用的是腾讯云,当然你可以使用对学生免费的阿里云,但是操作上面大同小异。
起因
我有一台自己组装的电脑,配置不错但是平时没事干
i5 10400f+A770+32G+1T
Minecraft服务器如果不加模组开服还是很容易的,但是开上模组后各种问题层出不穷,在过去几年内我也一直因为这个难题没法与天涯海角的朋友一起玩,再解决完IPv6的问题后又没办法和国外的小伙伴一起玩。(外国的IPv6普及率低的吓人)
因为现在本人还是学生,所以无法接受太高的持续开销,自然没办法通过加云服务器配置的办法。于是想到了用nginx转接流量,所需要服务器就非常廉价了
准备材料
一台配置合适的电脑,一个云服务器运行linux,本地电脑拥有一个可以连接外网的IPv6。
linux服务器配置
首先当然是让云服务器拥有一个固定的IPv4,我这里使用的是腾讯云,当然你可以使用对学生免费的阿里云,但是操作上面大同小异。
进入控制台
进入自己的设备
选中公网IP并选择申请IP
后续操作可以咨询:腾讯云申请IP
我们的目的是获得一个固定的IPv4地址,同时获得一个弹性IPv6地址
随后SSH上去做配置
我这里用的是CRT
不过cmd似乎也可以直接连上去。只不过需要注意的是用户名和密码别填写错误了(错了也就多实验几次罢了)
进入!!
随后输入 dnf install nginx
等待安装--------
输入
//进入nginx目录
cd etc/nginx
//进入vi编辑
vi nginx.conf
nginx参数修改
确定你要联机的IPv6和程序端口号
将下列代码中的proxu_pass 中的[ ]内容换成本地主机的IPv6
stream {
#PalWorld: 将udp 8211端口转发到 sz-home-pc 8211端口
server {
listen 8211 udp reuseport;
proxy_timeout 20s;
proxy_pass [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:8211;
}
#PalWorld: 将udp 8211端口转发到 sz-home-pc 8211端口
server {
listen 27015 udp reuseport;
proxy_timeout 20s;
proxy_pass [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:27015;
}
#MineCraft: 将tcp 25565端口转发到 sz-home-pc 25565端口
server {
listen 25565;
proxy_connect_timeout 360s;
proxy_timeout 360s;
proxy_pass [ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff]:25565;
}
}
开始运行吧!
nginx -c nginx.conf
虽然现在确实正在运行,但是因为安全组的设置,所以一定像无法预期中那样工作
安全组设置
开始debug吧
首先下滑左侧菜单进入安全组
因为出站规则基本上没什么问题,所以只需要调整入站规则即可
我们需要增加两个,一个是本地电脑的IPv6地址,另一个是全部IPv4地址(你可以减少一些,反正只要能覆盖到你朋友就可以了)
就像这样
然后在本地上开服即可,如果是不同的游戏端口号会发生改变,协议内容也会有改变,像是幻兽帕鲁就是用UDP端口号为8211,这就需要进入安全组重新改一下开放的端口号。还需要改一下nginx的配置。
弊端
作为一个技术,没有弊端基本是不可能的。
通过这个方式开的服务器,延迟会比较高,同时流量会按照两次计费,如果你的主要玩家就是IPv4的,那么这会非常划不来。而且快速战斗的FPS游戏也会因为卡顿而无法进行下去。
安全性也是一个很大需要考量的因素。
同时还需要一个本地服务器,占用了一台机器,也需要做维护。
有些服务器压根不支持IPv6开服。(说的就是你!尼尔森和你的未转变者!)
但是这种方式nginx服务器仅仅 1G1核心 都显得完全够用了,而且可以在各种地方上使用,像是minecraft这样的TCP连接才会让延迟变得这么高的,如果是用UDP的幻兽帕鲁其实还好。