ZeroTierOne

部分内容引用自知乎和csdn

最近在做内网穿透,了解到有很多方案,打算都尝试一下,如果有不对的地方,欢迎指正,如果有更好的方案,欢迎提出建议
先说一下需求:Linux设备是连接在用户路由器上,用户没有公网IP,然后希望用户可以通过手机APP或者网页随时随地的访问设备
方案:目前我能找到的内网穿透的方案主要有以下几种:
Frp,Ngrok,Natapp,Spike,花生壳,Zerotier

我用过的内网穿透方案都不太好用,主要是只能穿透单个服务以及端口,切大多数要钱

zerotier
去官网下载客户端windows版本和linux都有,本篇文章会已最简单的方式告诉你如何搭建自己的大内网。

搭建教程

注册账号这个都不用讲了官网直接login,直接GITHUB登录最快

alt

创建NETWORK配置

直接点就行了
img

点id进去配置一下简单的设置
img
img

配置一下ip段方便记录就行了,然后下面是配置加入的用户

img

windows里面下载客服端地址:zerotier
安装好后一定要powershell管理员模式
里面的指令我总结几个常用的

liunx下指令一样

zerotier-cli join [要加入的网络id]
zerotier-cli listpeers   #列出加入的网络设备有哪些,有时候刷新慢的很,需要重启服务才行
zerotier-cli listmoons   #列出设置的moons服务器,会把你1加入的moons服务器列出来一般只能加入一台
zerotier-cli orbit [moons服务器id] [moons服务器id]  #注意这边id是要打两边,不是我打错了注意!!!
zerotier-cli deorbit [moons服务器id] [moons服务器id]   #这边是退出moons服务器的指令,需要设置别的moons服务器需要先退出。

Linux一键安装脚本,默认会安装到/var/lib/zerotier

curl -s https://install.zerotier.com | sudo bash

搭建自己的moon服务器

因为是国外服务器,延迟比较高,所以这里采用阿里云香港服务器,带宽30m的
实测搭建后ping延迟60内

Linux搭建服务器,其实windows下做服务器指令基本一样,原理操作一样。

systemctl start zerotier-one.service  #启动服务
systemctl enable zerotier-one.service  #开机自启服务
zerotier-cli join e5cd7a9e1c86361e   #先加入网络id,这个id替换成你的就行了
cd /var/lib/zerotier-one/  #到软件目录下去
zerotier-idtool initmoon identity.public > moon.json  #生成moons服务器配置
vim moon.json  #编辑moons配置文件

配置文件里面大概这样
img

需要修改的内容
img
这里面的是服务器ipv4地址,以及9993moon默认服务器端口,记得用/不是:
两边引号不要忘了注意!!!!!!
然后esc按冒号键直接wq报错退出

生成签名文件

zerotier-idtool genmoon moon.json

**执行之后会生产一个000000xxxx.moon的文件,将这个文件通过宝塔面板下载本地,后面xxx是你的设备id,记住这个后面要用
**
将moon节点加入网络。创建moons.d文件夹,并把签名文件移动到文件夹内
原本是没有这个目录的,创建一个就行了

把上面00000xxxx的那个文件放进去,就可以了

systemctl restart zerotier-one   #重启服务就行了

到此搭建完成,接下来讲如何选择到moon上去

windows下powershell管理员模式

zerotier-cli orbit ed2c88f24 ed2c88f24  #后面是你的moons服务器的id,要输入两次
zerotier-cli listmoons  #查看是否加入成功,一般输入后会需要缓一下,没法直接列出来,要等一下,然后会输出你moon上的配置

详解,这里面的leaf是以及加入的设备,planet是官方的根服务器,moon是你加入的moon服务器,加入后输入指令

zerotier-cli listpeers #看到尾部有moon字样就设置成功了

img

测试

直接ping到moon服务器的延迟,当然测试ip要用虚拟局域网的ip测试ping
然后加入其他的设备进行测试香港延迟一般60左右。

自建planet方法

这个方法目前是编译planet文件,让节点直接中自己的服务器,并且删除其他官方节点

GITHUB项目:docker搭建方式
GITEE:脚本搭建方式
这两种搭建方式都可以生产一个面板,把自己的几台设备加入到面板当中

liunx里面搭建

wget https://cdn.jsdelivr.net/gh/kaaass/ZeroTierOne@releases/download/mkmoonworld-1.0/mkmoonworld-x86

下载编译文件

./mkmoonworld-x86_64 ./moon.json
mv world.bin planet

编译完成后改一个名字,然后替换到zerotier更目录里面的planet文件就可以了,每一个客户端也替换,亲测本地打洞省内延迟10ms