导航菜单

用户中心

登录 / 注册

关注我

Docker自建ZeroTier Planet私有网络,异地组网神器!

敷衍怎么演 2026-02-11 470 浏览 Docker
37
文章
16,107
阅读

前言

ZeroTier 是一个优秀的虚拟网络解决方案,可以让分布在全球各地的设备通过互联网建立安全的点对点连接。然而,使用官方服务存在一些限制:免费版本只能连接25台设备,付费版本成本较高,而且数据需要经过第三方服务器。

        本文将手把手教你如何使用 Docker 部署属于自己的 ZeroTier 私有网络,不依赖官方服务,实现全球设备自由互联,无限制、高安全、低延迟!

什么是ZeroTier Planet?

ZeroTier的架构中包含三个核心组件:

  • Planet:根服务器,负责设备发现和网络协调

  • Moon:中继服务器,帮助无法直连的设备建立连接

  • Leaf:客户端设备,实际使用网络的终端

官方的 Planet 服务器位于国外,自建 Planet 可以获得更好的网络性能和完全的数据控制权。

准备工作

系统要求

  • 一台具有公网IP的 Linux 服务器

  • Docker 环境

  • docker-compose

  • 开放9993(UDP)--作为客户端设备连接Docker自建planet(虚拟组网直连SSH无需开放公网22端口)

  • 9995端口(UDP)--自建planet/moon

环境准备

# 安装Dockercurl -fsSL https://get.docker.com | shsudo systemctl start dockersudo systemctl enable docker
# 安装Docker Composesudo curl -L 
"https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" 
-o /usr/local/bin/docker-composesudo 
chmod +x /usr/local/bin/docker-compose

部署步骤

1. 克隆项目并准备环境

# 克隆项目git clone https://github.com/Jonnyan404/zerotier-planetcd zerotier-plane
t# 创建必要的目录mkdir -p zerotier-one ztncui/etc

2. 配置Docker Compose

编辑 docker-compose.yml 文件:

### date:2021年11月29日
### author: www.mrdoc.fun | jonnyan404
### 转载请保留来源
### update:2022年08月14日#version: '2.0'services:    
ztncui:        
container_name:ztncui        
restart:always        
environment:           
-MYADDR=你的服务器公网IP
# 修改为实际公网IP            
-HTTP_PORT=4000            
-HTTP_ALL_INTERFACES=yes            
-ZTNCUI_PASSWD=你的管理密码
# 设置管理密码        
ports:            -'4000:4000'      
# web控制台入口            
-'9995:9993'      
# ZeroTier服务端口            
-'9995:9993/udp'
# UDP端口           
-'3180:3180'      
# planet/moon文件下载入口        
volumes:           
-'./zerotier-one:/var/lib/zerotier-one'            
-'./ztncui/etc:/opt/key-networks/ztncui/etc'            
# 按实际路径挂载卷, 冒号前面是宿主机的, 支持相对路径        
image:keynetworks/ztncui

3. 启动服务

# 修改配置文件中的IP和密码vim docker-compose.yml
# 启动服务docker-compose up -d
# 查看服务状态docker-compose ps -a

4. 生成Moon配置文件

# 进入容器docker exec -it ztncui bash
# 在容器内操作cd /var/lib/zerotier-onels -l
# 生成moon配置文件zerotier-idtool initmoon identity.public > moon.jsonchmod 777 moon.json

5. 修改Moon配置

在宿主机上编辑moon.json文件:

# 编辑moon.json,修改stableEndpointsvim ./zerotier-one/moon.json

在moon.json中找到 stableEndpoints 部分,修改为:

"stableEndpoints": ["你的公网IP/9995"]

6. 生成Moon文件

# 回到容器内docker exec -it ztncui bashcd /var/lib/zerotier-one
# 生成moon文件zerotier-idtool genmoon moon.jsonmkdir moons.dcp *.moon moons.d/

7. 生成Planet文件

在宿主机上操作:

# 下载mkmoonworld工具wget https://github.com/kaaass/ZeroTierOne/releases/download/1.10.2-patch1/mkmoonworld-x86_64chmod +x mkmoonworld-x86_64
# 复制moon.json到当前目录cp ./zerotier-one/moon.json ./
# 生成planet文件./mkmoonworld-x86_64 ./moon.jsonmv world.bin planet
# 复制planet文件到容器内docker cp ./planet ztncui:/var/lib/zerotier-one
# 验证文件完整性md5sum planet

8. 重启服务

# 重启容器docker restart ztncui
# 验证服务状态docker exec -it ztncui bashcd /var/lib/zerotier-one
# 查看ZeroTier信息zerotier-cli infozerotier-cli listmoons

配置客户端

1. 下载Planet文件

通过以下方式获取planet文件:

  • 直接从服务器下载: http://你的服务器IP:3180/planet

  • 或者从服务器复制之前生成的planet文件

2. 备份并替换Planet文件

Windows客户端:

# 停止ZeroTier服务net stop ZeroTierOneService
# 备份原始文件copy "C:\ProgramData\ZeroTier\One\planet" "C:\ProgramData\ZeroTier\One\planet.bak"
# 替换为新的planet文件copy "planet" "C:\ProgramData\ZeroTier\One\planet"
# 重启服务net start ZeroTierOneService

Linux客户端:

# 停止ZeroTier服务sudo systemctl stop zerotier-one
# 备份原始文件sudo cp /var/lib/zerotier-one/planet /var/lib/zerotier-one/planet.bak
# 替换为新的planet文件sudo cp planet /var/lib/zerotier-one/planet
# 重启服务sudo systemctl start zerotier-one

