Zerotier-Planet-leaf-Moon 小白指南

更新:建议使用docker安装zerotier的Planet,使用docker安装planet很简单,坑少。MOON不需要。完成本文的操作需要云服务器。
感觉有用,请点个赞

1、Zerotier原理

在这里插入图片描述
参考链接:Zerotier 搭建私有根服务器及创建虚拟局域网完整教程

1.1概念

  • planet:核心角色,官方不允许自建私有,zerotier 的行星服务器,用于管理全球所有的 zerotier 客户端的地址信息,帮助建立客户端间的直接链接,以及在无法建立直接链接时,作为中继服务器转发设备间的流量。
  • moon:官方允许自建私有,作为离客户端更近的中继服务器存在,可以使转发的效率更高。

Planet有私有实现:zerotier-planet

  • 解除官方的设备连接数限制
  • 提升手机客户端连接的稳定性
  • 官方不允许自建私有planet,这里的是官方网站注册leaf,无法用私有planet,如果用私有planet,就别去官网注册leaf,moon了。
  • 私有planet优点是,可以突破数量限制,还很稳定,不需要再整私有moon。缺点是,需要买一个云服务器,但好在一年也没多钱,而且因为有了公网IP,还能做很多别的事。

2、安装

2.1 Planet (Server)

  • 2.1节的planet安装方法 我用着有问题 不知道怎么解决 建议参考:下文第4节docker-zerotier-planet的方法,这个方法开源在gthub,应用 docker 安装,简单稳定。
  • 如果建私有planet,可以不需要moon了,不用在进行2.3节的操作。

2.1.1 安装私有的Planet

构建Zerotier私有根服务器(Planet),实现比MOON更稳定的内网穿透

需要有一个云服务器
私有的Planet就是平替的官网界面,云服务器防火墙需要把3443的tcp9993的UDP开放。

1、在云服务器上ssh等方式登录,下载运行

wget https://gitee.com/opopop880/zerotier_planet/raw/master/zerotier_planet_debain.sh && chmod +x zerotier_planet_debain.sh && ./zerotier_planet_debain.sh

2、保存Planet
在下载好后,在root权限下cd /root 能看到生成的planet文件。保存出来,给各个client留用。

3、安装成功后,登录ztncui

  1. https://你的云服务器ip或者域名:3443
  2. 登录用户名 admin 密码默认 password
  3. 进入界面的,登录在最右上角。
    在这里插入图片描述

4、进入planet界面后:

  1. 需要创建新网络。
  2. 添加成员,Moon也可以添加。
  3. 简易安装,设定网段,之后会自动给成员分配IP。
  4. 保留网络的ID

2.2 leaf (Client)

有windows端 Linuex端等。
官方下载地址

2.2.1 windows端:

  • 安装zerotier终端
  • win + R 打开services.msc,找到zerotier对应位置文件位置。将之前保留的planet复制进文件夹,替换原有的planet。
  • 重启zerotier服务。
  • 然后Join New Network,添加之前保留的网络ID。
  • 管理员权限打开powershell,运行zerotier-cli listpeers看下是否连上Planet

2.2.2 Linux端:

参考:Linux/Ubuntu中安装ZeroTier
类似windows

  • 到/var/lib/zerotier-one替换planet
  • 重新启动zerotier
sudo systemctl restart zerotier-one
  • 加入网络
sudo zerotier-cli join your-networkid

2.2.3 路由器端:

手里有GL-iNET路由器,加入私有zerotier Planet也是替换planet文件。
路由器的应用运行文件在/tmp/lib,路由器每次重启都会,重置这个路径下的文件。
所以开机自启动脚本,完成操作。
GL-iNET路由器是openwrt改的,openwrt的软路由应该类似。

1、生成一个/root/zerotier.sh
注意:前文私有planet生成的planet文件,放在/root/planet

#!/bin/sh

sleep 18;

# 复制文件
cp /root/planet /tmp/lib/zerotier-one_gl  #只是参考下,把原有planet覆盖掉,我的gl路由器有两个文件夹有,所以就都覆盖了
cp /root/planet /tmp/lib/zerotier-one

sleep 1;

# 查找并终止 zerotier-one 进程
pid=$(ps | grep 'zerotier-one' | grep -v 'grep' | awk '{print $1}')


