自建zerotier根服务器
¶ZeroTier 介绍
ZeroTier
是一款强大的 P2P 工具,它能让你在互联网上搭建属于自己的虚拟局域网。通过它,你可以轻松实现远程访问家中设备的需求 - 比如在公司用手机直接访问家里的 NAS。最重要的是,设备之间是点对点直连的,无需经过中转服务器,既保证了速度,又提升了安全性。
它的工作原理是这样的:通过 ZeroTier One
客户端,在不同设备(如笔记本、手机、服务器等)之间建立 P2P 连接,即使这些设备都在 NAT 后面也没问题。它使用了 STUN 等技术,可以穿透大多数类型的 NAT,实现设备间的直接通信。如果实在无法直连,才会通过中转服务器进行通信。
简单来说,ZeroTier
就像是一个跨越互联网的"虚拟交换机",让分布在世界各地的设备,都能像在同一个局域网内一样方便地相互访问。和 Tailscale 类似,Zerotier 同样也可以实现网络控制器以及根服务器的自部署,只不过以前我们只能自建卫星服务器(Moon 服务器)以及网络控制器,而现在则可以实现自部署根服务器(行星服务器),这样你完全不需要注册官方的 Zerotier 的任何账号也可以实现整个虚拟局域网的自建。
ZeroTier 网络中的关键概念
PLANET
(行星服务器):ZeroTier 网络的核心根服务器,负责网络发现和初始连接。相当于整个网络的"中枢"。
MOON
(卫星服务器):用户可以自建的私有根服务器。它可以作为区域性的代理节点,帮助就近的设备更快地建立连接,提升网络性能。
LEAF
(叶子节点):所有接入 ZeroTier 网络的终端设备,如电脑、手机、服务器等。这些设备通过 PLANET 和 MOON 的协调来相互发现和通信。
本教程将指导您搭建一个私有的 PLANET 服务器,让您完全掌控自己的 ZeroTier 网络。
为什么要自建 PLANET 服务器:
- 提升网络稳定性:官方服务器位于海外,国内用户访问延迟高且不稳定。自建服务器可以大幅提升连接质量。
- 加快连接速度:本地化的 PLANET 服务器可以更快地帮助设备建立 P2P 连接。
- 增强网络控制:自建服务器让您完全掌控网络配置,可以根据需求进行优化调整。
- 提高安全性:私有化部署意味着网络流量不经过第三方服务器,更加安全可靠。
- 降低依赖:避免因官方服务器故障或网络波动影响您的业务正常运行。
¶开始部署
¶购买服务器
首先第一件事就是购买一台国内云服务提供的云服务器,整体规格上「1 核 2G」或者「2 核 2G」就可以,最重要的需要有一个公网 IP 方便进行设备管理。
¶安装Git、docker并启动docker
debian 系检查更新 |
red hat 系检查更新 |
¶下载 xubiaolin 制作的自建行星服务器安装脚本:
官方地址
git clone https://github.com/xubiaolin/docker-zerotier-planet.git |
加速地址
git clone https://ghproxy.imoyuapp.win/https://github.com/xubiaolin/docker-zerotier-planet.git |
¶执行安装脚本
进入克隆下来的项目目录
cd docker-zerotier-planet |
运行项目脚本
./deploy.sh |
根据提示来选择即可,操作完成后会自动部署
欢迎使用zerotier-planet脚本,请选择需要执行的操作: |
脚本会给出相关的提示选择,这里直接输入 1
回车来安装,安装过程中要你输入相应的端口,这里全部选择默认即可。安装成功脚本会有提示登录zerotier控制台进行设置及会生成对应的moon配置和planet配置文件。
可以访问控制台说明安装成功
请根据选择的端口号和脚本提示去服务器防火墙放行相对应的端口
¶新建网络
访问控制台使用默认账号为:admin
默认密码为:password
进行登录
成功登录之后选择Add netWork
,给新建的网络命名一个名称,然后点击Create Network
创建成功后系统会自动生成一个网络ID,这个ID在后续客户端配置时会用到,请记录下来。
其中(342b....)
这串数据就是网络id
¶分配网络IP
在Networks
界面选择Easy setup
进入网络分配界面
选择Generate network address
生成ip范围之后Submit
即可,到此zerotier根服务器搭建完成。
¶客户端加入
搭建完成后可以让我们的设备加入到这个网络中组成虚拟局域网,ZeroTier 支持多种主流操作系统的客户端,包括:
- Windows
- macOS
- Linux
- Android
¶Windows配置
首先去zerotier官网下载一个zerotier客户端,将生成的plant
文件覆盖粘贴到C:\ProgramData\ZeroTier\One
中(这个目录是个隐藏目录,需要运允许查看隐藏目录才行)
Win+S 搜索 服务
找到ZeroTier One,并且重启服务
¶加入网络
使用管理员身份打开PowerShell
执行如下命令,看到join ok字样就成功了
PS C:\Windows\system32> zerotier-cli.bat join 网络id(就是在网页里面创建的那个网络) |
登录管理后台可以看到有个个新的客户端,勾选Authorized
就行
勾选之后IP assignment
里面会出现zerotier的内网ip
执行如下命令:
PS C:\Windows\system32> zerotier-cli.bat peers |
可以看到有一个 PLANTET 和 LEAF 角色,连接方式均为 DIRECT(直连)
如果你的ztaddr是REPLAY, 就说明是中转
到这里就加入网络成功了
¶Linux 客户端
下面将使用docker来安装,直接安装请参考zerotier官网
¶安装docker和docker-compose
搜索相关教程
¶配置
创建一个zerotier目录,在这个目录下创建一个docker-compose.yml
文件,内容如下:
version: '3.8' |
为了避免不必要的问题配置文件的网络必须使用host
然后在docker-compose.yml
文件目录下启动服务:
# 创建并启动容器(后台运行) |
启动之后会在docker-compose.yml
文件目录下自动创建出zerotier-data
文件夹
然后进入到该文件夹下,将部署根服务器生成的planet
文件下载复制到该目录下,替换掉原有的planet
文件。
然后重启docker容器
docke restart zerotier-client |
加入网络
docker exec zerotier-client zerotier-cli join 你的网络ID |
去zerotier控制台授权加入即可
授权之后输入以下命令就可以看到角色信息了
¶安卓客户端配置
下载安装后,先去设置启动自定义Planet
然后点击设置Planet文件
将根服务器的Planet文件地址复制进去就会自动更新,然后在首页添加网络,将网络id添加进去之后去zerotier控制台授权即可。
¶MacOS 客户端配置
步骤如下:
- 进入
/Library/Application\ Support/ZeroTier/One/
目录,并替换目录下的planet
文件 - 重启 ZeroTier-One:
cat /Library/Application\ Support/ZeroTier/One/zerotier-one.pid | sudo xargs kill
- 加入网络
zerotier-cli join
网络id
- 管理后台同意加入请求
zerotier-cli peers
可以看到planet
角色
¶OpenWRT 客户端配置
步骤如下:
- 安装zerotier客户端
- 进入目录
/etc/config/zero/planet
- 替换目录下的
planet
文件 - 在openwrt网页后台先关闭zerotier服务,在开启zerotier服务
- 在openwrt网页后台加入网络
- 管理后台同意加入请求
- 执行
ln -s /etc/config/zero /var/lib/zerotier-one
zerotier-cli peers
可以看到planet
角色