macOS客户端:

# 停止服务sudo launchctl unload /Library/LaunchDaemons/com.zerotier.one.plist
# 备份并替换sudo cp "/Library/Application Support/ZeroTier/One/planet" "/Library/Application Support/ZeroTier/One/planet.bak"sudo cp planet "/Library/Application Support/ZeroTier/One/planet"
# 重启服务sudo launchctl load /Library/LaunchDaemons/com.zerotier.one.plist

安卓客户端:安卓端需要使用 ZeroTier-Fix

创建和管理网络

1. 访问管理界面

打开浏览器访问: http://你的服务器IP:4000

使用之前在docker-compose.yml中设置的密码登录。

2. 创建网络

  • 点击"Add Network"创建新网络

  • 设置网络名称和描述

  • 配置IP地址范围(如:192.168.100.0/24)

  • 保存网络ID,客户端加入时需要使用

3. 客户端加入网络

在已经替换planet文件的客户端上执行:

# 加入网络sudo zerotier-cli join 你的网络ID
# 查看连接状态sudo zerotier-cli statussudo zerotier-cli listnetworks

4. 授权设备

  • 在管理界面中找到对应的网络

  • 在"Members"部分可以看到申请加入的设备

  • 勾选"Authorized"来授权设备加入网络

  • 可以为设备分配固定IP地址

高级配置

1. 验证Moon节点状态

# 进入容器查看moon状态docker exec -it ztncui bashcd /var/lib/zerotier-one
# 查看ZeroTier信息zerotier-cli infozerotier-cli listnetworkszerotier-cli listmoonszerotier-cli peerszerotier-cli listpeers

2. 防火墙配置

# 开放必要端口4000/tcp   
# Web管理界面9995/tcp   
# ZeroTier服务端口9993/udp、9995/udp   
# ZeroTier UDP端口3180/tcp   
# 文件下载端口,可不开放,通过服务器ftp下载

3. 客户端Moon配置(可选)

如果需要客户端连接到Moon节点:

# 将moon文件复制到客户端sudo cp 0000005979756b76.moon /var/lib/zerotier-one/moons.d/
# 重启客户端服务sudo systemctl restart zerotier-one
# 查看moon连接状态sudo zerotier-cli listmoons

4. 监控和日志

# 查看容器日志docker logs ztncui
# 查看ZeroTier运行状态docker exec -it ztncui zerotier-cli infodocker exec -it ztncui zerotier-cli listpeers

5. 数据备份

# 备份重要数据cp -r ./zerotier-one ./zerotier-one-backupcp -r ./ztncui ./ztncui-backup

常见问题解决

1. 容器无法启动

# 检查端口占用netstat -tulpn | grep -E "(4000|9995|3180)"
# 检查Docker服务sudo systemctl status docker
# 查看容器日志docker logs ztncui

2. 客户端无法连接到Planet

检查服务端:

# 验证服务状态docker exec -it ztncui zerotier-cli info
# 检查端口监听docker exec -it ztncui netstat -tulpn | grep 9993

检查客户端:

# 验证planet文件是否正确替换sudo zerotier-cli infosudo zerotier-cli listpeers
# 检查配置文件ls -la /var/lib/zerotier-one/planet

3. 设备加入网络后无法通信

  • 检查网络配置中的IP地址范围

  • 确认设备已在管理界面中授权

  • 验证防火墙规则是否正确

4. Moon节点连接失败

# 检查moon文件是否正确生成docker exec -it ztncui ls -la /var/lib/zerotier-one/moons.d/
# 验证moon配置docker exec -it ztncui zerotier-cli listmoons

5. 管理界面无法访问

  • 检查4000端口是否被防火墙阻止

  • 确认ZTNCUI_PASSWD环境变量设置正确

  • 验证容器网络配置

安全建议

  1. 定期备份:备份planet-data和controller-data目录
  2. 访问控制:使用防火墙限制管理端口访问
  3. HTTPS配置:为web控制面板配置SSL证书
  4. 监控日志:定期检查服务日志,及时发现异常

总结

通过使用keynetworks/ztncui镜像自建ZeroTier Planet,我们可以获得:

技术优势:

  • 完全私有的网络控制权,数据不经过第三方

  • 不受25台设备的限制,可以连接任意数量设备

  • 自定义端口配置,避免默认端口冲突

  • 集成Web管理界面,便于网络管理

实际收益:

  • 更好的网络性能和较低的延迟

  • 完整的数据安全保障和隐私保护

  • 灵活的网络配置和管理权限

  • 无需支付订阅费用的长期成本优势

部署要点:

  1. 确保服务器有稳定的公网IP和足够的带宽
  2. 正确配置防火墙,开放必要端口
  3. 注意备份重要的配置文件和密钥
  4. 定期检查服务状态和日志
  5. 路由器一定一定要开启UPnP功能!!!

        这个方案特别适合企业内网互联、远程办公、个人实验室或需要稳定、快速、高度定制化的网络环境。虽然初期部署需要一定的技术投入,但长期来看具有很高的性价比和灵活性。


扫描二维码,在手机上阅读

评论 (0)

还没有评论,快来抢沙发吧!

首页 关于 友链 相册
当前有 0 人正在浏览本页
👋 刚刚 访客 加入了浏览
👁️ 本页已被浏览 0
×