搭建zerotier私有planet服务器实现公网游戏级别远程
简介
zerotier是一个虚拟局域网工具,官方提供了自己的根服务器(planet)作为数据转发,但由于服务器大多在境外,国内访问延迟较高且不稳定。此时,搭建自己的planet服务器就是不二之选
方法
一、购买云服务器
如果你没有自己的有固定公网IP的服务器,则需要购买一台云服务器。
购买建议:如果钱多,可以选择阿里云,腾讯云。如果钱少,可以选择狗云,三丰云,观星云等众多小服务器厂商。
配置:最好2核2G,带宽按需选:如果只是远程办公,3Mbps公网带宽就够了。如果是游戏级别,带宽最好在10Mbps以上。可选共享带宽。
系统镜像:Ubuntu 20.04
地域:游戏级别远程最好选国内的,且跟你所在地越近越好。办公远程的话可以拓宽至香港以及周边国家的服务器,如新加坡,韩国
我自己购买的是一台阿里云99一年的服务器(用于办公远程)2Mbps,和一台观星云(用于游戏远程)30Mbps。本文测试基于观星云这台
阿里云
观星云
二、安装(基于Ubuntu)
参考:https://blog.csdn.net/smzq123/article/details/128760942?spm=1001.2014.3001.5506
1. 升级云桌面的软件
依次执行
apt-get upgrade
apt-get dist-upgrade
等待升级完成
2. 安装nlohmann-json-dev
根据引用文章里的原文说
“若使用的是Ubuntu16.04,在编译Zerotier的时候会出现找不到nlohmann/json.h的问题,需要安装nlohmann-json-dev:”
所以以防万一,都安装一下
执行
wget http://kr.archive.ubuntu.com/ubuntu/pool/universe/n/nlohmann-json/nlohmann-json-dev_2.1.1-1.1_all.deb && dpkg -i nlohmann-json-dev_2.1.1-1.1_all.deb
如果执行报错,或者链接失效,可去我百度网盘下载nlohmann-json-dev_2.1.1-1.1_all.deb,然后上传到服务器之后在对应文件夹下执行dpkg -i nlohmann-json-dev_2.1.1-1.1_all.deb:
链接:https://pan.baidu.com/s/1myeO-3Jyy_RlMeOccPpSQQ
提取码:jxji
3. 安装Zerotier 和 ZtnCui
说明:ZtnCui是一个用来给zerotier呈现配置web界面的东西,开源免费
执行
wget https://gitee.com/opopop880/zerotier_planet/raw/master/zerotier_planet_debain.sh && chmod +x zerotier_planet_debain.sh && ./zerotier_planet_debain.sh
为了防止链接失效,此处贴出链接中“zerotier_planet_debain.sh”的源代码
#!/bin/bash # debain ubuntu自动安装zerotier 并设置的为planet服务器 # addr服务器公网ip+port ip=`wget http://ipecho.net/plain -O - -q ; echo` addr=$ip/9993 apt autoremove apt update -y apt install curl -y echo "********************************************************************************************************************" echo "**********deabin unbuntu自动安装zerotier 并设置的为planet服务器 火木木制作 放在root目录执行**********************************" curl -s https://install.zerotier.com/ | sudo bash identity=`cat /var/lib/zerotier-one/identity.public` echo "identity :$identity==============================================" apt-get -y install build-essential apt-get install git -y git clone https://gitee.com/opopop880/ZeroTierOne.git cd ./ZeroTierOne/attic/world/ sed -i '/roots.push_back/d' ./mkworld.cpp sed -i '/roots.back()/d' ./mkworld.cpp sed -i '85i roots.push_back(World::Root());' ./mkworld.cpp sed -i '86i roots.back().identity = Identity(\"'"$identity"'\");' ./mkworld.cpp sed -i '87i roots.back().stableEndpoints.push_back(InetAddress(\"'"$addr"'\"));' ./mkworld.cpp source ./build.sh ./mkworld mv ./world.bin ./planet \cp -r ./planet /var/lib/zerotier-one/ \cp -r ./planet /root systemctl restart zerotier-one.service wget https://gitee.com/opopop880/ztncui/attach_files/932632/download/ztncui_0.8.6_amd64.deb sudo dpkg -i ztncui_0.8.6_amd64.deb cd /opt/key-networks/ztncui/ echo "HTTPS_PORT = 3443" >>./.env secret=`cat /var/lib/zerotier-one/authtoken.secret` echo "ZT_TOKEN = $secret" >>./.env echo "ZT_ADDR=127.0.0.1:9993" >>./.env echo "NODE_ENV = production" >>./.env echo "HTTP_ALL_INTERFACES=yes" >>./.env systemctl restart ztncui rm -rf /root/ZeroTierOne echo "**********安装成功*********************************************************************************"
此源代码里需要clone一个ZeroTierOne仓库和下载ztncui_0.8.6_amd64.deb文件。如果仓库失效,可以去我百度网盘下载(仓库文件名ZeroTierOne-master),然后自行修改此脚本文件
链接:https://pan.baidu.com/s/18TVyul4DGX-NxUMkZK24WQ
提取码:mky3
4. 下载私有planet文件
进入服务器的/root目录下,可以看到文件planet
下载到客户端电脑上
5. 访问后台
记得先开放tcp 9993跟3000端口,UDP 9993端口
访问http://你的公网IP或者域名:3000/
点击登录,初始用户名admin,初始密码password
登录后点击添加网络选项卡,添加私有网络
点击简易安装,分配地址
6. 客户端设置(Windows电脑)
在客户端电脑上按Win+R打开运行,输入services.msc打开服务,找到“Zerotier One”服务,单击右键停止他
进入“C:\ProgramData\ZeroTier\One”,替换原本的planet文件为自己的planet文件
再去服务里启动ZeroTier One服务
在任务栏的zerotier图标上单击右键,选择join new network
输入16位码,点击join
7. 客户端设置(Android手机)
下载Zerotier Fix.apk
链接:https://pan.baidu.com/s/12j-P6Bari9PG258Wp4ufiQ
提取码:92km
在Zerotier Fix的设置里打开“启动自定义planet”,然后将自己的planet文件发到手机上,然后点击“设置planet文件”
然后在主界面的右下角点击加好,添加网络,并输入16位码
8. 去后台分配IP地址
将刚刚添加的客户端设备勾选“经授权的”和“主动桥接”,并分配IP地址
9. 使用远程桌面连接或者Parsec连接远程设备
输入刚分配的虚拟局域网IP,就可以连接远程设备(刚添加可能会连不了,可以等一段时间,或者ping通了在连接)
实测利用Parsec公网远程2K 60帧原神,总延迟大概150ms,带宽能跑在10Mbps-20Mbps(观星云)