X

自建私有ZeroTier服务器踩坑

背景

某日,休息在家,无意中发现Openwrt的系统中有Zerotier的虚拟路由的软件,并且对于技术的好奇研究了起来。从网络上查找大量资料,但是没找到对所有讲的明白的。

网上查资料,发现Zerotier 定义了其网络的结构的几个专业名词

  1. PLANET 行星服务器,Zerotier 各地的根服务器,有日本、新加坡等地;
  2. moon 卫星级服务器,用户自建的私有根服务器,起到中转加速的作用;
  3. LEAF 相当于各个枝叶,就是每台连接到该网络的机器节点。

依据上方三条,我们发现,我们要搭建私有平台,就需要搭建PLANET服务器

查到个部署方案

教程1:https://www.appinn.com/zerotier-planet-server-docker-install/

开源:https://github.com/Jonnyan404/zerotier-planet

按照作者的教程1的方式,配置正常使用,自己摸索Openwrt的路由设备可以被正常识别。

但是总是感觉不对,看了教程下面的回帖,有了一下疑惑,总感觉客户端没有修改,我什么就是连接了的私有服务器了呢?后来发现其实这个教程只是安装了ztncui。

带走疑惑,找到了下面教程

教程2:https://post.smzdm.com/p/akx70kwe/

教程3:https://www.nuomiphp.com/t/613586b995b0dc3394796e36.html

开源:https://github.com/sbilly/docker-zerotier-controller

看了教程,和相关开源介绍,了解了这个应该才是私有服务器的搭建,并且里面的回复都很重要。

按照教程其实讲的很清楚了,按照命令执行也可以通,但是没有人去介绍patch/planets.json中的"Identity" 怎么生成。

重要回复

1. identity.* 文件是 zeortier 运行时自动创建的,也可以用 zerotier-cli generate 来生成
2. “planet 使用的公钥” 就是指 zerotier planet 的 identity.public 文件中的内容。项目里面 planet.json 对应的 identity 是 patch/planet.public 和 patch/planet.secret
3. 9333 是 zerotier 的端口,3000/4000 都是 zero-ui 的端口(缺省配置的 zero-ui 只用了 4000 端口)
4. authtoken.secret 文件是 zerotier 运行时自动创建

看到下面的回复,Identity 来自 planet.public文件

后来发现,其实很多资料需要客户端zeortier-one的软件有了这些命令才可以生成:

zerotier-idtool <command> [<args>]

Commands:

generate [<identity.secret>] [<identity.public>] [<vanity>]

validate <identity.secret/public>

getpublic <identity.secret>

sign <identity.secret> <file>

verify <identity.secret/public> <file> <signature>

initmoon <identity.public of first seed>

genmoon <moon json>

还有zerotier-cli命令

ZeroTier 生成identity.public命令

zerotier-idtool generate identity.secret

zerotier-idtool generate identity.public

报错:

zerotier-cli: missing port and zerotier-one.port not found in /var/lib/zerotier-one

执行一下:zerotier-one -d