我曾运营过一个MineCraft服务器,但是因为部分原因,选择的机房没有移动线路,但是服务器中有不少移动玩家,但服务器只有电信联通双线,MineCraft对于网络要求较高,移动玩家连接电信、网通线路都会感到明显掉包和掉线,MineCraft的PC服务端数据传输基于TCP协议,所以转念一想,能不能用阿里云的五线BGP使用TCP转发的方式使移动玩家能流畅的进行游戏。
我曾经使用过Windows下的端口转发工具和TCP Mapping的工具,在少量玩家下运行情况良好,但是大量玩家连接的话,就会出现未响应、停止运行等等大大小小的问题,Linux下使用IPtable进行转发,但是外网转发效果并不好,经过一段时间搜索发现Rinetd这个工具。
1、安装必备
yum -y install gcc* wget
2、下载Rinetd
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
3、解压
tar zxvf rinetd.tar.gz
4、进入目录
cd rinetd
5、然后修改工具源码中的两个错误
vi rinetd.c
搜索bindPort >= 65536和connectPort >= 65536然后把65536均改为65535
6、然后编译
make
7、创建目录
mkdir /usr/man
8、安装
make install
9、创建配置文件 ,可以自己指定目录此处我放在etc文件
vi /etc/rinetd
配置如下
0.0.0.0 25565 222.168.254.168 25565
格式为源地址 源端口 目的地址 目的端口
10、开启端口转发,-c后面为配置文件路径
./rinetd -c /etc/rinetd
关闭进程
pkill rinetd
启动转发
rinetd -c /etc/rinetd
把上方这条命令加到/etc/rc.local里面就可以开机自动运行
同样,这个东西可以有许多应用的地方,在一台外网服务器搭建VPN内网服务器连接VPN,或者通过gre隧道的方式将内网和外网的机器构建一个虚拟内网环境,然后在外网的服务器通过虚拟的内网IP转发到内网的机器上,就可以做到类似TCP穿洞的效果。
我也将这个用于外网访问内网RDS上,经过对源代码研究发现此还是主要通过iptable的nat转发功能来实现,无法实现IP透传。
文章评论
請問一下 版主有試過 rinetd + BBR 然後用於MineCraft 嗎? 可以分享一下嗎?
@john0526 已测试BBR+Rinetd,使用BBR与不使用BBR实际感觉相同,也许是大陆内机器连接普遍延迟在50ms以内所以没有多大感觉,对于高延迟可能会有所效果。