Date: 2024-10-02
Update: 2025-09-19
zerotier链接:
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
参考链接和阅读记录
信息:
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
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模型:








示例排查:


