一、概述
ZeroTier是面前非常热门的异地组网工具,它和tailscale类似,使用p2p的方式建立客户端之间的连接,在不能成功建立连接的情况下使用ZeroTier的服务器进行中转。遗憾的是ZeroTier的服务器同样在国外,国内的用户想达到更好的体验则需要自建ZeroTier相关服务。
ZeroTier客户端是一个功能全面的异地组网软件,你可以定义它为客户端Leaf、中转服务器Moon、网络控制器Network Controller、根服务器Planet,但是官网提供的文档并不是很全面,这意味着你想灵活的运用这款工具会遇到很多困难
本教程基于开源项目ztncui-aio进行搭建,ztncui为ZeroTier 网络控制器用户界面,aio其实是ALL IN ONE的简写,这意味着ztncui-aio可以实现ZeroTier所有的功能(中转、控制器+用户管理界面、根服务器)。
请注意你可以通过修改AUTOGEN_PLANET参数把它变成一个网络控制器+UI,也可以把它变成一个完全私有的Planet服务器
二、使用容器构建ztncui-aio
请注意该容器是我本人对ztncui-aio进行了修改并编译容器,和官方ztncui-aio不同的是,后者支持自动创建moon文件,官方目前并不支持,并且官方提供的容器可能会存在更新不及时的问题
docker run -d -p3180:3180 -p3000:3000 -p9993:9993/udp \
-v ~/ztncui/etc:/opt/key-networks/ztncui/etc \
-v ~/ztncui/zt1:/var/lib/zerotier-one \
-v ~/ztncui/zt-mkworld-conf:/etc/zt-mkworld \
-e ZTNCUI_PASSWD=password \
-e AUTOGEN_PLANET=1 \
-e PLANET_RETR_PUBLIC=true \
-e HTTP_ALL_INTERFACES=true \
--restart always \
--cap-add=NET_ADMIN --device /dev/net/tun:/dev/net/tun \
--name ztncui \
runyf/ztncui-aio:v1.14.0
参数说明
-v
挂载数据存储目录-e ZTNCUI_PASSWD
配置登录密码-e AUTOGEN_PLANET
如果将值设置为1将自动生成planet和moon文件。默认为0,它将使用官方的planet的文件,就是说使用这个值搭建出来的仅仅是一个网络控制器+UI-e PLANET_RETR_PUBLIC
设置为true,监听0.0.0.0:3180。如果不设置就监听127.0.0.1:3180,意味着你不能在外部进行访问planet、moon文件-e HTTP_ALL_INTERFACES
设置为true,监听0.0.0.0:3000。如果不设置就监听127.0.0.1:3000,意味着你不能在外部进行访问控制器用户界面-e MYADDR
配置服务器ip,可以留空,程序将自动判断你的服务器ip
三、客户端的配置
- planet文件可访问服务器3180端口进行下载
- Windows
将planet文件复制到C:\ProgramData\ZeroTier\One
目录中替换原文件,然后打开任务管理器点击服务,然后重启ZeroTier One
服务 - Linux
将planet文件复制到/var/lib/zerotier-one
目录中替换原文件,然后重启ZeroTier One
服务service zerotier-one restart
- android
使用第三方软件 kaaass/ZerotierFix: An unofficial Zerotier Android client patched from official client
四、客户端的授权
访问3000端口打开控制器用户界面进行授权
五、参考链接
- What is ZeroTier?
- Jonnyan404/zerotier-planet: 一分钟自建zerotier-planet
- kmahyyg/ztncui-aio: Licensed Under AGPL v3
- 打洞不成功?来试试 ZeroTier 自建 Moon 中转吧~
arounyf/ztncui-aio: Licensed Under AGPL v3 - 【笔记】Zerotier 自建 Moon 服务器和节点控制器