在当今时代,远程访问和跨地域网络连接已成为工作和生活的必需品。无论是远程办公访问公司资源,还是在家控制智能设备,抑或承担不起云上高额费用,想让家中旧设备焕发活力,我们都需要一种安全、高效且稳定,且高性价比的网络解决方案。ZeroTier就是一款强大的工具,它能让我们轻松搭建跨越互联网的虚拟局域网。
为什么需要组网?
ZeroTier简介
ZeroTier是一款基于P2P技术的虚拟局域网(VPN)工具,它能够将分布在全球各地的设备连接在一个虚拟的局域网中。通过ZeroTier,您可以实现:
- 远程访问:在公司用手机直接访问家里的NAS设备
- 设备互联:让分布在不同地理位置的设备如同在同一个局域网内一样通信
- 点对点直连:设备间直接通信,无需经过中转服务器,既快速又安全
工作原理
ZeroTier的工作原理涉及三个关键概念:
- PLANET(行星服务器):ZeroTier网络的核心根服务器,负责网络发现和初始连接,相当于整个网络的"中枢"
- MOON(卫星服务器):用户可以自建的私有根服务器,作为区域性的代理节点,帮助就近的设备更快地建立连接
- LEAF(叶子节点):所有接入ZeroTier网络的终端设备,如电脑、手机、服务器等
设备之间的连接过程是:首先通过PLANET或MOON进行发现和协商,然后尽可能建立P2P直连,只有在无法直连的情况下才会通过中转方式进行通信。
为什么自建Planet服务器?
虽然ZeroTier官方提供了免费的PLANET服务器,但在实际使用中存在以下问题:
- 网络延迟:官方服务器位于海外,国内用户访问延迟高且不稳定
- 连接速度:本地化的PLANET服务器可以显著加快设备间的连接建立速度
- 网络控制:自建服务器让您完全掌控网络配置,可根据需求进行优化调整
- 安全性:私有化部署意味着网络流量不经过第三方服务器,更加安全可靠
- 独立性:避免因官方服务器故障或网络波动影响业务正常运行
如何自建Planet服务器?
我们将使用xubiaolin/docker-zerotier-planet项目,通过Docker容器快速部署私有的Planet服务器。
环境准备
在开始安装之前,请确保您的服务器满足以下条件:
- 拥有公网IP地址
- 开放以下端口:
- 3443/tcp(管理面板,默认可调整)
- 9994/tcp(ZeroTier通信,默认可调整)
- 9994/udp(ZeroTier通信,默认可调整)
- 安装必要的软件依赖:
- Docker(容器运行环境)
- Git(获取项目代码)
部署步骤
- 安装依赖软件
|
|
- 克隆项目代码
|
|
- 运行部署脚本
|
|
根据提示选择"安装"选项,脚本将自动完成部署过程,通常需要1-3分钟。
- 获取配置文件
部署完成后,会在./data/zerotier/dist目录下生成planet和moon配置文件。您可以通过安装完成后提供的URL直接下载,或使用SCP等工具从服务器下载。
- 访问管理面板
部署完成后,可通过http://服务器IP:3443访问管理面板,默认账号为admin,默认密码为password。
使用自建Planet服务器组网
创建网络
- 登录管理面板后,点击"Networks"菜单
- 点击"Add Network"按钮创建新网络
- 输入网络名称,其他选项保持默认
- 记录生成的网络ID,后续客户端配置需要用到
客户端配置
Windows客户端
- 从ZeroTier官网下载并安装客户端
- 将
planet文件复制到C:\ProgramData\ZeroTier\One目录(需要显示隐藏目录) - 重启ZeroTier服务:
- Win+S搜索"服务"
- 找到ZeroTier One并重启
- 使用管理员身份打开PowerShell,执行:
1zerotier-cli.bat join [网络ID] - 在管理面板中授权该设备
Linux客户端
- 安装ZeroTier客户端
- 进入目录
/var/lib/zerotier-one - 替换目录下的
planet文件 - 重启服务:
1service zerotier-one restart - 加入网络:
1zerotier-cli join [网络ID] - 在管理面板中授权该设备
macOS客户端
- 进入
/Library/Application\ Support/ZeroTier/One/目录 - 替换目录下的
planet文件 - 重启服务:
1cat /Library/Application\ Support/ZeroTier/One/zerotier-one.pid | sudo xargs kill - 加入网络:
1zerotier-cli join [网络ID] - 在管理面板中授权该设备

验证连接
在任意客户端执行以下命令验证连接状态:
|
|
如果看到PLANET角色且连接方式为DIRECT(直连),则表示配置成功。
常见问题与解决方案
连接问题
- 检查防火墙设置:确保服务器和客户端都开放了相应端口
- 云服务商安全组:在阿里云、腾讯云等平台后台放行端口
- 网络类型限制:某些网络环境下UDP可能被QoS限制,可考虑使用OpenVPN等替代方案
权限问题
- 客户端未授权:确保在管理面板中勾选了设备的"Authorized"
- 文件权限错误:确保
planet文件具有正确的读取权限
性能优化
- 部署Moon服务器:对于大规模部署,可以在不同地区部署Moon服务器以提高连接效率
- 监控连接状态:定期检查
zerotier-cli peers输出,确保设备间维持DIRECT连接
安全建议
- 及时修改默认密码:部署完成后应立即修改管理面板的默认账号密码
- 启用HTTPS:为管理面板配置SSL证书,提高安全性
- 定期备份配置:妥善保管生成的配置文件,特别是
planet和moon文件 - 访问控制:严格控制网络成员,仅授权可信设备加入
实际应用场景
- 远程办公:员工在家访问公司内部系统和资源
- 家庭网络:在外随时访问家中的NAS、智能家居设备
- 游戏联机:为分布式的游戏服务器建立专用网络
- 开发测试:为开发团队提供隔离的测试网络环境
- IoT设备管理:统一管理分布在全球各地的物联网设备
搭建好 planet 之后,在阿里云服务器上想要直接访问远程设备,也需要加入搭建好的 planet 网络,因 planet 和 peer 在同一台机器,可能会出现端口冲突的情况(默认用 9993),需要自定义 zerotier-cli 的端口
编辑 /var/lib/zerotier-one/local.conf文件(如果不存在则创建):
|
|
配置完成后,使用
|
|
s 即可在页面看到已经加入的阿里云机器,及家中局域网的机器