之前写过一篇专栏,但我个人觉得质量差强人意,故而重写以纠正错误。
开始之前先纠正上次的错误。
ztncui搭建的实际上是ZeroTier Network Controller UI,并没有取代官方的Planet。
这次的专栏教程,我会从搭建控制器、搭建私有Planet一步步讲解。控制器+自建Planet才是真正完全私有化的ZeroTier网络。
需要准备的一些工具:
搭建ztncui,实现控制器私有化
我这里使用Windows自带的OpenSSH登录进服务器中
输入如下命令,下载ZeroTier官方客户端
curl -s https://install.zerotier.com | sudo bash
等待ZeroTier客户端下载并安装完毕后,继续下载ztncui
curl -O https://s3-us-west-1.amazonaws.com/key-networks/deb/ztncui/1/x86_64/ztncui_0.8.14_amd64.deb
ztncui安装包下载完毕后,选择安装ztncui
sudo apt install ./ztncui_0.8.14_amd64.deb
ZeroTier和ztncui安装完成后,开始配置ztncui
sudo sh -c "echo ZT_TOKEN=`sudo cat /var/lib/zerotier-one/authtoken.secret` > /opt/key-networks/ztncui/.env"
sudo sh -c "echo HTTPS_HOST=192.168.1.7 >> /opt/key-networks/ztncui/.env"
sudo sh -c "echo HTTPS_PORT=3443 >> /opt/key-networks/ztncui/.env"
sudo sh -c "echo NODE_ENV=production >> /opt/key-networks/ztncui/.env"
逐条执行!分别解释下四条命令的含义:
注意!如果要将WebUI向互联网开放,请使用HTTPS协议并使用合格CA签发的证书,ztncui自带一张自签发证书,那是不安全的!
现在我们已经配置好ztncui,要授予权限了
sudo chmod 400 /opt/key-networks/ztncui/.env
sudo chown ztncui.ztncui /opt/key-networks/ztncui/.env
sudo systemctl restart ztncui
逐条执行!分别解释下三条命令的含义:
浏览器输入配置好的IP:Port访问ztncui的WebUI
https://192.168.1.7:3443(举例)
首次登录账号:admin,密码:password
登陆后强制要求修改密码。
注意!如果上一步将WebUI放到互联网访问,密码一定不要设置得过于简单!有被字典爆破的可能,加入网络的设备将面临巨大风险!
登录成功后,选择Add Network新建网络
输入网络名称,单击Create Network
创建网络后,选择Easy Setup配置IP地址段
配置IP地址段,这里使用CIDR表示法。
如果不知道怎么配置,单击Generate Network address随机生成一套吧!
到这里,ztncui就配置完成啦!
Network ID就是网络名称右边的16位ID。
怎么加入网络就不过多赘述了,善用搜索引擎。
进行进一步操作之前请先确认如下几点:
搭建私有Planet,实现行星节点私有化
如果Planet和ztncui处于一台设备,并且已加入相同网络,可跳过这步。
curl -s https://install.zerotier.com | sudo bash
sudo zerotier-cli join 网络ID
下载完成后,保存identity.public文件中的字符串
sudo more /var/lib/zerotier-one/identity.public
输出的一长串字符串我们需要保存下来,待会要用到。
获取ZeroTier源码,切换文件夹目录,修改mkworld.cpp
cd ZeroTierOne/attic/world
sudo vim mkworld.cpp
官方只设置了四组Planet服务器,所以我估计自定义应该最多也是四组。
私有Planet和官方Planet貌似不能共存,连接上私有的,官方的会-1。
我选择替换掉一组官方服务器,如图所示。
Identity("填写刚刚记录的一长串字符串");
push_back(InetAddress("服务器的公网IP/9993"));
若无IPv6,注释掉IPv6地址的代码段!
“9993”是对外开放的端口,可以修改,端口映射时建议TCP和UDP都打开
编译修改好的mkworld.cpp
source ./build.sh
./mkworld
mv ./world.bin ./planet
将编译好的planet文件分发到每个设备
cp -r ./planet /var/lib/zerotier-one
注意!加入网络的设备都要替换。
Windows Planet文件位置:C:\ProgramData\ZeroTier\One
Linux Planet文件位置:/var/lib/zerotier-one
重启设备,检查Planet是否正确部署
Linux 命令行输入:
sudo zerotier-cli listpeers
Windows 以管理员身份启动命令行:
cd C:\ProgramData\ZeroTier\One
zerotier-cli listpeers
检查标记是Planet的设备,有无IP与服务器相同的设备,若有则启动成功。
后记
Controller和Planet搭建完毕后,入网的设备都已经成为脱离官方服务的新“星系”。
摸索的过程离不开这些文档、作者、好朋友的帮助!
https://github.com/key-networks/ztncui
https://github.com/zerotier/ZeroTierOne
https://docs.zerotier.com/
公网IP变了需要重新部署吗?
如果只是部署控制器,公网IP变了不需要重新部署
如果部署了Moon,公网IP变了需要编译Moon配置文件;如果部署了Planet,公网IP变了需要编译文中的mkworld.cpp
请问, 我的都是容器部署的planet-ztncui和zerotier, 那么这个命令more /var/lib/zerotier-one/identity.public 是要去哪个容器执行?
ui和zt分开部署吗?
去部署Zerotier的容器查看即可
回复 @Orangenschalen :好的