ZeroTier One搭建MOON服务器
完美解决Tabletop等和好友P2P联机延迟高的解决办法及相关踩坑
说明
该方法仅限P2P联机并且仅限好友之间联机
适用的游戏有tabletop桌游模拟器,雨中冒险2,枪火重生,森林,英灵神殿等需要一名好友开房的游戏,当然部分游戏可以直接搭建一个一直开启的游戏服务器,但是对服务器的性能要求较高.
而此种方法仅需非常低配的一个服务器即可,可以稳定联机不掉线,最多100人,当然所以方法都会受限于个人的网络质量。
提要和准备
本文可能可以解决大部分靠百度谷歌不能解决的问题,如有遗漏可下方留言,另外不接受过于低级的求助,感谢理解
需要的东西
一台云服务器,1核1G的即可,反正非常低配都行,windows server或者linux都可以
一个zerotier账户
STEP1
注册免费账户:
1 |
|
并创建NETWORK:
随后点进去:
复制下这个网络ID:
这个页面请暂时不要关掉
STEP2
[ 重要 ] 打开你的云服务器控制台,若开启了安全组,请先为安全组开启TCP和UDP的9993端口
打开你的云服务器
若是windows server去这里下载
1 |
|
windows安装完不会有提示,但你能在右下角看到一个他的小图标,就代表他安装好了
然后打开系统自带的防火墙,也开启TCP和UDP的9993端口
若是linux,直接使用命令安装和开端口,一行一个:
1 |
|
踩坑1
linux端若报错,看中间一段是否有这个
1 |
|
若有请更换您的linux系统,务必保证是纯净版
STEP3
加入组网
windows:打开powershell,切记一定要管理员模式打开,输入命令,xxxxxxx是本文上方STEP1中的网络ID
1 |
|
看到200 join OK即可
linux:直接使用命令,xxxxxxx是本文上方STEP1中的网络ID
1 |
|
看到200 join OK即可
STEP4
找到STEP1的网页,刷新一下,往下拉,找到这一块
并在前面打上勾,该页面就可以关闭了
然后回到云服务器
windows:用powershell输入命令重启服务,一行输完回车一下再输下一行
1 |
|
linux这一步不需要操作
STEP5
windows:输入命令,一行一个命令
1 |
|
然后打开C:\ProgramData\ZeroTier\One
找到moon.json并用notepad++或者vscode之类的打开,不建议记事本
可以看到里面的信息
1 |
|
修改其中的
1 |
|
为
1 |
|
此处的xx.xxx.xx.xx是你的服务器的公网IP
然后下面的客户端id即”58df15c58d”,每个人的都不一样,请复制好你自己的客户端id
1 |
|
然后看踩坑2
踩坑2
请注意windows端保存前,修改一下编码,确保是UTF-8编码
因为默认打开是UTF-16编码,会导致进行STEP6时出现:
zerotier-one_x64.exe已停止运行
linux:输入命令,一行一个命令
1 |
|
然后会进入moon.json内,这时候按按键i左下会出现–insert–,说明可以进行编辑
1 |
|
修改其中的
1 |
|
为
1 |
|
此处的xx.xxx.xx.xx是你的服务器的公网IP
然后下面的客户端id即”58df15c58d”,每个人的都不一样,请记住你自己的客户端id
1 |
|
然后按按键ESC,左下角的–insert–会消失,这时候输入
1 |
|
即可退出并保存
STEP6生成签名文件
windows:接着上文的powershell继续输入命令
1 |
|
会生成一个00000058df15c58d.moon文件,此处的58df15c58d就是STEP5中的客户端id
然后打开C:\ProgramData\ZeroTier\One
创建文件夹:moons.d
将生成的00000058df15c58d.moon复制进moons.d文件夹
然后再输入命令:一行一个
1 |
|
此时你可以关闭powershell和文件夹了,服务器端就配置好了
linux:输入命令,一行一个
请将下面的第二个命令里xxxxxx改成STEP5中的客户端id后再运行
1 |
|
此时你的服务器端就配置好了
STEP7客户端配置
- 开始配置需要联机的电脑,自己和好友都需要配置
下载windows版并安装ZeroTier one.msi1
https://www.zerotier.com/download/
和windows服务器端一样,安装完不会有提示,但你能在右下角看到一个他的小图标,就代表他安装好了
对windows开始菜单右键,用管理员方式,打开powershell
输入指令,下面的xxxxxx改成STEP5中的客户端id1
C:\ProgramData\ZeroTier\One\zerotier-one_x64.exe -q orbit xxxxxx xxxxxx
看到200 orbit ok 即可
然后再输入命令:一行一个
1
2net stop ZeroTierOneService
net start ZeroTierOneService运行完后请耐心等待10秒左右,再运行命令,查询IP
1
zerotier-cli listpeers
看看有没有这一行:
1
200 listpeers xxxxxxxx xx.xxx.xx.xx/9993;2290;2290 31 1.8.4 MOON
xxxxxxxx是STEP5中的客户端id, xx.xxx.xx.xx是服务器的公网IP, MOON不能是LEAF
这三个都存在且对的上即可开始联机游戏了,自己和好友都要设置
若遇到不是MOON而是LEAF,请看踩坑3
若遇到:
1
200 listpeers - - 1 - MOON
请看踩坑4
踩坑3
若遇到不是MOON而是LEAF,一般是之前装过该软件的缘故,请使用GEEK软件卸载Zerotier,它自带清除文件夹和注册表功能,然后重启电脑后再重新进行STEP7
踩坑4
部分网络会遇到这样的情况,因此需要额外步骤:
- 对着右下角小图标右键并选择红色框中的东西
在下方加入填入xxxxxxx并加入,xxxxxxx是本文上方STEP1中的网络ID:
(如果右边弹出是否允许发现选“是”,没有就不管)
- 选择上方右边的:↓
吧下方的四个选项全打上勾即可
这时再运行命令,查询IP看看有没有这一行:1
zerotier-cli listpeers
xxxxxxxx是STEP5中的客户端id, xx.xxx.xx.xx是服务器的公网IP, MOON不能是LEAF1
200 listpeers xxxxxxxx xx.xxx.xx.xx/9993;2290;2290 31 1.8.4 MOON
这三个都存在且对的上即可开始联机游戏了
额外部分
如何临时关闭和开启
Powershell管理员模式运行:
1 |
|
若想再次开启:
1 |
|
关于开机自启
由于这个软件是以服务形式启动的,默认开机自启,不会影响正常上网,但如果你想它开机不自启。
请使用WIN键+R键打开运行,并输入:services.msc
在服务列表里找到ZeroTierOne服务,打开属性并设置为手动
需要使用时运行命令启动即可:
1 |
|
关于卸载
(垃圾软件卸载居然还有残留)
强烈建议使用GEEK软件等卸载,卸载完自动扫描残留文件夹和注册表并清理
关于效果
如若觉得使用后效果不好,可以测试ping组网IP和ping真实ip对比,若觉得不好用可以卸载换其他方案,比如usbeam,p2p party,游侠对战平台等等