zerotier-one自建根服务器实战:从零搭建到高效管理

张开发
2026/4/7 11:02:55 15 分钟阅读

分享文章

zerotier-one自建根服务器实战:从零搭建到高效管理
1. 为什么需要自建ZeroTier根服务器最近在折腾远程办公环境时发现ZeroTier的免费版25设备限制实在不够用。作为一个经常需要在多台设备间切换的技术从业者光是我的开发机、测试机、手机和平板就已经占了大半名额。更别说还要给团队成员分配设备权限了。ZeroTier官方提供的付费方案虽然稳定但价格对个人开发者和小团队来说确实不太友好。好在ZeroTier是开源项目我们可以通过自建根服务器Planet节点来突破这个限制。实测下来自建服务器不仅设备数量不受限网络延迟还比官方节点低了不少——毕竟服务器位置可以自己选我用的东京节点比官方美国节点快多了。自建根服务器的核心原理很简单ZeroTier默认使用官方的12个根服务器分布在北美、欧洲和亚洲进行节点发现和路由。当我们自建Planet后所有加入这个网络的设备都会优先使用我们自己的根服务器进行通信完全绕过了官方服务器限制。2. 服务器选购与基础环境配置2.1 云主机选择要点选云主机时我踩过不少坑总结出几个关键指标网络质量实测发现新加坡、东京等亚洲节点到国内的延迟最低。我用的是腾讯云轻量新加坡节点电信网络ping值稳定在80ms左右CPU性能编译planet文件时需要较强的单核性能建议至少2核内存容量1GB内存勉强够用2GB更稳妥带宽建议选择按流量计费的大带宽方案100Mbps起步突发流量时不会卡顿特别提醒一定要确认云厂商是否允许UDP 9993端口入站有些海外VPS默认屏蔽UDP端口需要手动在安全组放行。2.2 系统环境准备以Ubuntu 20.04为例基础环境配置如下# 更新系统 sudo apt update sudo apt upgrade -y # 安装编译工具链 sudo apt install -y build-essential g libjson-c-dev cmake # 安装ZeroTier官方客户端 curl -s https://install.zerotier.com | sudo bash安装完成后检查服务状态sudo systemctl status zerotier-one如果看到Active: active (running)就说明基础环境OK了。这时候系统会自动生成身份密钥记下这个公钥cat /var/lib/zerotier-one/identity.public这个公钥后面编译planet文件时会用到。3. 编译与部署自定义Planet文件3.1 获取ZeroTier源码直接从GitHub拉取最新源码git clone https://github.com/zerotier/ZeroTierOne.git cd ZeroTierOne/attic/world/3.2 修改星球配置文件关键步骤来了用nano编辑mkworld.cppnano mkworld.cpp找到roots数组定义的地方把默认的官方节点注释掉前面加//然后添加自己的节点信息roots.push_back(World::Root()); roots.back().identity Identity(你的公钥内容); // 之前identity.public的内容 roots.back().stableEndpoints.push_back(InetAddress(你的服务器IP/9993));注意IP地址要带端口号9993这是ZeroTier的默认通信端口。3.3 编译生成planet文件执行编译脚本source ./build.sh ./mkworld如果一切顺利当前目录会生成world.bin文件。把它改名为planet并替换系统默认的mv world.bin planet sudo cp planet /var/lib/zerotier-one/ sudo chown zerotier-one:zerotier-one /var/lib/zerotier-one/planet sudo systemctl restart zerotier-one验证是否生效zerotier-cli status如果看到PLANET后面是你服务器的IP说明替换成功了。4. 安装ztncui管理面板4.1 安装基础依赖ztncui需要Node.js环境建议用nvm安装curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash source ~/.bashrc nvm install 164.2 配置ztncui下载最新版ztncui当前是0.8.6wget https://key-networks.com/download/ztncui/0.8.6/ztncui-0.8.6-1.x86_64.rpm sudo yum install -y ztncui-0.8.6-1.x86_64.rpm配置环境变量sudo bash -c echo ZT_TOKEN$(sudo cat /var/lib/zerotier-one/authtoken.secret) /opt/key-networks/ztncui/.env sudo bash -c echo NODE_ENVproduction /opt/key-networks/ztncui/.env sudo bash -c echo ZT_ADDR127.0.0.1:9993 /opt/key-networks/ztncui/.env sudo bash -c echo HTTPS_PORT3443 /opt/key-networks/ztncui/.env启动服务sudo systemctl enable ztncui sudo systemctl start ztncui现在可以通过https://你的服务器IP:3443 访问管理面板了默认账号密码都是password记得第一时间修改5. 客户端连接与网络管理5.1 Windows客户端配置下载官方客户端安装后需要修改注册表指向自建服务器按WinR输入regedit导航到HKEY_LOCAL_MACHINE\SOFTWARE\ZeroTier\One新建字符串值RootServers值为你的服务器IP:9993或者在安装目录创建local.conf文件{ settings: { primaryPort: 9993, portMappingEnabled: true, allowSecondaryPort: false, rootServers: [你的服务器IP/9993] } }5.2 Linux客户端配置对于Linux客户端直接替换planet文件即可sudo cp planet /var/lib/zerotier-one/ sudo systemctl restart zerotier-one5.3 网络管理技巧在ztncui面板中可以创建多个虚拟网络建议按用途划分如办公网络、家庭网络设置访问控制规则精确控制设备间通信权限查看实时流量统计找出异常连接设置静态IP分配避免设备IP频繁变动实测发现当网络设备超过50台时建议在管理面板中启用Enable Broadcast选项可以显著提升大流量场景下的传输效率。6. 常见问题排查6.1 设备无法加入网络检查要点服务器防火墙是否放行UDP 9993端口客户端是否正确指向自建服务器服务端和客户端时间是否同步时间差超过30秒会导致认证失败6.2 网络延迟高优化方案在ztncui面板中启用Allow Managed Routes对于跨地域设备可以部署多个planet服务器组成集群调整MTU值默认2800可能不适合某些网络环境6.3 管理面板无法访问排查步骤检查ztncui服务状态sudo systemctl status ztncui查看日志journalctl -u ztncui -f确认3443端口监听状态sudo netstat -tulnp | grep 3443遇到最多的问题是证书错误可以手动替换证书sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \ -keyout /opt/key-networks/ztncui/etc/tls/private/ztncui.key \ -out /opt/key-networks/ztncui/etc/tls/certs/ztncui.crt7. 性能优化与高级配置7.1 多服务器负载均衡当设备数量超过200台时建议部署多个planet服务器按照相同流程编译planet文件但使用相同的identity.public在mkworld.cpp中添加多个服务器IP客户端会自动选择延迟最低的节点连接7.2 内网穿透加速对于没有公网IP的设备可以通过Moon节点中转zerotier-cli orbit 你的服务器ID 你的服务器ID7.3 自动化运维脚本我写了个监控脚本自动重启异常服务#!/bin/bash if ! pgrep -x zerotier-one /dev/null; then systemctl restart zerotier-one fi if ! nc -z localhost 3443; then systemctl restart ztncui fi加到crontab里每分钟检查一次(crontab -l ; echo * * * * * /path/to/monitor.sh) | crontab -经过三个月的实际运行这套方案支撑了我们团队87台设备的稳定连接平均延迟比官方网络低40%最重要的是再也不用担心设备数量限制了。对于技术团队来说花半天时间搭建自己的ZeroTier根服务器绝对是笔划算的投资。

更多文章