《ZeroTier教程》01-使用官方PLANET和controller 对称型NAT排查办法 以及所有参考链接

原文永久链接:https://forum.piwind.com/d/38-zerotierjiao-cheng-01-shi-yong-guan-fang-planethe-controller-dui-cheng-xing-natpai-cha-ban-fa-yi-ji-suo-you-can-kao-lian-jie

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,里面只有 planetxxxxxx.moon 两个文件

对称型NAT排查办法

以下内容来自于deepseek R1模型:

image-20250205014836261

image-20250205014850215

image-20250205014925809

image-20250205014956438

image-20250205015114581

image-20250205015149676

image-20250205015221032

image-20250205015247034

示例排查:

image-20250205115229924

image-20250205115313030

image-20250205115330093

本文声明:

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

建议阅读原文链接

posted @ 2025-09-26 18:39  派风社区Piwind  阅读(83)  评论(0)    收藏  举报