保姆级教程:在Ubuntu 20.04上从零搭建ZeroTier私有Planet,突破官方25节点限制
从零构建ZeroTier私有Planet:Ubuntu 20.04全流程实战指南
在分布式办公和远程协作成为常态的今天,如何快速搭建稳定、可控的虚拟专用网络成为许多技术团队的核心需求。ZeroTier作为一款开源的网络虚拟化工具,凭借其简洁的配置和高效的性能赢得了广泛青睐。但官方免费版的25节点限制往往无法满足中小企业的实际需求。本文将手把手教你如何在Ubuntu 20.04系统上部署完全自主控制的ZeroTier私有Planet服务器,彻底突破这一限制。
1. 环境准备与基础配置
1.1 服务器选型与系统要求
构建私有Planet的第一步是准备合适的服务器硬件。建议选择具备以下配置的云服务器或物理机:
- CPU:至少2核,推荐4核及以上
- 内存:4GB起步,大规模部署建议8GB+
- 存储:50GB SSD(编译过程会产生临时文件)
- 网络:固定公网IP地址,带宽≥100Mbps
操作系统方面,虽然Ubuntu 22.04是最新LTS版本,但考虑到软件兼容性和稳定性,我们选择Ubuntu 20.04 LTS作为基础系统。安装完成后,首先执行系统更新:
sudo apt update && sudo apt upgrade -y1.2 防火墙与端口配置
ZeroTier的正常运行需要开放特定网络端口。如果使用UFW防火墙,可按以下方式配置:
sudo ufw allow 9993/udp # ZeroTier主通信端口 sudo ufw allow 9993/tcp # 备用TCP端口 sudo ufw allow 3443/tcp # Web控制面板端口 sudo ufw enable注意:如果服务器位于内网或云平台,还需在网络安全组中放行上述端口。
2. ZeroTier核心服务部署
2.1 安装编译依赖环境
构建私有Planet需要完整的开发工具链和特定库文件:
sudo apt install -y \ build-essential \ g++ \ cmake \ libjson-c-dev \ git \ curl验证g++版本(要求≥7.0):
g++ --version2.2 获取并修改ZeroTier源码
从GitHub克隆最新源码仓库:
cd /opt sudo git clone https://github.com/zerotier/ZeroTierOne cd ZeroTierOne/attic/world关键步骤是修改mkworld.cpp文件中的Planet节点配置。使用vim或nano编辑文件:
// 定位到约第50行,修改默认星球节点 std::vector roots; // 注释或删除官方节点,添加自己的服务器IP // roots.push_back(World::Root()); roots.push_back(World::Root()); // 替换为你的公网IP2.3 编译生成私有Planet文件
执行构建脚本生成自定义planet文件:
sudo ./build.sh sudo ./mkworld sudo mv world.bin planet生成的planet文件需要复制到指定位置:
sudo cp planet /var/lib/zerotier-one/3. 控制面板ztncui安装
3.1 下载并安装deb包
ztncui提供了直观的Web管理界面,安装命令如下:
wget https://s3-us-west-1.amazonaws.com/key-networks/deb/ztncui/1/x86_64/ztncui_0.8.14_amd64.deb sudo apt install ./ztncui_0.8.14_amd64.deb -y3.2 配置环境变量
设置ztncui所需的认证令牌和端口:
echo "ZT_TOKEN=$(sudo cat /var/lib/zerotier-one/authtoken.secret)" | sudo tee /opt/key-networks/ztncui/.env >/dev/null echo "HTTPS_PORT=3443" | sudo tee -a /opt/key-networks/ztncui/.env >/dev/null echo "NODE_ENV=production" | sudo tee -a /opt/key-networks/ztncui/.env >/dev/null设置文件权限并重启服务:
sudo chmod 400 /opt/key-networks/ztncui/.env sudo chown ztncui:ztncui /opt/key-networks/ztncui/.env sudo systemctl restart ztncui4. 客户端配置与网络管理
4.1 Windows客户端配置
- 下载安装官方ZeroTier客户端
- 替换默认planet文件:
- 路径:
C:\ProgramData\ZeroTier\One\ - 将服务器生成的
planet文件覆盖到此目录
- 路径:
- 重启ZeroTier服务
4.2 Linux客户端配置
对于Linux客户端,操作流程略有不同:
# 安装客户端 curl -s https://install.zerotier.com | sudo bash # 替换planet文件 sudo cp /path/to/custom/planet /var/lib/zerotier-one/ # 重启服务 sudo systemctl restart zerotier-one4.3 网络创建与设备授权
通过Web界面(https://服务器IP:3443)管理网络:
- 使用默认账号
admin/password登录 - 在"Networks"选项卡创建新网络
- 记录生成的16位网络ID
- 客户端加入网络:
sudo zerotier-cli join [网络ID] - 在Web界面授权新设备
5. 高级优化与故障排查
5.1 性能调优参数
在/etc/sysctl.conf中添加以下优化参数:
net.core.rmem_max=4194304 net.core.wmem_max=4194304 net.ipv4.ip_local_port_range=1024 65535应用配置:sudo sysctl -p
5.2 常见问题解决方案
客户端无法连接:
- 检查
zerotier-cli listnetworks输出状态 - 验证防火墙规则和路由设置
- 确保所有节点使用相同的planet文件
Web控制面板无法访问:
- 检查ztncui服务状态:
sudo systemctl status ztncui - 验证
.env文件配置是否正确 - 查看日志:
journalctl -u ztncui -f
网络延迟过高:
- 考虑部署多个Planet节点实现地理分布
- 使用
zerotier-cli peers查看节点间连接质量 - 调整MTU值(默认2800)
在实际部署中,我发现最关键的环节是确保所有节点使用完全一致的planet文件。曾经因为一个客户端使用了旧版文件,导致整个网络出现间歇性连接问题。建议将定制好的planet文件纳入版本控制系统统一管理。
