ZeroTier Planet 组网完全指南:从原理到实践

本文详细介绍了ZeroTier组网的原理、自建Planet服务器的优势以及完整的部署和使用指南,帮助您构建安全高效的虚拟局域网。

在当今时代,远程访问和跨地域网络连接已成为工作和生活的必需品。无论是远程办公访问公司资源,还是在家控制智能设备,抑或承担不起云上高额费用,想让家中旧设备焕发活力,我们都需要一种安全、高效且稳定,且高性价比的网络解决方案。ZeroTier就是一款强大的工具,它能让我们轻松搭建跨越互联网的虚拟局域网。

为什么需要组网?

ZeroTier简介

ZeroTier是一款基于P2P技术的虚拟局域网(VPN)工具,它能够将分布在全球各地的设备连接在一个虚拟的局域网中。通过ZeroTier,您可以实现:

  1. 远程访问:在公司用手机直接访问家里的NAS设备
  2. 设备互联:让分布在不同地理位置的设备如同在同一个局域网内一样通信
  3. 点对点直连:设备间直接通信,无需经过中转服务器,既快速又安全

工作原理

ZeroTier的工作原理涉及三个关键概念:

  • PLANET(行星服务器):ZeroTier网络的核心根服务器,负责网络发现和初始连接,相当于整个网络的"中枢"
  • MOON(卫星服务器):用户可以自建的私有根服务器,作为区域性的代理节点,帮助就近的设备更快地建立连接
  • LEAF(叶子节点):所有接入ZeroTier网络的终端设备,如电脑、手机、服务器等

设备之间的连接过程是:首先通过PLANET或MOON进行发现和协商,然后尽可能建立P2P直连,只有在无法直连的情况下才会通过中转方式进行通信。

为什么自建Planet服务器?

虽然ZeroTier官方提供了免费的PLANET服务器,但在实际使用中存在以下问题:

  1. 网络延迟:官方服务器位于海外,国内用户访问延迟高且不稳定
  2. 连接速度:本地化的PLANET服务器可以显著加快设备间的连接建立速度
  3. 网络控制:自建服务器让您完全掌控网络配置,可根据需求进行优化调整
  4. 安全性:私有化部署意味着网络流量不经过第三方服务器,更加安全可靠
  5. 独立性:避免因官方服务器故障或网络波动影响业务正常运行

如何自建Planet服务器?

我们将使用xubiaolin/docker-zerotier-planet项目,通过Docker容器快速部署私有的Planet服务器。

环境准备

在开始安装之前,请确保您的服务器满足以下条件:

  1. 拥有公网IP地址
  2. 开放以下端口:
    • 3443/tcp(管理面板,默认可调整)
    • 9994/tcp(ZeroTier通信,默认可调整)
    • 9994/udp(ZeroTier通信,默认可调整)
  3. 安装必要的软件依赖:
    • Docker(容器运行环境)
    • Git(获取项目代码)

部署步骤

  1. 安装依赖软件
1
2
3
4
5
# Debian/Ubuntu系统
apt update && apt install git docker.io -y

# CentOS/Rocky Linux系统
yum update && yum install git docker -y
  1. 克隆项目代码
1
2
3
4
5
# 官方地址
git clone https://github.com/xubiaolin/docker-zerotier-planet.git

# 如果网络受限,可使用加速地址
git clone https://ghproxy.imoyuapp.win/https://github.com/xubiaolin/docker-zerotier-planet.git
  1. 运行部署脚本
1
2
3
cd docker-zerotier-planet
chmod +x deploy.sh
./deploy.sh

根据提示选择"安装"选项,脚本将自动完成部署过程,通常需要1-3分钟。

  1. 获取配置文件

部署完成后,会在./data/zerotier/dist目录下生成planetmoon配置文件。您可以通过安装完成后提供的URL直接下载,或使用SCP等工具从服务器下载。

  1. 访问管理面板

部署完成后,可通过http://服务器IP:3443访问管理面板,默认账号为admin,默认密码为password

使用自建Planet服务器组网

创建网络

  1. 登录管理面板后,点击"Networks"菜单
  2. 点击"Add Network"按钮创建新网络
  3. 输入网络名称,其他选项保持默认
  4. 记录生成的网络ID,后续客户端配置需要用到

客户端配置

Windows客户端

  1. 从ZeroTier官网下载并安装客户端
  2. planet文件复制到C:\ProgramData\ZeroTier\One目录(需要显示隐藏目录)
  3. 重启ZeroTier服务:
    • Win+S搜索"服务"
    • 找到ZeroTier One并重启
  4. 使用管理员身份打开PowerShell,执行:
    1
    
    zerotier-cli.bat join [网络ID]
    
  5. 在管理面板中授权该设备

Linux客户端

  1. 安装ZeroTier客户端
  2. 进入目录/var/lib/zerotier-one
  3. 替换目录下的planet文件
  4. 重启服务:
    1
    
    service zerotier-one restart
    
  5. 加入网络:
    1
    
    zerotier-cli join [网络ID]
    
  6. 在管理面板中授权该设备

macOS客户端

  1. 进入/Library/Application\ Support/ZeroTier/One/目录
  2. 替换目录下的planet文件
  3. 重启服务:
    1
    
    cat /Library/Application\ Support/ZeroTier/One/zerotier-one.pid | sudo xargs kill
    
  4. 加入网络:
    1
    
    zerotier-cli join [网络ID]
    
  5. 在管理面板中授权该设备

image.png

验证连接

在任意客户端执行以下命令验证连接状态:

1
zerotier-cli peers

如果看到PLANET角色且连接方式为DIRECT(直连),则表示配置成功。

常见问题与解决方案

连接问题

  1. 检查防火墙设置:确保服务器和客户端都开放了相应端口
  2. 云服务商安全组:在阿里云、腾讯云等平台后台放行端口
  3. 网络类型限制:某些网络环境下UDP可能被QoS限制,可考虑使用OpenVPN等替代方案

权限问题

  1. 客户端未授权:确保在管理面板中勾选了设备的"Authorized"
  2. 文件权限错误:确保planet文件具有正确的读取权限

性能优化

  1. 部署Moon服务器:对于大规模部署,可以在不同地区部署Moon服务器以提高连接效率
  2. 监控连接状态:定期检查zerotier-cli peers输出,确保设备间维持DIRECT连接

安全建议

  1. 及时修改默认密码:部署完成后应立即修改管理面板的默认账号密码
  2. 启用HTTPS:为管理面板配置SSL证书,提高安全性
  3. 定期备份配置:妥善保管生成的配置文件,特别是planetmoon文件
  4. 访问控制:严格控制网络成员,仅授权可信设备加入

实际应用场景

  1. 远程办公:员工在家访问公司内部系统和资源
  2. 家庭网络:在外随时访问家中的NAS、智能家居设备
  3. 游戏联机:为分布式的游戏服务器建立专用网络
  4. 开发测试:为开发团队提供隔离的测试网络环境
  5. IoT设备管理:统一管理分布在全球各地的物联网设备

搭建好 planet 之后,在阿里云服务器上想要直接访问远程设备,也需要加入搭建好的 planet 网络,因 planet 和 peer 在同一台机器,可能会出现端口冲突的情况(默认用 9993),需要自定义 zerotier-cli 的端口

编辑 /var/lib/zerotier-one/local.conf文件(如果不存在则创建):

1
2
3
4
5
{
    "settings": {
        "primaryPort": 9994
    }
}

配置完成后,使用

1
zerotier-cli join [网络ID]

s 即可在页面看到已经加入的阿里云机器,及家中局域网的机器

Built with Hugo
Theme Stack designed by Jimmy