自建私有网络中枢:从零构建跨平台ZeroTier Planet实战指南
最近在折腾跨设备文件共享和远程开发环境时,被各种公网IP、端口转发、动态域名搞得焦头烂额。特别是当设备分散在不同网络环境——家里的NAS在电信宽带下,公司的测试服务器用的是移动专线,笔记本又经常带着到处跑——传统的方案要么配置复杂,要么稳定性堪忧。直到我开始研究基于ZeroTier的私有网络方案,才发现原来有一种更优雅的解决方案:自建Planet服务器。
你可能听说过ZeroTier这个工具,它确实能帮我们轻松组建虚拟局域网。但很多人不知道的是,ZeroTier默认使用的是官方的根服务器(Planet),虽然方便,但在某些场景下,自建Planet能带来更好的可控性和性能表现。今天我就把自己从零开始搭建ZeroTier Planet,并在Windows、Linux、macOS、安卓全平台配置的完整经验分享出来,避开那些官方文档没明说的坑。
1. 理解ZeroTier Planet:为什么需要自建根服务器?
在深入动手之前,我们先搞清楚几个核心概念。ZeroTier的网络架构其实很有意思——它采用了类似区块链的分布式网络思想,但又保留了中心化的控制节点。
ZeroTier网络的三层结构:
- Planet(行星):根服务器,负责整个网络的节点发现和路由协调
- Moon(月球):辅助服务器,可以自建用于优化特定区域的网络性能
- Leaf(叶子):客户端节点,也就是我们实际使用的设备
默认情况下,所有ZeroTier客户端都会连接到ZeroTier官方的几个Planet服务器。这很方便,但有几个潜在问题:
- 延迟问题:如果你的设备主要在国内,而Planet服务器在国外,首次连接和节点发现的延迟可能较高
- 隐私考虑:虽然ZeroTier声称流量是端到端加密的,但节点信息需要经过Planet服务器
- 可控性:自建Planet可以完全掌控网络的基础设施
注意:自建Planet并不会让你的网络流量“更快”,它主要优化的是节点发现和初始连接过程。实际的数据传输仍然是点对点的。
1.1 自建Planet的适用场景
并不是所有情况都需要自建Planet。在决定投入时间搭建之前,先看看你的需求是否匹配:
强烈推荐自建Planet的场景:
- 企业内网穿透,需要完全掌控网络基础设施
- 设备主要分布在特定地理区域(如全部在国内)
- 对网络连接的初始建立速度有较高要求
- 需要长期稳定的虚拟网络环境
可能不需要自建Planet的场景:
- 临时性的测试网络
- 设备数量很少(少于10台)
- 对技术细节不感兴趣,只想快速用起来
如果你属于前者,那么继续往下看。我会带你从服务器部署开始,一步步完成整个体系的搭建。
2. 服务器端部署:构建你的私有Planet
自建Planet的第一步是准备一台服务器。这里有几个关键选择需要考虑:
2.1 服务器选择与配置
服务器配置要求:
- CPU:1核以上(ARM或x86均可)
- 内存:512MB以上
- 存储:20GB以上
- 网络:公网IP,开放UDP 9993端口
推荐的服务商对比:
| 服务商类型 | 推荐配置 | 月成本 | 适合场景 |
|---|---|---|---|
| 国内云服务商 | 1核2G,按量计费 | 约50-100元 | 国内设备为主,延迟要求高 |
| 国际云服务商 | 1核1G,最便宜套餐 | 约5美元 | 国际混合网络,预算有限 |
| 自有服务器 | 任意配置 | 硬件成本 | 已有闲置资源,完全掌控 |
我个人使用的是国内某云服务商的轻量应用服务器,1核2G配置,系统选择Ubuntu 22.04 LTS。选择国内服务器的好处是,国内设备连接Planet的延迟可以控制在50ms以内。
2.2 编译安装ZeroTier One
在服务器上,我们需要编译安装ZeroTier One,并生成自定义的Planet文件。以下是完整的操作流程:
# 更新系统并安装依赖
sudo apt update
sudo apt upgrade -y
sudo apt install -y build-essential git curl
# 克隆ZeroTier源代码
git clone https://github.com/zerotier/ZeroTierOne.git
cd ZeroTierOne
# 编译(这个过程可能需要10-30分钟,取决于服务器性能)
make -j$(nproc)
# 安装到系统
sudo make install
编译过程中如果遇到依赖问题,可能需要额外安装一些开发包:
# 可能的额外依赖
sudo apt install -y libssl-dev
sudo apt install -y pkg-config
编译完成后,验证安装是否成功:
# 检查zerotier-one版本
zerotier-one --version
# 检查zerotier-cli是否可用
zerotier-cli --version
2.3 生成自定义Planet文件
这是最关键的一步——创建属于你自己的根服务器配置。ZeroTier提供了一个工具来生成Planet文件:
# 进入ZeroTier安装目录
cd /var/lib/zerotier-one
# 生成Planet配置文件
sudo ./zerotier-idtool initmoon identity.public > moon.json
# 编辑moon.json文件,添加服务器公网IP
sudo nano moon.json
在moon.json文件中,找到"stableEndpoints"部分,添加你的服务器公网IP和端口:
{
"id": "你的节点ID",
"objtype": "world",
"roots": [
{
"identity": "你的公钥",
"stableEndpoints": ["你的公网IP/9993"]
}
],
"signingKey": "签名密钥",
"signingKey_SECRET": "私钥",
"updatesMustBeSignedBy": "更新签名密钥",
"worldType": "planet"
}
提示:如果你的服务器在NAT后面,需要确保UDP 9993端口已经正确映射。可以使用
nc -u -v 你的公网IP 9993测试端口连通性。
生成最终的Planet文件:
# 生成planet文件
sudo ./zerotier-idtool genmoon moon.json
# 重命名并移动到正确位置
sudo mv *.moon planet
现在你得到了一个名为planet的文件,这就是你的私有Planet配置文件。把它备份到安全的地方,后续所有客户端都需要这个文件。
2.4 配置并启动Planet服务
为了让服务器作为Planet运行,我们需要修改ZeroTier的配置:

&spm=1001.2101.3001.5002&articleId=150522088&d=1&t=3&u=c419f7219a9a4738be452aa7d176619a)
7705

被折叠的 条评论
为什么被折叠?