# 因为路由器上的zerotier在覆盖planet后,需要重新启动。
# 发现杀掉进程,会重新自动启动zerotier,所以就这么处理了
# -----
# 如果找到 zerotier-one 进程,杀掉它。
if [ -n "$pid" ]; then
    echo "Killing process: $pid"
    kill $pid
else
    echo "No zerotier-one process found."
fi

2、设置脚本 zerotier.sh 开机自动运行
/etc/rc.local 是 OpenWrt 系统中常用的启动脚本,适合简单地运行脚本或命令。

  1. 编辑 /etc/rc.local 文件:
vi /etc/rc.local
  1. exit 0 之前添加运行脚本的命令:
/path/to/zerotier.sh
示例:
/root/zerotier.sh
exit 0
  1. 保存并退出。
  2. 确保脚本具有执行权限:
chmod +x /root/zerotier.sh
  1. 重启系统测试。
  2. 参考linux方法,将路由器zerotier添加入私有planet。

2.2.3 移动端:

ZerotierFix 是一个基于官方Zerotier客户端进行非官方补丁修改的Android应用程序。它允许你在Android设备上自定义和管理Zerotier网络,提供了额外的功能如自我托管的Moon支持、通过文件和URL添加定制planet配置等。此项目遵循GPL-2.0许可证,核心代码通过反向工程自官方Android客户端,并且完全由Java开发。
链接:ZerotierFix

Features
  • Self-hosted Moon Support
  • Add custom planet config via file and URL
  • View peers list
  • Chinese translation

2.3 Moon

云服务器在安装planet后,不用重复安装moon
现在需要的是配置私有moon

2.3.1 配置私有moon

  • 进入 ZeroTier 配置文件目录。
cd /var/lib/zerotier-one
  • 生成 moon.json 签名文件。
zerotier-idtool initmoon identity.public >>moon.json
  • 编辑 moon.json
  {
   "id": "0123456789",
   "objtype": "world",
   "roots": [
    {
     "identity": "xxxxxxxx:0:xxxxxxxx",
     "stableEndpoints": []
    }
   ],
   "signingKey": "xxxxxxxx",
   "signingKey_SECRET": "xxxxxxxx",
   "updatesMustBeSignedBy": "xxxxxxxx",
   "worldType": "moon"
  }

找到 "stableEndpoints": []

添加 "IPv4地址/9993" 或者 "IPv4地址/9993","IPv6地址/9993"

  • 生成 .moon 签名文件 0000006xxxxxxxxx.moon
zerotier-idtool genmoon moon.json
mkdir /var/lib/zerotier-one/moons.d
cp 0000006xxxxxxxxx.moon moons.d/
  • 重启 ZeroTier 服务
/etc/init.d/zerotier-one restart

2.3.2 设备连入 moon 服务器

2.3.2.1 自动配置
  • 输入命令

Linux

sudo zerotier-cli orbit [moon.json 文件中的 id] [moon.json 文件中的 id]

Windows 有一点不同,需要使用管理员权限的 PowerShell 输入:

zerotier-cli orbit [moon.json 文件中的 id] [moon.json 文件中的 id]

3、路由器端配置局域网穿透

将zerotier配置在路由器上后,路由器下的设备可以依托路由器的zerotier实现穿透。

本文使用的路由器是GL-iNET-AXT1000,zerotier是安装好的。

Step 1. 参考2.2.3节配置好后,参考下图,比如是openwrt的话,在网上查,把允许LAN远程访问打开。并添加Network ID。注意途中的LAN后面的Destination和Via,后面要用。
在这里插入图片描述
Step 2. 配置 NAT
在这里插入图片描述
在私有Planet的Routes中配置。官方的应该不一样吧,网上查查,都有。192.168.6.0/24那行是后添加的,10.5.5.0是原来就有的。
在这里插入图片描述
注意target和gateway都是什么,这里的原理就是NAT。

这之后,外网装有zerotier的设备,可以通过路由器分配给下面的设备的IP,实现外网访问。
现在路由器下的设备是PVE,NAS,可以外网访问了。

4、补充:docker-zerotier-planet

建议使用docker安装zerotier,使用docker安装planet很简单,坑少。MOON不需要。

两个环节
1、云服务器上安装私有Planet,
2、将终端加入私有Planet

参考: 1、docker-zerotier-planet云服务器上安装私有的planet。2、zerotier使用 将LEAF终端加入Planet。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值