《ZeroTier教程》01-使用官方PLANET和controller 对称型NAT排查办法 以及所有参考链接
Date: 2024-10-02
Update: 2025-09-19
zerotier链接:
-
zerotier官网:https://www.zerotier.com/
-
文档(创建网络和客户端连接):https://docs.zerotier.com/start/
-
zerotier客户端下载:https://www.zerotier.com/download/
zerotier所有客户端版本下载:https://download.zerotier.com/RELEASES/
-
zerotier的开源仓库:https://github.com/zerotier/ZeroTierOne
zerotier最大特性:
- 虚拟局域网,在物理网络之上创建一个虚拟的二层/三层网络
- 优先通过NAT打洞实现P2P直连,无法直连就用中继兜底
- 不需要设置VPN,就是添加了一个虚拟网卡,分配了ip,并且写了路由表,从而实现数据传输
zerotier更新日志:https://github.com/zerotier/ZeroTierOne/blob/dev/RELEASE-NOTES.md
1. 使用官方PLANET和controller
-
打开控制台,注册登录:https://my.zerotier.com/
-
创建一个network,记下重要的Network ID,可以设置name,routes等,本次设置的信息如下:
Network ID:xxxx Name:xxxx Routes:10.11.12.0/24 Auto-Assign Pools:10.11.12.1 ~ 10.11.12.254 -
授权加入network的设备,在控制台找到新加入的设备,edit:
Authorized 勾选 Name 设置一下 可以固定一个ip
参考链接和阅读记录
-
zerotier的网络建议:Router Config Tips | ZeroTier Documentation
-
Zerotier open tcp ports listening (in addition to UDP?) - General Discussion - ZeroTier Discussions
-
紧急修复zerotier组网的办法:Emergency Troubleshooting Instructions | ZeroTier Documentation
-
连接的具体解决办法:Connection Issues Troubleshooting | ZeroTier Documentation
-
ZeroTier 介绍、安装、配置及端口放行的指南,轻松构建虚拟网络的工具 - Linux - 易记录 ejilu.cn
-
zerotier-cli leave command timing out on Linux 5.10.60-qnap · Issue #2408 · zerotier/ZeroTierOne
linux上的ZeroTierOne在1.14.1及以上版本,会遇到
zerotier-cli leave超时无法完成的问题,因此目前先使用 1.14.0 版本 -
How to use CLI directly in Android via TUN · Issue #1715 · zerotier/ZeroTierOne
安卓APP里没有zerotier的CLI
信息:
-
win默认不响应ping,但是win上安装包安装会自动在防火墙中配置允许ping因此无需担心(实际上就是允许 ICMP入站)
-
zerotier是单线程的
-
付费与否不影响性能
-
10位的是地址(address),16位的是网络ID(Network ID)
-
连接角色:
root:ZeroTier, Inc roots或者自建roots【实际上就是PLANET】
controller:Network ID(16位HEX)的前10位就是控制器地址
-
9993/tcp是用来监听zerotier-cli和桌面UI请求的端口,最好也在防火墙中开放入站,因为当zerotier无法通过9993/udp通信时,会fallback到relay状态,也就是中转 TUNNELED
-
RELAY的节点需要通过roots服务器中转,会导致高延迟和丢包
-
带宽限制(点对点直连的情况下):CPU单线程性能、物理速度、硬件AES加速、地理距离。
自建PLANET
-
官方的自建MOON的说明:Private Root Servers | ZeroTier Documentation
-
自建zerotier的Web UI:dec0dOS/zero-ui: ZeroUI - ZeroTier Controller Web UI - is a web user interface for a self-hosted ZeroTier network controller.
-
关于自建planet的讨论帖:五分钟自建 ZeroTier 的 Planet/Controller - V2EX
该作者的项目容器:sbilly/docker-zerotier-controller: Dockernized ZeroTierOne Controller
-
【这个项目写的非常好】docker部署zerotier planet:xubiaolin/docker-zerotier-planet: 一分钟私有部署zerotier-planet服务
该项目用到的controller:https://github.com/key-networks/ztncui
-
官方推荐的自建相关的项目:Awesome ZeroTier Things | ZeroTier Documentation
-
支持自建moon和planet的修改版安卓客户端:kaaass/ZerotierFix: An unofficial Zerotier Android client patched from official client
docker-zerotier-planet项目的安装脚本 deploy.sh 解读:
-
定义变量
-
检查docker有没有配置proxy,没配置的话用另外的镜像(实际写的一样的)
-
uname -r看下内核版本,确保版本没有小于5,小于的话可以升级centos内核 -
安装 lsof,检查端口占用
-
获取当前设备的公网ipv4和ipv6:
curl -s https://ipv4.icanhazip.com/ curl -s https://ipv6.icanhazip.com/ -
安装流程:
确定端口号: zerotier-planet,比如 9994 zerotier-planet API,比如 3443 zerotier-planet FILE,比如 3000 自动或手动获取公网ipv4和ipv6 docker run 容器运行后 KEY=`cat /app/config/file_server.key` MOON_NAME=`ls /app/dist | grep moon` 配置URL:http:// ip加API port 默认用户名:admin 默认密码:password moon配置和planet配置在容器的目录:/app/dist moon配置文件下载:http://${ipv4}:${FILE_PORT}/${MOON_NAME}?key=${KEY} planet配置文件下载:http://${ipv4}:${FILE_PORT}/planet?key=${KEY} 放行端口:${ZT_PORT}/tcp, ${ZT_PORT}/udp, ${API_PORT}/tcp, ${FILE_PORT}/tcp -
upgrade,检查到新版本就执行install_from_config,流程和安装是一样的,用到的是容器中 /app/config 的配置文件
-
uninstall,删除容器和镜像,并询问是否删除数据
-
info,读取 /app/config 下的配置文件并输出信息
-
resetpwd,重置密码后重启服务
项目的 http_server.js 解读:
- 启动端口
- 访问这个文件服务器时URL必须带
?key=xxxx,必须正确才能访问,否则返回401 SECRET_KEY会写入/app/config/file_server.key文件里- 文件根目录是
/app/dist,里面只有planet和xxxxxx.moon两个文件
对称型NAT排查办法
以下内容来自于deepseek R1模型:








示例排查:


本文声明:
- 此文可能会存在排版、样式不美观,图片无法显示等问题
- 文章内容在原文永久链接中会定期更新,此文不做同步更新
- 限于篇幅长度限制,此文可能会有裁剪
建议阅读原文链接

浙公网安备 33010602011771号