2025/12/28 19:21:08
网站建设
项目流程
民制作网站价格,网站建设 设计那种连接线厂家,网站平台建设实训总结,wordpress 获取备案号2. 自建PLANET和controller背景ZeroTier 网络中的关键概念#xff1a;概念 说明PLANET zerotier网络的根服务器#xff0c;负责寻址、发现和中继#xff0c;长度为10的ztaddrMOON 作为PLANET的补充#xff0c;节点在尝试P2P连接时#xff0c;会优先使用MOON#xff0c;无…2. 自建PLANET和controller背景ZeroTier 网络中的关键概念概念 说明PLANET zerotier网络的根服务器负责寻址、发现和中继长度为10的ztaddrMOON 作为PLANET的补充节点在尝试P2P连接时会优先使用MOON无法建立的情况下再回落到PLANET。MOON无法单独工作尽管MOON可以记录节点的ID信息确定连接线路但是前提是controller也加入到MOON中来为节点授权而zerotier的官方controller只加入了官方自己的PLANETLEAF 所有接入zerotier网络的节点长度为10的随机的ztaddr且由PLANET决定其ztaddr的唯一性不唯一就重新生成节点之间通过PLANET和MOON协调通信并由controller控制授权controller 通过controller创建的 NetworkID为16位其前10位就是controller的ztaddr自建PLANET的时候controller和PLANET的ztaddr是一致的官方PLANET列表Root Server IP Whitelist | ZeroTier Documentation官方PLANET位置Los Angeles, Miami, Tokyo, Zurich, San Francisco可以通过nslookup查一下官方PLANET的ip地址## 查询所有nslookup root.zerotier.com## 逐个查询nslookup root-lax-01.zerotier.comnslookup root-mia-01.zerotier.comnslookup root-tok-01.zerotier.comnslookup root-zrh-01.zerotier.comnslookup root-alice-sfo-01.zerotier.com由此可见国内是没有zerotier官方PLANET的自建有助于提升连接稳定性、直连成功率。在杭州移动看到的连接的官方PLANET778cde7190 - PLANET 472 DIRECT 25184 29758 103.195.103.66/9993【美国Florida州】cafe04eba9 - PLANET 440 DIRECT 25186 29792 2a02:6ea0:d405::9993/9993cafe80ed74 - PLANET 260 DIRECT 4728 29722 2a02:6ea0:c87f::1/9993cafefd6717 - PLANET -178 DIRECT 25188 30412 79.127.159.187/9993【日本东京】技术路线选择自建PLANET连接相对更快速更稳定不经过zerotier官方服务器全程私有化流量更安全更隐私controller也是自建的因此自己掌握网络配置也无需受到官方的类似设备数量免费上限25的限制自建MOON作为官方PLANET的补充节点在尝试P2P连接时会优先使用MOON无法建立的情况下再回落到官方PLANET可以通过官方的 zerotier-idtool genmoon 快速创建MOON节点更简单轻量而且本质上也可以用于自建的PLANET本次先着手于自建PLANET和controller。前后速度对比设备1杭州移动家宽设备2安徽电信家宽PLANET用官方355KB/s而且非常不稳定设备1杭州移动家宽设备2杭州联通5GPLANET用官方4MB/s设备1杭州移动家宽设备2杭州联通5GPLANET用自建8MB/s连接稳定很多设备1杭州移动家宽设备2安徽电信家宽PLANET自建12MB/s连接稳定在20ms白天发现也会连不上300KB/s不知道咋回事91ms连接很不稳定设备1杭州移动家宽设备2合肥联通5GPLANET用自建12MB/s连接稳定结论自建PLANET可以缩短建立P2P直连的耗时提升直连成功率以及无法直连的情况下走中转的速度会明显有提升除此之外对于建立P2P直连后的网速、稳定性的提升不明显二次开发ztncui用到的源项目https://github.com/key-networks/ztncuiReverse Proxy Subdirectory? · Issue #11 · key-networks/ztncui原项目和基于这个的docker项目都无法支持反向代理的子路径二次开发后的项目https://github.com/piwind/ztncuiztncui项目无法支持反向代理的子路径使用nginx中的proxy_redirect和sub_filter也无法解决子路径的问题毕竟不是纯前端项目【而且项目已经至少2年没有更新了】这里备注一下nginx尝试改子路径的配置location /console/zerotier/ {proxy_pass http://127.0.0.1:20911/;proxy_set_header HOST $host;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_redirect / /console/zerotier/;sub_filter_once off;sub_filter href/ href/console/zerotier/;sub_filter src/ src/console/zerotier/;}fork了原项目在新分支 add_basePath 上二次开发提交PR再更新到自己的项目的master分支中docker-zerotier-planet用到的原项目https://github.com/xubiaolin/docker-zerotier-planet二次开发后的项目https://github.com/piwind/docker-zerotier-planet对应的docker镜像https://hub.docker.com/r/piwind/zerotier-planet调整了自动化构建docker镜像的流程修改了ztncui项目的链接改为自己二次开发的ztncui添加了支持环境变量BASE_PATH使用vars.SPEC_ZEROTIER_TAG可以指定打包docker镜像时用到的zerotier-one的版本号fork了原项目二次开发并通过推送tag到github触发CI来构建docker镜像搭建流程https://github.com/piwind/docker-zerotier-planethttps://github.com/piwind/ztncui在portainer中创建stack命名为 zerotier-planet注意点如下curl -s https://ipv4.icanhazip.com/可以拿到自己的公网ipv4地址这里的 ZT_PORT 和对应的映射端口都要一致BASE_PATH就是nginx反向代理的子路径例如 /console/zerotier内容如下name: zerotier-planetservices:zerotier-planet:image: piwind/zerotier-planet:1.14.2container_name: zerotier-planetrestart: unless-stoppedports:- 9994:9994- 9994:9994/udp- 3443:3443- 3000:3000volumes:- /data/linux/docker_data/zerotier-planet/dist:/app/dist- /data/linux/docker_data/zerotier-planet/ztncui:/app/ztncui- /data/linux/docker_data/zerotier-planet/one:/var/lib/zerotier-one- /data/linux/docker_data/zerotier-planet/config:/app/configenvironment:- IP_ADDR4ipv4 addr- IP_ADDR6- ZT_PORT9994- API_PORT3443- FILE_SERVER_PORT3000- BASE_PATH/console/zerotierstack启动后还需要配置nginx添加location块内容如下location /console/zerotier/ {proxy_pass http://127.0.0.1:3443/;proxy_set_header HOST $host;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}location /console/zerotier-files/ {proxy_pass http://127.0.0.1:3000/;proxy_set_header HOST $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}ubuntu配置ufw和ufw-docker的情况下设置防火墙## 确保目标端口的tcp和udp都是通的要特别注意ufw-docker在没有给出tcp还是udp的情况下默认是tcp因此需要写两条ufw-docker allow zerotier-planet 9994ufw-docker allow zerotier-planet 9994/udpufw statusztncui面板初始配置首次用默认账号 admin密码 password 登录会提示修改密码顶部 Add network输入Network name即可创建可以得到Network IDEasy setup可以方便设置此网络的IP范围信息planet ipipv4 addrcontroller控制台https://www.example.com/console/zerotier/planet下载https://www.example.com/console/zerotier-files/planet?keykeymoon下载https://www.example.com/console/zerotier-files/16-bit addr.moon?keykeyNetwork ID16-bit network idIP池子10.11.12.0/24范围为 10.11.12.101~199授权设备操作到控制台中授权即可Authorized勾选、IP assignment分配ip6. 补充说明测试UDP端口连通性的办法## 服务器nc -u -l -v 5201## 客户端echo hello | nc -u -v 123.123.123.123 5201客户端切换网络的时候zerotier需要一定时间才会自动切换zerotier的path期间由于旧的path失效两者无法通信如果想要尽快重新建立P2P连接则要手动重新启动zerotier one服务安卓、iOS客户端和linux、win客户端通信的延迟较高不稳定可能是因为走的方式不一样手机端都是开启VPN的但是测试了是从桌面端ping移动端延迟高而移动端ping桌面端很流畅【不过这不是zerotier的问题拿电脑直接ping手机的内网网段ip其延迟也很高也有可能是wifi连接的缘故而电脑与电脑之间走的是网线】不同版本的zerotier之间通信可能会遇到延迟高等问题能否指定让某些network下的所有节点都走中转不建立P2P连接因为P2P连接质量不确定性很大经过测试目前不行。不过看到版本1.16.0里面更新了 Network-Specific Relays (preview / beta)这个功能后面应该会有自建PLANET项目中转不成功的问题就是 zerotier-cli peers 中看不到其他的节点可以ping上但是无法正常访问任何端口上的任何服务image-20250925004509434image-20250925004513782linux上都要主动发生通信才会在peers中显示