From 85088d5fcd8e5994cb8066872551d7fcebb7f5aa Mon Sep 17 00:00:00 2001 From: oliver Date: Wed, 1 Oct 2025 18:39:43 +0800 Subject: [PATCH 01/15] Translate the readme and add a simplified Chinese version --- README-zh_CN.md | 197 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 197 insertions(+) create mode 100644 README-zh_CN.md diff --git a/README-zh_CN.md b/README-zh_CN.md new file mode 100644 index 000000000..6e1db84d8 --- /dev/null +++ b/README-zh_CN.md @@ -0,0 +1,197 @@ +ZeroTier - 全球区域网络 +====== + +*本文档面向软件开发人员。如需了解如何使用ZeroTier,请参见:[官网](https://www.zerotier.com)、[文档网站](https://docs.zerotier.com)和[讨论论坛](https://discuss.zerotier.com)。* + +ZeroTier是地球的智能可编程以太网交换机。它允许所有联网设备、虚拟机、容器和应用程序进行通信,就像它们都位于同一个物理数据中心或云区域中一样。 + +这是通过将加密寻址的安全点对点网络(称为VL1)与类似于VXLAN的以太网仿真层(称为VL2)相结合来实现的。我们的VL2以太网虚拟化层包含企业级SDN的高级功能,如用于网络微分段和安全监控的细粒度访问控制规则。 + +所有ZeroTier流量都使用只有您控制的密钥进行端到端加密。大多数流量以点对点方式传输,尽管我们为无法建立点对点连接的用户提供了免费(但较慢)的中继服务。 + +ZeroTier的目标和设计原则受到包括原始[Google BeyondCorp](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43231.pdf)论文和具有"去边界化"概念的[Jericho论坛](https://en.wikipedia.org/wiki/Jericho_Forum)等的启发。 + +访问[ZeroTier官网](https://www.zerotier.com/)获取更多信息和[预构建二进制包](https://www.zerotier.com/download/)。Android和iOS的应用程序可在Google Play和Apple应用商店免费获取。 + +ZeroTier采用[BSL 1.1版本](https://mariadb.com/bsl11/)授权。详情请见[LICENSE.txt](LICENSE.txt)和[ZeroTier定价页面](https://www.zerotier.com/pricing)。ZeroTier可在企业内部和学术机构以及非商业用途中免费使用。某些类型的商业用途,如基于ZeroTier构建闭源应用程序和设备,或提供ZeroTier网络控制器和网络管理SaaS服务,需要商业许可证。 + +ZeroTier还包含少量第三方代码,这些代码不受我们的BSL许可证约束。有关第三方代码列表、包含位置及其适用许可证,请参见[AUTHORS.md](AUTHORS.md)。ZeroTier中的所有第三方代码均采用宽松许可证(MIT、BSD、Apache、公共领域等)。 + +### 入门指南 + +ZeroTier世界中的所有内容都由两种标识符控制:40位/10位数字的*ZeroTier地址*和64位/16位数字的*网络ID*。这些标识符可通过长度轻松区分。ZeroTier地址标识一个节点或"设备"(笔记本电脑、手机、服务器、虚拟机、应用程序等),而网络ID标识设备可以加入的虚拟以太网网络。 + +ZeroTier地址可以被视为支持VLAN的巨型全球企业以太网智能交换机上的端口号。网络ID是可分配给这些端口的VLAN ID。单个端口可分配给多个VLAN。 + +ZeroTier地址看起来像`8056c2e21c`,网络ID看起来像`8056c2e21c000001`。网络ID由该网络主控制器的ZeroTier地址和在该控制器上标识网络的任意24位ID组成。网络控制器与SDN协议(如[OpenFlow](https://en.wikipedia.org/wiki/OpenFlow))中的SDN控制器大致相似,但与VXLAN和VL2之间的类比一样,这不应被理解为协议或设计相同。您可以使用我们在[my.zerotier.com](https://my.zerotier.com/)上提供的便捷且经济的SaaS托管控制器,或者如果您不介意处理JSON配置文件或编写脚本来[运行您自己的控制器](controller/)。 + +### 项目布局 + +基础路径包含ZeroTier One服务的主入口点(`one.cpp`)、自测代码、makefile等。 + + - `artwork/`:图标、徽标等。 + - `attic/`:我们希望保留以供参考的旧内容和实验代码。 + - `controller/`:参考网络控制器实现,默认在桌面和服务器构建目标上构建和包含。 + - `debian/`:在Linux上构建Debian包的文件。 + - `doc/`:手册页和其他文档。 + - `ext/`:第三方库、我们在某些平台(Mac和Windows)上提供的二进制文件以及安装支持文件。 + - `include/`:ZeroTier核心的包含文件。 + - `java/`:与我们的Android移动应用程序一起使用的JNI包装器。(整个Android应用程序不是开源的,但将来可能会开源。) + - `node/`:ZeroTier虚拟以太网交换机核心,设计为与代码的其余部分完全分离,并能够构建为独立的与操作系统无关的库。开发者注意:此处不要使用C++11特性,因为我们希望这能在缺乏C++11支持的旧嵌入式平台上构建。其他地方可以使用C++11。 + - `osdep/`:支持和集成操作系统的代码,包括仅为某些目标构建的平台特定内容。 + - `rule-compiler/`:用于定义网络级规则的JavaScript规则语言编译器。 + - `service/`:ZeroTier One服务,它包装ZeroTier核心并为桌面、笔记本电脑、服务器、虚拟机和容器提供类似VPN的虚拟网络连接。 + - `windows/`:Visual Studio解决方案文件、Windows服务代码和Windows任务栏应用程序UI。 + - `zeroidc/`:ZeroTier服务用于登录启用SSO网络的OIDC实现。(这部分是用Rust编写的,将来此存储库中会出现更多Rust代码。) + +### 贡献 + +请从`dev`分支发起拉取请求。 + +通过将`dev`合并到`main`然后打标签和构建来发布版本。 + +### 构建和平台说明 + +在Mac和Linux上只需输入`make`。在FreeBSD和OpenBSD上需要`gmake`(GNU make),可从包或端口安装。Windows在`windows/`中有Visual Studio解决方案。 + + - **Mac** + - 需要macOS 10.13或更新版本的Xcode命令行工具。 + - *如果构建中启用了SSO*,则需要x86_64和ARM64目标的Rust。 + - **Linux** + - 所需的最低编译器版本为GCC/G++ 8.x或CLANG/CLANG++ 5.x。 + - Linux makefile会自动检测并优先使用clang/clang++(如果存在),因为它在大多数情况下会产生更小且稍快的二进制文件。您可以通过在make命令行提供CC和CXX变量来覆盖。 + - *如果构建中启用了SSO*,则需要x86_64和ARM64目标的Rust。 + - **Windows** + - Windows 10或更新版本上的Visual Studio 2022。 + - *如果构建中启用了SSO*,则需要x86_64和ARM64目标的Rust。 + - **FreeBSD** + - 需要GNU make。输入`gmake`进行构建。 + - 需要`binutils`。输入`pkg install binutils`进行安装。 + - *如果构建中启用了SSO*,则需要x86_64和ARM64目标的Rust。 + - **OpenBSD** + - OpenBSD上的网络成员身份限制为四个,因为只有四个tap设备(`/dev/tap0`到`/dev/tap3`)。 + - 需要GNU make。输入`gmake`进行构建。 + - *如果构建中启用了SSO*,则需要x86_64和ARM64目标的Rust。 + +输入`make selftest`将构建一个*zerotier-selftest*二进制文件,该文件对各种内部组件进行单元测试并报告构建环境的某些方面。在新的平台或架构上尝试这是个好主意。 + +### 运行 + +使用`-h`选项运行*zerotier-one*将显示帮助。 + +在Linux和BSD上,如果您从源代码构建,可以使用以下命令启动服务: + + sudo ./zerotier-one -d + +在大多数发行版、macOS和Windows上,安装程序将启动服务并将其设置为开机启动。 + +系统将自动创建一个主文件夹。 + +服务通过JSON API进行控制,默认情况下在`127.0.0.1:9993`上可用。它还监听`0.0.0.0:9993`,但只有在`local.conf`中正确配置了`allowManagementFrom`时才能使用。我们包含了一个*zerotier-cli*命令行工具,用于进行加入和离开网络等标准API调用。主文件夹中的*authtoken.secret*文件包含访问此API的密钥令牌。有关API文档,请参见[service/README.md](service/README.md)。 + +以下是各操作系统上主文件夹的默认位置: + + * **Linux**: `/var/lib/zerotier-one` + * **FreeBSD** / **OpenBSD**: `/var/db/zerotier-one` + * **Mac**: `/Library/Application Support/ZeroTier/One` + * **Windows**: `\ProgramData\ZeroTier\One`(这是默认位置。如果Windows安装时使用了非标准的驱动器分配或布局,基础"共享应用程序数据"文件夹可能不同。) + +### 基本故障排除 + +对大多数用户来说,它能正常工作。 + +如果您正在运行本地系统防火墙,我们建议添加允许zerotier的规则。如果您安装了Windows二进制文件,这应该会自动完成。其他平台可能需要根据您的配置手动编辑本地防火墙规则。 + +更多信息请参见[文档网站](https://docs.zerotier.com/zerotier/troubleshooting)。 + +Mac防火墙可在系统偏好设置的"安全性"中找到。Linux有各种防火墙配置系统和工具。 + +在CentOS上检查`/etc/sysconfig/iptables`中的IPTables规则。对于其他发行版,请查阅您发行版的文档。如果运行了商业第三方防火墙应用程序(如Mac的Little Snitch、Windows的McAfee Firewall Enterprise等),您还需要检查其UI或文档。某些企业环境可能有集中管理的防火墙软件,因此您可能还需要联系IT部门。 + +ZeroTier One对等方将自动定位彼此并通过本地有线LAN直接通信*如果UDP端口9993入站开放*。如果该端口被过滤,它们将无法看到彼此的LAN宣告数据包。如果您在相同物理网络上的设备之间遇到性能不佳的问题,请检查它们的防火墙设置。没有LAN自动定位,对等方必须尝试"环回"NAT遍历,这有时会失败,无论如何都需要每个数据包两次遍历您的外部路由器。 + +位于某些类型防火墙和"对称"NAT设备后面的用户可能根本无法直接连接到外部对等方。ZeroTier对端口预测的支持有限,将*尝试*遍历对称NAT,但这并不总是有效。如果P2P连接失败,您将通过我们的中继服务器反弹UDP数据包,导致性能较慢。某些NAT路由器具有可配置的NAT模式,将其设置为"全锥型"将消除此问题。如果您这样做,您可能会看到VoIP电话、Skype、BitTorrent、WebRTC、某些游戏等的神奇改进,因为所有这些都使用与我们类似的NAT遍历技术。 + +如果您与互联网之间的防火墙阻止了ZeroTier的UDP流量,您将回退到通过端口443(https伪装)到根服务器的最后手段TCP隧道。这几乎可以在任何地方工作,但与UDP或直接点对点连接相比*非常慢*。 + +在我们的[知识库](https://zerotier.atlassian.net/wiki/spaces/SD/overview)中可以找到更多帮助。 + +### Prometheus指标 + +Prometheus指标在`/metrics` API端点可用。此端点受存储在`metricstoken.secret`中的API密钥保护,以防止不必要的信息泄露。从指标中可以获取的信息包括加入的网络和您的实例正在通信的对等方。 + +访问控制通过ZeroTier控制接口本身和`metricstoken.secret`实现。这可以通过承载认证令牌、`X-ZT1-Auth` HTTP头字段发送,或作为`?auth=`附加到URL。您可以通过以下命令使用`cURL`查看当前指标: + + // Linux + curl -H "X-ZT1-Auth: $(sudo cat /var/lib/zerotier-one/metricstoken.secret)" http://localhost:9993/metrics + + // macOS + curl -H "X-ZT1-Auth: $(sudo cat /Library/Application\ Support/ZeroTier/One/metricstoken.secret)" http://localhost:9993/metrics + + // Windows PowerShell (管理员) + Invoke-RestMethod -Headers @{'X-ZT1-Auth' = "$(Get-Content C:\ProgramData\ZeroTier\One\metricstoken.secret)"; } -Uri http://localhost:9993/metrics + +要在运行ZeroTier的机器上配置Prometheus抓取作业,请将此内容添加到您的Prometheus `scrape_config`: + + - job_name: zerotier-one + honor_labels: true + scrape_interval: 15s + metrics_path: /metrics + static_configs: + - targets: + - 127.0.0.1:9993 + labels: + group: zerotier-one + node_id: $YOUR_10_CHARACTER_NODE_ID + authorization: + credentials: $YOUR_METRICS_TOKEN_SECRET + +如果这两种方法都不理想,可能可以通过[Prometheus Proxy](https://github.com/pambrose/prometheus-proxy)或其他工具分发指标。注意:我们内部尚未测试过,但可能会通过正确的配置工作。 + +指标也可在ZeroTier工作目录的磁盘上获得: + + // Linux + /var/lib/zerotier-one/metrics.prom + + // macOS + /Library/Application\ Support/ZeroTier/One/metrics.prom + + //Windows + C:\ProgramData\ZeroTier\One\metrics.prom + +#### 可用指标 + +| 指标名称 | 标签 | 指标类型 | 描述 | +| --- | --- | --- | --- | +| zt_packet | packet_type, direction | Counter | ZeroTier数据包类型计数 | +| zt_packet_error | error_type, direction | Counter | ZeroTier数据包错误| +| zt_data | protocol, direction | Counter | ZeroTier传输或接收的字节数 | +| zt_num_networks | | Gauge | 此实例加入的网络数 | +| zt_network_multicast_groups_subscribed | network_id | Gauge | 网络订阅的多播组数 | +| zt_network_packets | network_id, direction | Counter | 每个网络的传入/传出数据包数 | +| zt_peer_latency | node_id | Histogram | 对等方延迟(毫秒) | +| zt_peer_path_count | node_id, status | Gauge | 到对等方的路径数 | +| zt_peer_packets | node_id, direction | Counter | 与对等方之间的数据包数 | +| zt_peer_packet_errors | node_id | Counter | 来自对等方的传入数据包错误数 | + +如果您希望跟踪其他指标,请在Issue中告诉我们或向我们发送Pull Request! + +### HTTP / 应用服务器 + +在http://localhost:9993/app/有一个适合托管单页应用程序的静态http文件服务器 + +使用`zerotier-cli info -j`查找您的zerotier-one服务的homeDir + +``` sh +cd $ZT_HOME +sudo mkdir -p app/app1 +sudo mkdir -p app/appB +echo 'appA

hello world A' | sudo tee app/appA/index.html +echo 'app2

hello world 2' | sudo tee app/app2/index.html +curl -sL http://localhost:9993/app/appA http://localhost:9993/app/app2 +``` + +然后访问[http://localhost:9993/app/app1/](http://localhost:9993/app/app1/)和[http://localhost:9993/app/appB/](http://localhost:9993/app/appB/) + +对不存在路径的请求会返回应用程序根目录的index.html,这在SPAs中是常见的做法。 +如果您愿意,可以编写一些javascript与服务或控制器[api](https://docs.zerotier.com/service/v1)通信。 \ No newline at end of file From 7a0257023b6e93a902d4d991cbca6b61f4dac071 Mon Sep 17 00:00:00 2001 From: oliver Date: Wed, 1 Oct 2025 18:43:38 +0800 Subject: [PATCH 02/15] Translate README.docker and provide Chinese version --- README.docker-zh_CN.md | 73 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 README.docker-zh_CN.md diff --git a/README.docker-zh_CN.md b/README.docker-zh_CN.md new file mode 100644 index 000000000..ab431bf78 --- /dev/null +++ b/README.docker-zh_CN.md @@ -0,0 +1,73 @@ +# ZeroTier One 容器化部署! + +**注意:** _大部分信息仅适用于 Docker 镜像。如需了解更多关于 ZeroTier 的信息,请查看代码仓库_:[这里](https://github.com/zerotier/ZeroTierOne) 或 [官方网站](https://www.zerotier.com)。 + +[ZeroTier](https://www.zerotier.com) 是一个面向地球的智能可编程以太网交换机。它允许所有联网设备、虚拟机、容器和应用程序像它们都位于同一个物理数据中心或云区域一样进行通信。 + +这是通过将加密寻址和安全的点对点网络(称为 VL1)与类似于 VXLAN 的以太网仿真层(称为 VL2)相结合来实现的。我们的 VL2 以太网虚拟化层包含企业级 SDN 的高级功能,如用于网络微分段和安全监控的细粒度访问控制规则。 + +所有 ZeroTier 流量都使用您控制的密钥进行端到端加密。大部分流量以点对点方式传输,尽管我们为无法建立点对点连接的用户提供免费(但较慢)的中继服务。 + +ZeroTier 的目标和设计原则受到原创 [Google BeyondCorp](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/43231.pdf) 论文和 [Jericho Forum](https://en.wikipedia.org/wiki/Jericho_Forum) 及其"去边界化"概念的启发。 + +访问 [ZeroTier 网站](https://www.zerotier.com/) 获取更多信息和 [预构建二进制包](https://www.zerotier.com/download/)。Android 和 iOS 应用在 Google Play 和 Apple 应用商店免费提供。 + +ZeroTier 采用 [BSL 版本 1.1](https://mariadb.com/bsl11/) 许可证。详情请见 [LICENSE.txt](https://github.com/zerotier/ZeroTierOne/blob/master/LICENSE.txt) 和 [ZeroTier 定价页面](https://www.zerotier.com/pricing)。ZeroTier 可在企业内部和学术机构中免费使用,也适用于非商业用途。某些商业用途,如基于 ZeroTier 构建闭源应用程序和设备,或提供 ZeroTier 网络控制器和网络管理 SaaS 服务,需要商业许可证。 + +ZeroTier 还包含少量第三方代码,这些代码不受我们的 BSL 许可证约束。请查看 [AUTHORS.md](https://github.com/zerotier/ZeroTierOne/blob/master/AUTHORS.md) 了解第三方代码列表、包含位置及其适用的许可证。ZeroTier 中的所有第三方代码都采用宽松许可证(MIT、BSD、Apache、公共领域等)。 + +## 构建 Docker 镜像 + +由于网络是大多数应用程序的基础而不是应用程序本身,许多人希望基于我们的方案构建自己的镜像是合理的。 + +该镜像基于 `debian:buster`。 + +`Dockerfile.release` 文件包含构建 README 其余部分所述镜像的构建说明。该构建支持多架构和多版本。 + +这些构建参数驱动构建过程: + +- `PACKAGE_BASEURL`:要获取的软件包仓库的基本 URL。(默认:`https://download.zerotier.com/debian/buster/pool/main/z/zerotier-one/`) +- `ARCH`:软件包的架构,采用 debian 格式。必须与您的镜像架构匹配。(默认:`amd64`) +- `VERSION`:**必需** 要获取的 ZeroTier 版本。 + +您可以这样构建该镜像: + +``` +docker build -f Dockerfile.release -t mybuild --build-arg VERSION=1.6.5 . +``` + +## 使用 Docker 镜像 + +Docker 镜像中的 `entrypoint.sh` 有些不同;zerotier 将在后台启动,"主进程"实际上只是一个休眠的 shell 脚本。这允许 `zerotier-one` 在一些主要针对 Docker 的情况下优雅终止。 + +`zerotier/zerotier` 镜像需要 `CAP_NET_ADMIN` 能力,并且必须将 `/dev/net/tun` 设备转发给它。 + +要加入网络,只需在命令行中提供网络 ID;您可以提供多个网络。 + +``` +docker run --name myzerotier --rm --cap-add NET_ADMIN --device /dev/net/tun zerotier/zerotier:latest abcdefdeadbeef00 +``` + +加入您提供的所有网络后,它将休眠直到被终止。请注意,在 ZeroTier 中,加入网络并不一定意味着您获得了 IP 地址或可以做任何事情。您需要探测控制套接字: + +``` +docker exec myzerotier zerotier-cli listnetworks +``` + +以确保在尝试监听之前网络可用。如果没有预配置身份,这通常意味着需要前往中央管理面板并在您的 zerotier 身份旁点击复选框。 + +### 环境变量 + +您可以控制一些设置,包括使用的身份和用于与控制套接字交互的认证令牌(您可以通过 `localhost:9993` 转发和访问)。 + +- `ZEROTIER_JOIN_NETWORKS`:加入网络的附加方式。 +- `ZEROTIER_API_SECRET`:在启动前替换 `authtoken.secret`,允许您管理控制套接字的认证密钥。 +- `ZEROTIER_IDENTITY_PUBLIC`:zerotier-one 的 `identity.public` 文件。使用 `zerotier-idtool` 为您生成一个。 +- `ZEROTIER_IDENTITY_SECRET`:zerotier-one 的 `identity.secret` 文件。使用 `zerotier-idtool` 为您生成一个。 +- `ZEROTIER_LOCAL_CONF`:设置 zerotier-one 的 `local.conf` 文件内容 + +### 提示 + +- 对于高流量服务,将端口 `:9993` 转发到外部可能是个好主意。 +- 将 `localhost:9993` 转发到您可以远程控制的控制网络可能是个好主意,只需确保通过环境变量正确设置您的认证令牌。 +- 通过我们的 [terraform 插件](https://github.com/zerotier/terraform-provider-zerotier) 预生成身份可能简单得多。 \ No newline at end of file From 46488921d044dbe817e77e594336ebb5bdc2ebd4 Mon Sep 17 00:00:00 2001 From: oliver Date: Wed, 1 Oct 2025 19:13:01 +0800 Subject: [PATCH 03/15] Translate SECURITY- into Simplified Chinese --- SECURITY-zh-CN.md | 91 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 SECURITY-zh-CN.md diff --git a/SECURITY-zh-CN.md b/SECURITY-zh-CN.md new file mode 100644 index 000000000..3f28973b9 --- /dev/null +++ b/SECURITY-zh-CN.md @@ -0,0 +1,91 @@ +# 安全 + +ZeroTier 非常重视我们软件产品和服务的安全性,这包括通过我们的 GitHub 组织管理的所有源代码仓库。 + +## 支持的版本 + +以下版本的 ZeroTier One 会收到安全更新: + +| 版本 | 是否支持 | +| -------- | ------------------ | +| 1.16.x | :white_check_mark: | +| 1.14.x | :white_check_mark: | +| 1.12.x | :x: | +| < 1.12.0 | :x: | + +## 报告漏洞 + +**请不要通过公共 GitHub issues 报告安全问题** + +请通过电子邮件将漏洞报告发送至 security@zerotier.com。如果可能,请使用我们的 PGP 密钥(见下文)进行加密。 + +请包含以下信息,或尽可能提供帮助我们理解问题性质和范围的信息: + + * 问题类型(例如缓冲区溢出、SQL 注入、跨站脚本等) + * 与问题表现相关的源文件完整路径 + * 受影响源代码的位置(标签/分支/提交或直接 URL) + * 重现问题所需的任何特殊配置 + * 重现问题的逐步说明 + * 概念验证或漏洞利用代码(如果可能) + * 问题的影响,包括攻击者可能如何利用该问题 + +## 首选语言 + +我们希望所有通信都使用英语。 + +## security@zerotier.com PGP 密钥 + +``` +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +L455 +=lheL +-----END PGP PUBLIC KEY BLOCK----- +``` \ No newline at end of file From 81dfc677e509f3f325395c396108d0b2ecc80c8f Mon Sep 17 00:00:00 2001 From: oliver Date: Wed, 1 Oct 2025 19:14:06 +0800 Subject: [PATCH 04/15] Change the private key in SECURITY-zh-CN to a public key to improve the rigor --- SECURITY-zh-CN.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SECURITY-zh-CN.md b/SECURITY-zh-CN.md index 3f28973b9..191a24ddd 100644 --- a/SECURITY-zh-CN.md +++ b/SECURITY-zh-CN.md @@ -33,7 +33,7 @@ ZeroTier 非常重视我们软件产品和服务的安全性,这包括通过 我们希望所有通信都使用英语。 -## security@zerotier.com PGP 密钥 +## security@zerotier.com PGP 密钥(公钥) ``` -----BEGIN PGP PUBLIC KEY BLOCK----- From 22d061aa8ee32fdcba80cf6c081ee5fbfb8c873a Mon Sep 17 00:00:00 2001 From: oliver Date: Wed, 1 Oct 2025 19:18:18 +0800 Subject: [PATCH 05/15] Translate RELEASE-NOTES into simplified Chinese --- RELEASE-NOTES-zh-CN.md | 435 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 435 insertions(+) create mode 100644 RELEASE-NOTES-zh-CN.md diff --git a/RELEASE-NOTES-zh-CN.md b/RELEASE-NOTES-zh-CN.md new file mode 100644 index 000000000..d10aa55c5 --- /dev/null +++ b/RELEASE-NOTES-zh-CN.md @@ -0,0 +1,435 @@ +ZeroTier 发布说明 +====== + +## 2025-08-21 -- 版本 1.16.0 + + * 许可证变更 + * 核心 (`node/` 和 `include/`) 以及服务 (`service/` 和 `osdep/`) 现在采用 Mozilla 公共许可证 (MPL)。 + * 网络控制器 (`controller/`) 现在采用商业源代码可用许可证。 + * 使用 `make ZT_NONFREE=1` 构建非 MPL 组件。 + * 使用 `ZT_NONFREE=1` 构建会将生成的可执行文件的许可证更改为专有商业许可证而不是 MPL。 + * 默认二进制构建不再包含控制器。 + * 网络特定中继(预览 / 测试版) + * 现在可以将一个或多个节点指定为网络特定中继,以优先于根节点用于网络成员之间的中继流量。这些节点不一定需要是网络的成员。 + * "Moons" 现在被认为是更加额外的 *已弃用*,不应在新部署中使用。 + * 我们将在与一些用户合作测试并进行更多内部验证后宣布对网络特定中继的支持。 + * 通过在 `local.conf` 中启用 `encryptedHelloEnabled` 设置,现在可以使用 HELLO 数据包加密。 + * HELLO 数据包不包含数据,仅包含公钥和非常基本的元数据(如协议版本信息)。 + * 大多数用户不会关心这一点,但如果您出于合规性等原因需要此功能,可以启用。这会在 HELLO 登录过程中增加少量 CPU 和带宽开销。 + * 小修复 + * 代码已使用存储库中的 `.clang-format` 定义通过 `clang-format` 重新格式化。键入 `make clang-format` 可对所有主要核心和服务 C++ 文件执行此操作。 + * 桥接器不再计入多播限制。 + * 修复了多路径场景下桥接流量的流指定问题。 + * 更新了 OIDC 和其他功能的库版本。 + * 出于预防原因删除了过时且未使用的软件更新代码。 + * 通过删除某些平台上已弃用函数的使用来消除编译器警告。 + * 其他小错误修复。 + + * 合并的 PR: + * PR #2495: 托管控件器更改以支持 cv1 os/arch 报告 + * PR #2493: 添加关于 Linux 上缺少 DNS 功能的警告 + * PR #2491: 修复:标准化绑定链接选择方法 JSON 字段命名 + * PR #2489: 修复绑定 CLI 中的链接选择字段 + * PR #2487: Windows 安装程序修复 + * PR #2486: 在验证操作中添加 'apt update' + * PR #2482: 在中央控制器中添加 OpenTelemetry 支持 + * PR #2481: Rust 警告移除,clippy 允许,更新库版本 + * PR #2477: 不将桥接器计入多播限制。发送到所有桥接器 + * PR #2475: clang-format + * PR #2474: Hello 加密 + * PR #2452: CV2 数据库模式支持 + * PR #2451: 将 /rustybits 中的 crossbeam-channel 从 0.5.13 升级到 0.5.15 + * PR #2450: 将 /rustybits 中的 tokio 从 1.42.0 升级到 1.43.1 + * PR #2449: 将 /rustybits 中的 openssl 从 0.10.70 升级到 0.10.72 + * PR #2445: 允许从 Docker 环境变量设置 local.conf 内容 + * PR #2444: Temporal sdk 修复 + * PR #2443: 修复未设置 AuthInfo 提供程序的问题 + * PR #2442: 将 /rustybits 中的 ring 从 0.17.8 升级到 0.17.13 + * PR #2441: 在拉取请求上运行 CI + * PR #2438: 为第三方设备供应商添加自定义控制平面 + * PR #2432: 更新 upload-artifact 操作以使用 v4 + * PR #2430: 将 /rustybits 中的 openssl 从 0.10.68 升级到 0.10.70 + * PR #2427: 修复主动备份链接选择 + * PR #2417: 更新 rust 依赖项 + * PR #2409: 将 /rustybits 中的 rustls 从 0.23.15 升级到 0.23.18 + * PR #2405: OpenBSD 的构建修复 - 请参见工单 #2397 + +---- + +# 1.14 + +## 2024-10-23 -- 版本 1.14.2 + + * 修复 macOS Sequoia 上缺少的授权问题。 + * 修复正确解析 local.conf 以启用低带宽模式的问题。 + * 增加一些依赖库的版本。 + * 其他修复。 + +## 2024-09-12 -- 版本 1.14.1 + + * 多线程数据包 I/O 支持!目前仅适用于 Linux,必须在 local.conf 中启用。在 CPU 是瓶颈且需要高吞吐量的小型多核设备上,这可能会产生最大的差异。未来可能会默认启用,但我们希望进行彻底测试。由于需要保持数据包顺序和平衡负载,这比乍看起来要困难一些。 + * 多路径的几个错误修复。 + * 更新了与 OIDC 支持和 HTTP 相关的一些库的版本。 + * MacOS .app 现在在其 Info.plist 清单中显示正确的版本。 + * 清理 JSON 格式规则解析器中的 MAC 地址。 + * 加入网络时,现在会向网络控制器报告一些关于平台的基本信息(操作系统、CPU 架构),以便网络管理员显示,并在未来用于策略检查和库存操作。 + +## 2024-05-02 -- 版本 1.14.0 + + * Linux 在高负载下的 I/O 性能改进 + * 多路径改进 + * 修复端口重新绑定“昏迷”错误(某些笔记本用户离线一段时间后) + * 修复规则引擎的怪癖/歧义(GitHub 问题 #2200) + * 控制器 API 增强:节点名称和其他节点元数据 + * 其他错误修复 + +---- + +# 1.12 及更早版本 + +## 2023-09-12 -- 版本 1.12.2 + + * 更多 macOS 全隧道模式的改进。 + * 物理网络设置更改后更快的恢复。 + +## 2023-08-25 -- 版本 1.12.1 + + * 次要版本,修复 Linux 中的端口绑定问题。 + * 更新 Debian 依赖项。 + * 其他平台无更改。 + +## 2023-08-23 -- 版本 1.12.0 + + * Windows ARM64 实验性支持 + * 修复 macOS 和其他平台上的众多睡眠/唤醒问题 + * 物理网络设置更改后更快的恢复 + * Prometheus 兼容的指标支持! + * 修复最新 macOS 版本上的全隧道模式 + * 众多 macOS DNS 修复 + * Linux 上 10-30% 的速度提升 + +## 2023-03-23 -- 版本 1.10.6 + + * 防止在 macOS 上绑定临时 ipv6 地址 (#1910) + * 防止路径学习循环 (#1914) + * 防止托盘应用中 UAC 提示的无限循环 + +## 2023-03-10 -- 版本 1.10.5 + + * 修复 Windows 上的高 CPU 使用率错误 + +## 2023-03-07 -- 版本 1.10.4 + + * 安全修复 (Windows):此版本修复了 Windows 上的一个文件权限问题,该问题可能允许 Windows 系统上的非特权用户读取 ZeroTier 服务工作目录中的特权文件。这可能允许没有适当本地权限的非特权本地 Windows 用户管理本地 ZeroTier 实例。此问题不会远程利用,除非远程用户可以读取任意本地文件,并且不会影响其他操作系统。 + * 修复在 macOS 上处理多个 IP 地址分配给虚拟接口时的错误。 + +## 2023-02-15 -- 版本 1.10.3 + + * 修复客户端中的重复路径问题。可能导致连接问题。影响所有平台。 + * 修复以太网 Tap MTU 设置,Linux 上不会正确应用。 + * 修复默认路由错误(macOS。) + * 为 ZeroTier 适配器自动启用 Ping(Windows。) + * SSO 更新和小错误修复。 + * 添加低带宽模式。 + * 添加 forceTcpRelay 模式(可选择启用。) + * 修复阻止设置自定义 TCP 中继地址的错误。 + * 构建脚本改进和错误修复。 + +## 2022-11-01 -- 版本 1.10.2 + + * 修复 zeroidc 中的另一个 SSO "卡住客户端" 问题。 + * 通过本地 JSON API 暴露根报告的外部 IP/端口信息,以获得更好的诊断。 + * 多路径:CLI 输出改进,用于检查绑定 + * 多路径:平衡感知模式 + * 多路径:自定义策略 + * 多路径:链路质量测量改进 + +请注意,由于我们的大部分开发工作都投入到版本 2 中,因此发布的频率会越来越少。 + +## 2022-06-27 -- 版本 1.10.1 + + * 修复可能导致 SSO 客户端卡在过时认证 URL 上的问题。 + * 其他一些 SSO 相关的错误修复。 + +## 2022-06-07 -- 版本 1.10.0 + + * 修复在 SSO 网络中使用 `zerotier-cli` 时的格式问题。 + * 修复一些其他 SSO 登录中的小错误,为正式发布做准备。 + * 删除桌面 UI 中对 webview 的要求,而是通过托盘下拉/菜单提供所有功能。使用 [libui-ng](https://github.com/libui-ng/libui-ng) 进行次要提示对话框。节省空间并消除 Windows 上的安装问题。 + * 修复桌面 UI 中的 SSO "垃圾邮件" 错误。 + * 使用系统默认浏览器进行 SSO 登录,以便所有插件、MFA 设备、密码管理器等都能按您配置的方式工作。 + * 绑定/多路径的小修复。 + +## 2022-05-10 -- 版本 1.8.10 + + * 修复了阻止 Windows 上 SSO 登录的错误。 + +## 2022-04-25 -- 版本 1.8.9 + + * 修复了一个长期存在的奇怪错误,该错误导致间歇性的"幻影"数据包身份验证失败。这不是安全问题,但可能是某些条件下链接失败报告的原因。 + * 修复了 SSO/OIDC 支持中的内存泄漏。 + * 修复了 SSO/OIDC 在 CLI 上的显示错误。 + * 修复了导致节点有时无法相互推送证书的错误(主要影响 SSO/OIDC 使用场景)。 + * 修复了离开 SSO/OIDC 管理网络时的死锁错误。 + * 在构建子系统中添加了一些新的 Linux 发行版。 + +## 2022-04-11 -- 版本 1.8.8 + + * 修复 Windows 安装程序中的本地权限提升错误。 + * 修复某些 Ubuntu 版本的依赖项问题。 + * 其他平台无更改。建议 Windows 用户升级,其他用户可选。 + +## 2022-03-30 -- 版本 1.8.7 + + * 修复 Windows MSI 包中的依赖安装问题。 + * 修复非超级用户运行时的桌面 UI 设置问题。 + * 修复本地 OIDC / SSO 支持中 auth0 和其他提供商的错误。 + * 其他针对旧 Linux 发行版的小修复。 + +## 2022-03-04 -- 版本 1.8.6 + + * 修复了未加入任何网络时可能导致 UI 无响应的问题。 + * 修复 Debian 和 RedHat 包中某些发行版(Fedora、Mint)的依赖问题。 + * 提升了对等体缓存序列化版本,以防止由于路径逻辑更改与旧值行为不良而导致升级时出现"昏迷"问题。 + +## 2022-02-22 -- 版本 1.8.5 + + * 为端点设备 SSO 支持进行底层管道工作。 + * 修复 LinuxEthernetTap 以支持非常旧(2.6)Linux 内核上的 tap 设备支持。 + * 修复了一个可能导致自托管根("moons")无法协助对等体建立直接链接的错误。(GitHub 问题 #1512) + * 合并了 Joseph Henry(ZeroTier)的一系列更改,这些更改应修复 ZeroTier 会"遗忘"有效路径的一些边缘情况。 + * 为自动路径协商进行的小幅多路径改进。 + +## 2021-11-30 -- 版本 1.8.4 + + * 修复了某些较旧 macOS 版本上的丑陋字体问题。 + * 修复了 Windows 上可能导致桌面托盘应用控制面板在一段时间后停止打开的错误。 + * 修复了 macOS 上可能导致较旧 macOS 版本崩溃的可能的双重"释放"问题。 + * 修复了 32 位 Windows 10 上的安装问题。 + * 修复了可能导致 ZeroTier 在较旧 ARM32 CPU 上崩溃的构建标志问题。 + +## 2021-11-15 -- 版本 1.8.3 + + * 移除有问题的自旋锁,该自旋锁仅在 x86_64 上使用。始终使用 pthread。 + * 修复 MacOS 上导致一段时间后无响应的 fd 泄漏问题。 + * 修复 Debian 安装脚本,将 /usr/sbin/nologin 设置为服务用户的 shell。 + * 修复可能导致托管路由无法删除的回归问题。 + * DesktopUI:移除 NSDate:now() 调用,现在可在 MacOS 10.13 或更新版本上工作! + +## 2021-11-08 -- 版本 1.8.2 + + * 修复 Linux 上的多播。 + * 修复可能导致 Linux 上的 tap 适配器具有错误 MAC 地址的错误。 + * 更新构建标志以可能支持早于 10.14 的 MacOS,但还需要更多工作。可能尚无法工作。 + * 修复 Windows 上的路径变量设置。 + +## 2021-10-28 -- 版本 1.8.1 + + * 修复 1.8.0 中的众多 UI 问题(从未完全发布)。 + * 移除对真正古老的 1.1.6 或更早网络控制器的支持。 + * MacOS IPv6 不再绑定到临时地址,因为这些地址过期时可能会导致中断。 + * 添加了针对网络上的地址冒充的额外加固(也在 1.6.6 中)。 + * 修复可能导致在重新启动时破坏 MacOS IP 路由设置的问题。 + + * 注意:不再支持 Windows 7!Windows 7 用户必须使用 1.6.5 或更早版本。 + +## 2021-09-15 -- 版本 1.8.0(仅预览版) + + * 为 Mac 和 Windows *完全* 重写的桌面 UI! + * 实现了一个解决"昏迷"错误潜在来源的变通方法,该错误可能在有问题的 NAT/路由器停止允许服务在给定端口上通信时发生。除非在 local.conf 中手动指定辅助端口,否则 ZeroTier 现在会在离线一段时间后重新分配新的辅助端口。解决有问题的路由器问题是持续的努力。 + * 修复 MacOS 上 feth 设备的 MTU 限制问题 + * 修复某些平台上为 v4 路由错误使用 v6 源地址的问题 + * 停止绑定到临时 IPv6 地址 + * 在启动 Linux TAP 链接之前设置 MAC 地址 + * 检查是否需要在 macOS 上应用 DNS 服务器 + * 将 json.hpp 依赖项升级到版本 3.10.2 + +## 2021-09-21 -- 版本 1.6.6 + + * 回传 COM 哈希检查缓解措施以防止网络成员冒充。 + +## 2021-04-13 -- 版本 1.6.5 + + * 修复潜在网络路径过滤中的一个错误,该错误在某些情况下可能导致"软件激光"效应。 + * 修复 zerotier-cli 中的 printf 溢出(不可利用或安全风险) + * Windows 现在查找 ZeroTier 设备的名称,而不是依赖于它们在其中包含"ZeroTier"。 + +## 2021-02-15 -- 版本 1.6.4 + + * 土拨鼠看到了他的影子,这意味着"连接昏迷"错误仍然存在。我们这次认为找到了它。 + +## 2021-02-02 -- 版本 1.6.3 + + * 可能修复 GitHub 问题 #1334,该问题可能导致 ZeroTier 在某些网络上进入"昏迷"状态。 + * 也是土拨鼠节 + +## 2020-11-30 -- 版本 1.6.2 + + * 修复 ARM 硬件 AES 加密问题(不是可利用的漏洞)。 + * 修复由于互斥锁死锁导致的 Linux 网络离开挂起。 + +## 2020-11-24 -- 版本 1.6.1 + +此版本修复了 1.6.0 中的一些小错误和其他问题。 + + * 修复了一个导致 203.0.0.0/8 块中的 IP 地址被错误分类为不在全局范围内的错误。 + * 更改 Linux 构建以(希望)修复 LXC 和 SELinux 问题。 + * 修复导致在 ARM 架构的 FreeBSD 系统上崩溃的未对齐内存访问。 + * 将用于控制绑定设备的 CLI 选项合并到 beta 多路径代码中。 + * 使用 Microsoft 交叉签名更新 Windows 驱动程序以修复某些 Windows 系统上的问题。 + +## 2020-11-19 -- 版本 1.6.0 + +版本 1.6.0 是一个主要版本,它包含了从仍在开发中的 2.0 分支回传的功能。它还修复了许多问题。 + +新功能和改进(包括在 1.5.0 下列出的功能): + + * **Apple Silicon** (MacOS ARM64) 原生支持通过通用二进制。ZeroTier 现在需要最新的 Xcode 来构建。 + * **Linux 性能改进** 在多核系统上最高可提高 25% 的 tun/tap I/O 性能。 + * **多路径支持** 模式基于 Linux 内核的绑定驱动程序建模。这包括主被动和主主动模式,具有快速故障转移和负载均衡。请参阅手册第 2.1.5 节。 + * **DNS 配置** 从网络控制器推送到终端节点,具有本地可配置的权限以允许或不允许推送。 + * **AES-GMAC-SIV** 加密模式,它在支持 AES 加速的硬件上比旧的 Salsa20/12-Poly1305 模式更安全且显著更快。这包括几乎所有的 X86-64 芯片和大多数 ARM64。此模式基于 AES-SIV,并已由 Trail of Bits 审计以确保其安全性相当。 + +错误修复: + + * **托管路由分配修复** 以消除 Linux 上的缺失路由,并且我们相信这是解决 MacOS 上间歇性高 CPU 使用率的根源。 + * **关机时挂起** 的问题应该已修复。 + * **间歇性多播中断** 应该已修复。 + +已知的剩余问题: + + * AES 硬件加速尚未在 32 位 ARM、PowerPC(32 或 64 位)或 MIPS(32 或 64 位)系统上支持。目前支持的是具有加密扩展的 X86-64 和 ARM64/AARCH64。 + +# 2020-10-05 -- 版本 1.5.0(实际上是 1.6.0-beta1) + +版本 1.6.0(1.5.0 是测试版!)是一个重要版本,它包含了从 ZeroTier 2.0 树回传的许多修复和功能。 + +主要新功能包括: + + * **多路径支持** 模式基于 Linux 内核的绑定驱动程序建模。这包括主被动和主主动模式,具有快速故障转移和负载均衡。请参阅手册第 2.1.5 节。 + * **DNS 配置** 从网络控制器推送到终端节点,具有本地可配置的权限以允许或不允许推送。 + * **AES-GMAC-SIV** 加密模式,它在支持 AES 加速的硬件上比旧的 Salsa20/12-Poly1305 模式更安全且显著更快。这包括几乎所有的 X86-64 芯片和大多数 ARM64。此模式基于 AES-SIV,并已由 Trail of Bits 审计以确保其安全性相当。 + +此测试版中尚未修复的已知问题: + + * 一些 Mac 用户报告了在离开已加入一段时间的网络后,kernel_task 出现 100% CPU 使用率和连接不稳定的情况,或者需要杀死 ZeroTier 并重新启动以完成离开网络。这似乎并不影响所有用户,我们尚未诊断出根本原因。 + * 服务有时在关机时挂起,需要 kill -9。这也并不影响所有系统或用户。 + * AES 硬件加速尚未在 32 位 ARM、PowerPC(32 或 64 位)或 MIPS(32 或 64 位)系统上支持。目前支持的是具有加密扩展的 X86-64 和 ARM64/AARCH64。 + * 一些用户报告了持续长达 30 秒的多播/广播中断。仍在调查中。 + +我们正在尝试在 1.6.0 发布前修复所有这些问题。请继续关注。 + +## 2019-08-30 -- 版本 1.4.6 + + * 更新默认根列表至最新 + * ARM32 平台构建和标志修复 + * 在 LICENSE.txt 中添加澄清行 + * 修复 CLI 中的许可证消息 + * Windows 服务现在查找服务命令行参数 + * 修复可能导致过多排队多播的错误 + +## 2019-08-23 -- 版本 1.4.4 + + * 将许可证从 GPL3 更改为 BSL 1.1,请参阅 LICENSE.txt + * 修复与 "ipauth" 规则和自动生成的不可伪造 IPv6 地址相关的问题 + * 修复在 Linux 上设置 IP 和路由时的套接字/绑定错误 + +## 2019-08-12 -- 版本 1.4.2 + + * 修复某些平台上的高 CPU 使用率错误 + * 修复 PostgreSQL 控制器数据库问题(仅影响 Central) + * 恢复与 10.13 之前 MacOS 版本的向后兼容性 + +## 2019-07-29 -- 版本 1.4.0 + +### 重大变更 + + * Mac 版本不再需要内核扩展,而是使用 [feth 接口](https://apple.stackexchange.com/questions/337715/fake-ethernet-interfaces-feth-if-fake-anyone-ever-seen-this)。 + * 增加了对并发多路径(同时使用多条路径)的支持,通过链路质量和快速恢复丢失链路进行流量加权。 + * 增加了底层对 QoS(尚未公开)的支持,最终将通过我们的规则引擎进行配置。 + +### 次要变更和错误修复 + + * 实验性的控制器数据库驱动程序,用于 [LF](https://github.com/zerotier/lf) 以存储网络控制器数据(LFDB.cpp / LFDB.hpp)。 + * 修改了凭证推送和直接路径推送的时间和算法,以在空闲时稍微减少协议的"冗余"。更彻底的背景开销减少将不得不等到 2.x 系列。 + * 移除了我们与 Central 的测试版/半成品集成。我们将在未来为 Windows 和 Mac 做一个全新的 UI。 + * 修复了在使用 musl libc 的 Linux 版本上的堆栈溢出问题。 + * 修复了 ARM 和 ARM64 上报告的一些对齐问题,但我们无法重现一些报告,因此请报告任何问题,包括确切的芯片、操作系统/发行版和使用的 ZeroTier 版本。 + * 修复了许多其他小问题和错误,如导致某些设备崩溃的 ARM 对齐问题。 + * Windows 现在设置适配器名称,使其在 Windows UI 和命令行工具中保持一致。 + +## 2018-07-27 -- 版本 1.2.12 + + * 修复了 Mac 上由于大量冗余尝试删除托管路由而导致退出时间过长的错误。 + * 修复了 Windows 上导致 ZeroTier 服务耗尽套接字的问题,使得 UI 和 CLI 无法访问 API。 + * 修复了 ZeroTier Core 中的线程错误,尽管它从未在常规的 ZeroTier One 服务/客户端上表现出来。 + * 修复了如果授权的本地客户端通过控制 API 访问无效 URL,可能导致服务崩溃的错误。(不可利用,因为您需要管理员访问权限。) + +## 2018-05-08 -- 版本 1.2.10 + + * 修复加载 `moons.d/` 文件进行联合根操作的错误。 + * 修复某些版本的 `clang` 上的 ZT_DEBUG 编译问题 + * 修复与加载 `networks.d/` 缓存文件相关的网络启动缓慢错误 + +## 2018-04-27 -- 版本 1.2.8 + + * Linux 版本再次使用 PIE(位置无关可执行文件)标志构建 + * 修复 zerotier-idtool 文件签名和验证中的错误 + * 修复次要 OSX 应用程序拼写错误 + * 合并 NetBSD 支持的 alpha 版本(大部分未经测试,因此结果可能有所不同) + * 合并了几个次要的拼写错误和单行错误修复 + +## 2018-04-17 -- 版本 1.2.6 + + * 功能和核心改进 + * 路径选择已进行大修,以提高路径稳定性,简化代码,并为下一个主要版本中的多路径和聚合做好准备。 + * 此版本引入了远程跟踪以进行远程诊断。网络控制器可以设置一个节点(通常是控制器本身)来接收来自网络所有成员或选定成员的远程跟踪事件。出于安全原因,仅当事件涉及给定网络时才发送事件。 + * 多播复制现在可以由网络上的指定多播复制器(在控制器上标记)而不是发送方来完成。大多数用户不会想要这个,但对于集线器和分支网络以及低功耗设备的特殊用例很有用。 + * 多个平台上的加密性能改进。 + * 整个代码库中的多线程性能改进,包括对低争用资源使用内联轻量级自旋锁。 + * 修复的错误 + * 修复 Mac 上的消失路由(GitHub 问题 #600) + * 修复某些双栈 V4/V6 网络中的路由抖动和路径不稳定性 + * 修复黑名单(在 local.conf 中)不可靠的问题(GitHub 问题 #656) + * 修复由于时间比较中的无符号整数溢出导致的连接不稳定性(使用 int64_t 而不是 uint64_t) + * 修复某些较旧或低端 32 位 ARM 芯片上二进制文件不运行的构建问题(构建问题) + * 修复 ARM NEON 加密代码崩溃(构建问题) + * 修复了由 "valgrind" 工具揭示的一些锁排序问题 + * 通过命令行开关无法从 "zerotier-one" 访问 "zerotier-idtool" 命令 + * 修复某些平台上启用 uPnP/NAT-PMP 时的套接字泄漏 + * 修复了仅在某些系统上观察到的两个非常罕见的多线程问题 + * 平台特定更改 + * MacOS + * 安装程序现在立即加载内核扩展,以便 High Sierra 用户会看到授权提示。这在"安全与隐私"首选项窗格中完成,必须直接在控制台上完成(不能通过远程桌面)。在 High Sierra 及更新版本上,必须在控制台上通过安全设置系统首选项窗格授权 kext。 + * Windows + * Windows 安装程序现在应该在大多数情况下无需特殊提示即可安装驱动程序。这应该使我们的包更容易被 Chocolatey 存储库接受和更新,并且应该使使用 IT 管理和配置工具在机器组上执行远程安装变得更容易。 + * Windows 官方包现在使用 EV 证书(带硬件密钥)签名。 + * Windows UI 现在可以登录到 ZeroTier Central 并通过 Central API 加入网络。 + * `zerotier-idtool` 命令现在应该在 Windows 上无需丑陋的破解即可工作。 + * 升级了安装程序版本。 + * 做了一些更改,希望能修复间歇性的"无法卸载"问题,尽管我们自己无法复制这些问题。 + * Linux + * 设备名称现在基于网络 ID 确定性生成,用于所有新加入的网络。 + * Android + * 多播现在在大多数情况下在 Android 上工作!Android 应用可以发送和接收多播并订阅多播组 IP。请注意,在某些情况下,应用必须绑定到特定的正确接口才能工作。 + * 可以在 UI 中禁用 IPv6,以应对导致问题的情况。 + +## 2017-04-20 -- 版本 1.2.4 + + * 托管路由现在仅对默认路由进行分流。这是一个行为变更,但很少有人会注意到。分流所有托管路由对大多数用户来说造成的麻烦比好处更多。 + * 由于集成了来自 [supercop](http://bench.cr.yp.to/supercop.html) 代码库的快速汇编语言实现的 Salsa20/12,x86-64(除了 Windows)和 32 位 ARM 平台上的加密速度提高了 2 倍。这些是由 Daniel J. Bernstein 编写的,属于公共领域。我的 MacBook Pro(Core i5 2.8ghz)现在每个核心每秒执行近 1.5GiB 的 Salsa20/12,而 Raspberry Pi 获得了 2 倍的提升。64 位 ARM 支持和 Windows 支持需要一些工作,但应该不会太难。 + * 重构管理凭证的代码,以在大多数情况下大大减少内存使用。这也可能导致小的性能提升。 + * 重新设计和简化路径选择和优先级逻辑,以修复路径不稳定性和死路径持久性边缘情况。有一些关于持续路径不稳定性和死路径需要几分钟才能解决的零星报告。这些在内部很难重现,但希望这能修复它们。无论如何,这似乎在我们的测试中加快了路径建立,并且使代码更简单易读。 + * 从路径管理和对等类中消除了一些未使用的垃圾代码。 + * 修复了某些 MIPS 架构系统上的构建问题。 + * 修复了 Windows 在睡眠/唤醒或某些其他情况下忘记路由的问题。(GitHub 问题 #465) + +## 2017-03-17 -- 版本 1.2.2 + + * 导致不可靠多播传播的错误(GitHub 问题 #461)。 + * 由于构建链和标志问题导致的 ARM 二进制文件崩溃。 + * 网络控制器中阻止列出成员的错误(GitHub 问题 #460)。 + +## 2017-03-14 -- 版本 1.2.0 + +版本 1.2.0 是一个重要的里程碑版本,代表了近九个月的工作。它包括我们的规则引擎,用于分布式网络数据包过滤和安全监控,联合根,以及许多其他架构和 UI 改进及错误修复。 \ No newline at end of file From 5d284885f43ea8b8298d631013af7bc8f00b7db2 Mon Sep 17 00:00:00 2001 From: oliver Date: Wed, 1 Oct 2025 19:21:20 +0800 Subject: [PATCH 06/15] Translate OFFICIAL-RELEASE-STEPS into Simplified Chinese --- OFFICIAL-RELEASE-STEPS-zh-CN.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 OFFICIAL-RELEASE-STEPS-zh-CN.md diff --git a/OFFICIAL-RELEASE-STEPS-zh-CN.md b/OFFICIAL-RELEASE-STEPS-zh-CN.md new file mode 100644 index 000000000..22cf3c078 --- /dev/null +++ b/OFFICIAL-RELEASE-STEPS-zh-CN.md @@ -0,0 +1,33 @@ +ZeroTier 官方发布步骤 +====== + +这主要是供 ZeroTier 内部使用,但其他想要构建的人可能会发现它很有帮助。 + +注意:许多这些步骤将需要保存在冷存储中并必须挂载的 GPG 和其他签名密钥。 + +# 提升版本和准备安装程序 + +必须在以下所有文件中递增版本: + + /version.h + /zerotier-one.spec + /debian/changelog + /ext/installfiles/mac/ZeroTier One.pkgproj + /ext/installfiles/windows/ZeroTier One.aip + ../DesktopUI/mac-app-template/ZeroTier.app/Contents/Info.plist + +最终的 .AIP 文件只能在 Windows 上使用 [Advanced Installer Enterprise](http://www.advancedinstaller.com/) 编辑。除了递增版本外,请确保生成了新的产品代码。(另一方面,"升级代码" GUID 绝对不能更改。) + +# 为支持的平台构建 + +## Macintosh + +Mac 很简单。只需输入: + + make official + +您将需要 [Packages](http://s.sudre.free.fr/Software/Packages/about.html) 和我们发布签名密钥在钥匙串中。 + +## Windows + +首先加载 Visual Studio 解决方案,并在 x64、i386 和 arm64 `Release` 模式下重新构建 UI 和 ZeroTier One。然后加载 [Advanced Installer Enterprise](http://www.advancedinstaller.com/),检查版本是否正确,然后构建。如果缺少任何构建工件,构建将失败,并且 Windows 必须有我们的产品签名密钥(来自 DigiCert)来签署生成的 MSI 文件。然后必须在至少几个不同的干净 Windows 虚拟机上测试 MSI,以确保安装程序有效且正确签名。 \ No newline at end of file From 22f324635a74dae7a2b52416c298e67f66432b55 Mon Sep 17 00:00:00 2001 From: oliver Date: Wed, 1 Oct 2025 19:26:46 +0800 Subject: [PATCH 07/15] Translate service/readme into Simplified Chinese --- service/README-zh-CN.md | 192 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 service/README-zh-CN.md diff --git a/service/README-zh-CN.md b/service/README-zh-CN.md new file mode 100644 index 000000000..4a713af94 --- /dev/null +++ b/service/README-zh-CN.md @@ -0,0 +1,192 @@ +ZeroTier One 网络虚拟化服务 +====== + +这是 ZeroTier One 的实际实现,该服务为桌面电脑、笔记本电脑、服务器、虚拟机等提供 ZeroTier 虚拟网络连接(iOS 和 Android 的移动版本使用原生 Java 和 Objective C 实现,仅利用 ZeroTier 核心引擎。) + +### 本地配置文件 + +ZeroTier [主目录](https://github.com/zerotier/ZeroTierOne/blob/6faca86bb424d0b9643b6efa50571f73310d8276/README.md)中名为 `local.conf` 的文件包含适用于本地节点的配置选项。(除非您创建它,否则它不存在)。它可以用于设置可信路径、将物理路径列入黑名单、为某些节点设置物理路径提示以及定义可信的上游设备(联合根)。在大型部署中,可以使用 Puppet、Chef、SaltStack 等工具来在系统间设置统一配置。 + +这是一个 JSON 格式的文件,ZeroTier One 本身也可以编辑和重写,因此请确保使用正确的 JSON 格式。要验证您的配置,请将其粘贴到 [jsonlint.com](https://jsonlint.com) 等网站,或使用 `jq` 等工具。 + +检查 `zerotier-cli info -j` 的输出以查看您的配置是否正在加载。 + +`local.conf` 中可用的设置(这不是有效的 JSON,JSON 不允许注释): + +```javascript +{ + "physical": { /* 应用于物理 L2/L3 网络路径的设置。 */ + "NETWORK/bits": { /* 网络,例如 10.0.0.0/24 或 fd00::/32 */ + "blacklist": true|false, /* 如果为 true,则将此路径列入黑名单,禁止所有 ZeroTier 流量 */ + "trustedPathId": 0|!0, /* 如果存在且非零,则将此定义为可信路径(见下文) */ + "mtu": 0|!0 /* 如果存在且非零,则设置此路径的 UDP 最大载荷 MTU */ + } /* ,... 其他网络 */ + }, + "virtual": { /* 应用于 ZeroTier 虚拟网络设备 (VL1) 的设置 */ + "##########": { /* 10 位 ZeroTier 地址 */ + "try": [ "IP/port"/*,...*/ ], /* 如果没有上游/根在线,则提示如何到达此对等方 */ + "blacklist": [ "NETWORK/bits"/*,...*/ ] /* 仅为该对等方将物理路径列入黑名单。 */ + } + }, + "settings": { /* 其他全局设置 */ + "primaryPort": 1-65535, /* 如果设置,则覆盖默认端口 9993 和任何命令行端口 */ + "secondaryPort": 1-65535, /* 如果设置,则覆盖默认随机辅助端口 */ + "tertiaryPort": 1-65535, /* 如果设置,则覆盖默认随机第三端口 */ + "portMappingEnabled": true|false, /* 如果为 true(默认),则尝试使用 uPnP 或 NAT-PMP 映射端口 */ + "allowSecondaryPort": true|false /* false 也将禁用辅助端口 */ + "softwareUpdate": "apply"|"download"|"disable", /* 自动应用更新、仅下载或禁用内置软件更新 */ + "softwareUpdateChannel": "release"|"beta", /* 软件更新通道 */ + "softwareUpdateDist": true|false, /* 如果为 true,则分发软件更新(仅对 ZeroTier, Inc. 本身有用,默认为 false) */ + "interfacePrefixBlacklist": [ "XXX",... ], /* 要为 ZT 流量列入黑名单的接口名称前缀数组(例如 eth 表示 eth#) */ + "allowManagementFrom": [ "NETWORK/bits", ...] |null, /* 如果非 NULL,则允许从此 IP 网络进行 JSON/HTTP 管理。默认仅为 127.0.0.1。 */ + "bind": [ "ip",... ], /* 如果存在且非 null,则绑定到这些 IP 而不是每个接口(允许通配符 IP) */ + "allowTcpFallbackRelay": true|false, /* 允许或禁止建立 TCP 中继连接(默认为 true) */ + "multipathMode": 0|1|2 /* 多路径模式:无 (0)、随机 (1)、比例 (2) */ + } +} +``` + + * **trustedPathId**:可信路径是不需要加密和认证的物理网络。这提供了性能提升,但在通过此路径通信时会牺牲 ZeroTier 的所有安全功能。仅在您知道自己在做什么并且确实需要性能时才使用!要设置可信路径,使用它的所有设备必须为同一网络具有*相同的可信路径 ID*。可信路径 ID 是任意的正非零整数。例如,IP 在 10.0.0.0/24 范围内的一组设备可以将其用作快速可信路径,如果它们都为该网络定义了相同的 "25" 可信路径 ID。 + +一个 `local.conf` 示例: + +```javascript +{ + "physical": { + "10.0.0.0/24": { + "blacklist": true + }, + "10.10.10.0/24": { + "trustedPathId": 101010024 + }, + }, + "virtual": { + "feedbeef12": { + "role": "UPSTREAM", + "try": [ "10.10.20.1/9993" ], + "blacklist": [ "192.168.0.0/24" ] + } + }, + "settings": { + "softwareUpdate": "apply", + "softwareUpdateChannel": "release" + } +} +``` + +### 网络虚拟化服务 API + +JSON API 支持 GET、POST/PUT 和 DELETE。PUT 被视为 POST 的同义词。不支持其他方法,包括 HEAD。 + +POST 到 JSON API 的值对类型*极其*敏感。内容*必须*是指示的类型,否则将被忽略或产生错误。任何用引号括起来的内容都是字符串,因此布尔值和整数必须没有引号。布尔值必须是 *true* 或 *false*,不能是其他值。整数不能包含小数点,否则它们是浮点数(反之亦然)。如果某些内容似乎被忽略或设置为奇怪的值,或者您收到错误,请根据下面列出的类型检查您提交的所有 JSON 字段的类型。JSON 对象中无法识别的字段也会被忽略。 + +API 请求必须通过认证令牌进行认证。ZeroTier One 将此令牌保存在其工作目录中的 *authtoken.secret* 文件中。此令牌可以通过 *auth* URL 参数(例如 '?auth=...')或 *X-ZT1-Auth* HTTP 请求头提供。静态 UI 页面是服务器允许的唯一无需认证的内容。 + +可以提供 *jsonp* URL 参数以请求 JSONP 封装。JSONP 响应作为脚本发送,其 JSON 响应载荷包装在以 *jsonp* 参数值作为函数名的调用中。 + +#### /status + + * 目的:获取运行节点状态和地址信息 + * 方法:GET + * 返回:{ 对象 } + +| 字段 | 类型 | 描述 | 可写 | +| --------------------- | ------------- | --------------------------------------------- | ---- | +| address | 字符串 | 此节点的 10 位十六进制 ZeroTier 地址 | 否 | +| publicIdentity | 字符串 | 此节点的 ZeroTier identity.public | 否 | +| worldId | 整数 | ZeroTier 世界 ID(除测试外从不更改) | 否 | +| worldTimestamp | 整数 | 最新世界定义的时间戳 | 否 | +| online | 布尔值 | 如果为 true,则至少有一个上游对等方可到达 | 否 | +| tcpFallbackActive | 布尔值 | 如果为 true,则我们正在使用慢速 TCP 回退 | 否 | +| relayPolicy | 字符串 | 中继策略:ALWAYS、TRUSTED 或 NEVER | 否 | +| versionMajor | 整数 | 软件主版本号 | 否 | +| versionMinor | 整数 | 软件次版本号 | 否 | +| versionRev | 整数 | 软件修订版本号 | 否 | +| version | 字符串 | 主版本.次版本.修订版本 | 否 | +| clock | 整数 | 节点处的当前系统时钟(自纪元以来的毫秒数) | 否 | + +#### /network + + * 目的:获取所有网络成员资格 + * 方法:GET + * 返回:[ {对象}, ... ] + +获取 /network 返回此节点已加入的所有网络的数组。请参见下文了解网络对象格式。 + +#### /network/\<网络 ID\> + + * 目的:获取、加入或离开网络 + * 方法:GET、POST、DELETE + * 返回:{ 对象 } + +要加入网络,请 POST 到它。由于网络没有强制性的可写参数,POST 数据是可选的,可以省略。例如:POST 到 /network/8056c2e21c000001 以加入公共 "Earth" 网络。要离开网络,请 DELETE 它,例如 DELETE /network/8056c2e21c000001。 + +大多数网络设置不可写,因为它们由网络控制器定义。 + +| 字段 | 类型 | 描述 | 可写 | +| --------------------- | ------------- | --------------------------------------------- | ---- | +| id | 字符串 | 16 位十六进制网络 ID | 否 | +| nwid | 字符串 | 16 位十六进制网络 ID(遗留字段) | 否 | +| mac | 字符串 | 此网络的网络设备的 MAC 地址 | 否 | +| name | 字符串 | 此网络的简称(来自控制器) | 否 | +| status | 字符串 | 网络状态(OK、ACCESS_DENIED 等) | 否 | +| type | 字符串 | 网络类型(PUBLIC 或 PRIVATE) | 否 | +| mtu | 整数 | 以太网 MTU | 否 | +| dhcp | 布尔值 | 如果为 true,则应使用 DHCP 获取 IP 信息 | 否 | +| bridge | 布尔值 | 如果为 true,则此设备可以桥接其他设备 | 否 | +| broadcastEnabled | 布尔值 | 如果为 true,则 ff:ff:ff:ff:ff:ff 广播工作 | 否 | +| portError | 整数 | 底层 tap 驱动程序返回的错误代码 | 否 | +| netconfRevision | 整数 | 网络配置修订 ID | 否 | +| assignedAddresses | [字符串] | ZeroTier 分配的 IP 地址数组 (/bits) | 否 | +| routes | [对象] | ZeroTier 分配的路由数组(见下文) | 否 | +| portDeviceName | 字符串 | 虚拟网络设备的名称(如果有) | 否 | +| allowManaged | 布尔值 | 允许 IP 和路由管理 | 是 | +| allowGlobal | 布尔值 | 允许与全局 IP 重叠的 IP 和路由 | 是 | +| allowDefault | 布尔值 | 允许覆盖系统默认路由 | 是 | +| allowDNS | 布尔值 | 允许在网络中配置 DNS | 是 | + +路由对象: + +| 字段 | 类型 | 描述 | 可写 | +| --------------------- | ------------- | --------------------------------------------- | ---- | +| target | 字符串 | 目标网络 / 网络掩码位数 | 否 | +| via | 字符串 | 网关 IP 地址(下一跳)或 null 表示 LAN | 否 | +| flags | 整数 | 标志,目前始终为 0 | 否 | +| metric | 整数 | 路由度量(目前未使用) | 否 | + +#### /peer + + * 目的:获取所有对等方 + * 方法:GET + * 返回:[ {对象}, ... ] + +获取 /peer 返回所有当前对等方的对等方对象数组。请参见下文了解对等方对象格式。 + +#### /peer/\<地址\> + + * 目的:获取或设置对等方信息 + * 方法:GET、POST + * 返回:{ 对象 } + +| 字段 | 类型 | 描述 | 可写 | +| --------------------- | ------------- | --------------------------------------------- | ---- | +| address | 字符串 | 对等方的 10 位十六进制 ZeroTier 地址 | 否 | +| versionMajor | 整数 | 远程主版本号(如果已知) | 否 | +| versionMinor | 整数 | 远程次版本号(如果已知) | 否 | +| versionRev | 整数 | 远程软件修订版本号(如果已知) | 否 | +| version | 字符串 | 主版本.次版本.修订版本 | 否 | +| latency | 整数 | 延迟(毫秒),如果已知 | 否 | +| role | 字符串 | LEAF、UPSTREAM、ROOT 或 PLANET | 否 | +| paths | [对象] | 当前活动的物理路径(见下文) | 否 | + +路径对象: + +| 字段 | 类型 | 描述 | 可写 | +| --------------------- | ------------- | --------------------------------------------- | ---- | +| address | 字符串 | 物理套接字地址,例如 IP/端口 | 否 | +| lastSend | 整数 | 通过此路径的最后一次发送时间 | 否 | +| lastReceive | 整数 | 通过此路径的最后一次接收时间 | 否 | +| active | 布尔值 | 此路径是否正在使用? | 否 | +| expired | 布尔值 | 此路径是否已过期? | 否 | +| preferred | 布尔值 | 这是否是当前首选路径? | 否 | +| trustedPathId | 整数 | 如果非零,则这是可信路径(未加密) | 否 | \ No newline at end of file From fb579b9c0f0f2e5bd070ecdf8a6c2b437c9a203a Mon Sep 17 00:00:00 2001 From: oliver Date: Wed, 1 Oct 2025 19:28:55 +0800 Subject: [PATCH 08/15] Translate rule-compiler/reame into simplified Chinese --- rule-compiler/README-zh-CN.md | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 rule-compiler/README-zh-CN.md diff --git a/rule-compiler/README-zh-CN.md b/rule-compiler/README-zh-CN.md new file mode 100644 index 000000000..9c4355de7 --- /dev/null +++ b/rule-compiler/README-zh-CN.md @@ -0,0 +1,8 @@ +ZeroTier 规则编译器 +====== + +此脚本将人类可读格式的 ZeroTier 规则转换为适合导入 ZeroTier 网络控制器的规则。这是在 [ZeroTier Central](https://my.zerotier.com/) 上规则编辑器中使用的脚本。 + +命令行界面可通过以下方式调用:`node cli.js `。 + +有关规则引擎和规则脚本语法的信息,请参见[手册](https://www.zerotier.com/manual.shtml)。 \ No newline at end of file From bc4523394b984d3d85532d9a8715617fd4ad50c9 Mon Sep 17 00:00:00 2001 From: oliver Date: Wed, 1 Oct 2025 19:30:04 +0800 Subject: [PATCH 09/15] Translate pkg/reame to simplified Chinese --- pkg/README-zh-CN.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 pkg/README-zh-CN.md diff --git a/pkg/README-zh-CN.md b/pkg/README-zh-CN.md new file mode 100644 index 000000000..19c0f80bd --- /dev/null +++ b/pkg/README-zh-CN.md @@ -0,0 +1,4 @@ +第三方打包 +===== + +有关打包文档,请参见此处的`设备`部分:[docs.zerotier.com](https://docs.zerotier.com/) \ No newline at end of file From bc0adbe5efb4d0986a5b098298fcd578b831e821 Mon Sep 17 00:00:00 2001 From: oliver Date: Wed, 1 Oct 2025 19:30:59 +0800 Subject: [PATCH 10/15] Translate osdep/reame into simplified Chinese --- osdep/README-zh-CN.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 osdep/README-zh-CN.md diff --git a/osdep/README-zh-CN.md b/osdep/README-zh-CN.md new file mode 100644 index 000000000..331eab376 --- /dev/null +++ b/osdep/README-zh-CN.md @@ -0,0 +1,5 @@ +与操作系统相关和操作系统接口的内容 +====== + +此文件夹包含与基础操作系统接口的内容, +如用于网络访问的 Phy 和各种特定于操作系统的以太网 tap 驱动程序。 \ No newline at end of file From 95d4e179e7db3c130ab6e1d1d5fe03101d47b5f5 Mon Sep 17 00:00:00 2001 From: oliver Date: Wed, 1 Oct 2025 19:32:30 +0800 Subject: [PATCH 11/15] Translate Java/Reame into Simplified Chinese --- java/README-zh-CN.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 java/README-zh-CN.md diff --git a/java/README-zh-CN.md b/java/README-zh-CN.md new file mode 100644 index 000000000..8672fe662 --- /dev/null +++ b/java/README-zh-CN.md @@ -0,0 +1,17 @@ +ZeroTier One SDK - Android JNI 封装 +===== + + +构建 +----- + +需要: + +* JDK +* ANT +* Android NDK + +必需的环境变量: + +* NDK\_BUILD\_LOC - Android NDK 中 ndk-build 脚本的路径 +* ANDROID\_PLATFORM - android.jar 所在目录的路径(Windows 上:C:\Users\\AppData\Local\Android\sdk\platforms\android-21) \ No newline at end of file From 1d867fa2ec2b1a0282ab8a32164899639ba15670 Mon Sep 17 00:00:00 2001 From: oliver Date: Wed, 1 Oct 2025 19:33:25 +0800 Subject: [PATCH 12/15] Translate include/Reame into Simplified Chinese --- include/README-zh-CN.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 include/README-zh-CN.md diff --git a/include/README-zh-CN.md b/include/README-zh-CN.md new file mode 100644 index 000000000..143710f1a --- /dev/null +++ b/include/README-zh-CN.md @@ -0,0 +1,4 @@ +ZeroTier Node API +====== + +这是面向外部的纯 C API,它封装了 node/ 文件夹中的 Node 类。它为核心 ZeroTier 网络虚拟化引擎提供了一个平台无关的接口。 \ No newline at end of file From 257aef1bdd2159f036986e302290641ba317c1e9 Mon Sep 17 00:00:00 2001 From: oliver Date: Wed, 1 Oct 2025 19:34:23 +0800 Subject: [PATCH 13/15] Translate ext/Reame into Simplified Chinese --- ext/README-zh-CN.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 ext/README-zh-CN.md diff --git a/ext/README-zh-CN.md b/ext/README-zh-CN.md new file mode 100644 index 000000000..6d5c9eb03 --- /dev/null +++ b/ext/README-zh-CN.md @@ -0,0 +1,10 @@ +Miscellaneous Stuff +====== + +此子文件夹包含: + +* 捆绑的第三方库,这些库会在系统上不可用的平台和 Linux 发行版上编译成二进制文件。 + +* 某些平台的预编译二进制文件,例如针对 Mac 和 Windows 的预构建和签名驱动程序。 + +* 安装程序和软件包在不同目标平台上使用的各种文件。 \ No newline at end of file From 73bcfdd45c74399051289b8a9d41dc4042fa7c29 Mon Sep 17 00:00:00 2001 From: oliver Date: Wed, 1 Oct 2025 19:39:48 +0800 Subject: [PATCH 14/15] Translate all Markdown files in the doc folder and provide simplified Chinese --- doc/README-zh-CN.md | 6 +++ doc/zerotier-cli.1-zh-CN.md | 68 ++++++++++++++++++++++++ doc/zerotier-idtool.1-zh-CN.md | 65 +++++++++++++++++++++++ doc/zerotier-one.8-zh-CN.md | 95 ++++++++++++++++++++++++++++++++++ 4 files changed, 234 insertions(+) create mode 100644 doc/README-zh-CN.md create mode 100644 doc/zerotier-cli.1-zh-CN.md create mode 100644 doc/zerotier-idtool.1-zh-CN.md create mode 100644 doc/zerotier-one.8-zh-CN.md diff --git a/doc/README-zh-CN.md b/doc/README-zh-CN.md new file mode 100644 index 000000000..0f4c08180 --- /dev/null +++ b/doc/README-zh-CN.md @@ -0,0 +1,6 @@ +手册页和其他文档 +===== + +使用“./build.sh”构建手册页。 + +您需要安装 Node.js/npm(脚本会自动安装 npm *marked-man* 包)或 */usr/bin/ronn*。后者是一个 Ruby 程序,在某些发行版中打包为 *rubygem-ronn* 或 *ruby-ronn*,或者可以使用 *gem install ronn* 安装。Node 的 *marked-man* 包和 RubyGems 的 *ronn* 是将 Markdown 编译为 roff/man 格式的两个大致相同的替代方案。 \ No newline at end of file diff --git a/doc/zerotier-cli.1-zh-CN.md b/doc/zerotier-cli.1-zh-CN.md new file mode 100644 index 000000000..2f9e8ac63 --- /dev/null +++ b/doc/zerotier-cli.1-zh-CN.md @@ -0,0 +1,68 @@ +zerotier-cli(1) -- 控制本地 ZeroTier 虚拟网络服务 +================================================================= + +## 概要 + +`zerotier-cli` [-switches] [arguments] + +## 描述 + +**zerotier-cli** 提供了一个简单的命令行界面,用于访问 ZeroTier 虚拟网络端点服务 zerotier-one(8) 的本地 JSON API。 + +默认情况下,**zerotier-cli** 必须以 root 身份或使用 `sudo` 运行。如果您想允许非特权用户使用 **zerotier-cli** 控制系统 ZeroTier 服务,您可以在用户的主目录中创建 ZeroTier 服务授权令牌的本地副本: + + sudo cp /var/lib/zerotier-one/authtoken.secret /home/user/.zeroTierOneAuthToken + chown user /home/user/.zeroTierOneAuthToken + chmod 0600 /home/user/.zeroTierOneAuthToken + +(ZeroTier 服务主目录的位置可能因平台而异。请参见 zerotier-one(8)。) + +请注意,这使用户拥有了将系统连接或断开与任何虚拟网络的权限,这是一个重要的权限。 + +**zerotier-cli** 有几个命令行参数,可以在 `help` 输出中看到。最常用的两个是 `-j` 用于原始 JSON 输出和 `-D` 用于指定替代的 ZeroTier 服务工作目录。原始 JSON 输出更容易在脚本中解析,还包含表格输出中没有的详细信息。`-D` 选项指定了服务的 zerotier-one.port 和 authtoken.secret 文件的位置,如果服务未在系统的默认位置运行。 + +## 命令 + + * `help`: + 显示 **zerotier-cli** 帮助。 + + * `info`: + 显示有关此设备的信息,包括其 10 位 ZeroTier 地址和明显的连接状态。使用 `-j` 获取更详细的输出。 + + * `listpeers`: + 此命令列出了此服务已知并在最近(大约在过去 30 分钟内)通信过的 ZeroTier VL1(虚拟层 1,点对点网络)对等方。这些不一定都是您虚拟网络上的所有设备,也可能包括一些您未加入的任何虚拟网络的设备。这些通常要么是根服务器,要么是网络控制器。 + + * `listnetworks`: + 这将列出您的系统所属的网络以及有关它们的一些信息,例如您被分配的任何 ZeroTier 管理的 IP 地址。(手动分配给 ZeroTier 接口的 IP 地址不会在此处列出。使用标准网络接口命令查看这些地址。) + + * `join`: + 要加入网络,只需使用 `join` 和其 16 位十六进制网络 ID。就是这样。然后使用 `listnetworks` 查看状态。您要么会收到网络控制器的回复,其中包含证书和其他信息,如 IP 分配,要么会收到"访问被拒绝"。在这种情况下,您需要网络管理员在控制器上通过您的 10 位设备 ID(通过 `info` 可见)授权您的设备。 + + * `leave`: + 离开网络就像加入网络一样简单。这会断开与网络的连接并从系统中删除其接口。请注意,网络上的对等方可能会在 `listpeers` 中停留长达 30 分钟,直到由于缺乏流量而超时。但如果它们不再与您共享网络,它们实际上无法以任何有意义的方式与您通信。 + +## 示例 + +加入"Earth",ZeroTier 的大型公共派对线网络: + + $ sudo zerotier-cli join 8056c2e21c000001 + $ sudo zerotier-cli listnetworks + ( 等待直到您获得 Earth IP ) + $ ping earth.zerotier.net + ( 您现在应该能够 ping 通我们的 Earth 测试 IP ) + +离开"Earth": + + $ sudo zerotier-cli leave 8056c2e21c000001 + +列出 VL1 对等方: + + $ sudo zerotier-cli listpeers + +## 版权 + +(c)2011-2016 ZeroTier, Inc. -- https://www.zerotier.com/ -- https://github.com/zerotier + +## 另请参见 + +zerotier-one(8), zerotier-idtool(1) \ No newline at end of file diff --git a/doc/zerotier-idtool.1-zh-CN.md b/doc/zerotier-idtool.1-zh-CN.md new file mode 100644 index 000000000..822866339 --- /dev/null +++ b/doc/zerotier-idtool.1-zh-CN.md @@ -0,0 +1,65 @@ +zerotier-idtool(1) -- 用于创建和操作 ZeroTier 身份的工具 +============================================================================ + +## 概要 + +`zerotier-idtool` [args] + +## 描述 + +**zerotier-idtool** 是一个用于处理 ZeroTier 身份的命令行实用程序。ZeroTier 身份由公钥/私钥对组成(或者如果只是 identity.public,则只有公钥)以及通过基于工作量证明的哈希函数从公钥派生的 10 位十六进制 ZeroTier 地址。 + +## 命令 + +当命令参数需要公钥或私钥(完整)身份时,身份可以指定为文件路径或直接在命令行上指定。 + + * `help`: + 显示帮助。(不带命令运行也会显示帮助。) + + * `generate` [secret file] [public file] [vanity]: + 生成新的 ZeroTier 身份。如果指定了私钥文件,包含私钥的完整身份将写入此文件。如果指定了公钥文件,公钥部分将写入那里。如果未指定文件路径,完整的私钥身份将输出到 STDOUT。虚荣前缀是生成身份地址应以开头的一系列十六进制数字。通常不使用此功能,如果指定,由于身份生成的工作量证明函数的固有成本,生成可能需要很长时间。在 2.8ghz Core i5(使用一个核心)上生成具有已知 16 位(4 位数字)前缀的身份平均需要两个小时。 + + * `validate` : + 本地验证身份的密钥和工作量证明函数对应关系。 + + * `getpublic` : + 提取 identity.secret 的公钥部分并打印到 STDOUT。 + + * `sign` : + 使用 SHA512+ECC-256 (ed25519) 对文件内容进行签名。签名以十六进制格式输出到 STDOUT。 + + * `verify` : + 验证使用 `sign` 创建的签名。 + + * `mkcom` [id,value,maxdelta] [...]: + 创建并签署网络成员证书。这通常不常用,因为网络控制器会自动执行此操作,主要包含用于测试目的。 + +## 示例 + +生成并转储新身份: + + $ zerotier-idtool generate + +生成并写入新身份,包括私钥和公钥部分: + + $ zerotier-idtool generate identity.secret identity.public + +生成以十六进制数字"beef"开头的虚荣地址(这将需要一段时间!): + + $ zerotier-idtool generate beef.secret beef.public beef + +使用身份的私钥对文件进行签名: + + $ zerotier-idtool sign identity.secret last_will_and_testament.txt + +使用公钥验证文件签名: + + $ zerotier-idtool verify identity.public last_will_and_testament.txt + +## 版权 + +(c)2011-2016 ZeroTier, Inc. -- https://www.zerotier.com/ -- https://github.com/zerotier + +## 另请参见 + +zerotier-one(8), zerotier-cli(1) \ No newline at end of file diff --git a/doc/zerotier-one.8-zh-CN.md b/doc/zerotier-one.8-zh-CN.md new file mode 100644 index 000000000..dbd6e951f --- /dev/null +++ b/doc/zerotier-one.8-zh-CN.md @@ -0,0 +1,95 @@ +zerotier-one(8) -- ZeroTier 虚拟网络端点服务 +============================================================ + +## 概要 + +`zerotier-one` [-switches] [working directory] + +## 描述 + +**zerotier-one** 是负责将 Unix(Linux/BSD/OSX)系统连接到一个或多个 ZeroTier 虚拟网络并将这些网络呈现给系统作为虚拟网络端口的服务/守护进程。您可以将其视为点对点 VPN 客户端。 + +它通常由 systemd(Linux)或 launchd(Mac)等 init 系统运行,而不是由用户直接运行,并且必须以 root 身份运行,除非您给它 `-U` 开关并且不打算实际加入网络(例如,仅运行网络控制器微服务)。 + +**zerotier-one** 服务将其状态和其他文件保存在工作目录中。如果在启动时未指定此目录,则在 Linux 上默认为"/var/lib/zerotier-one",在 Mac 上默认为"/Library/Application Support/ZeroTier/One",在 FreeBSD 和其他类似的 BSD 上默认为"/var/db/zerotier-one"。工作目录应该是持久的。它不应该被系统清理守护进程自动清理或存储在易失性位置。丢失其 identity.secret 文件会导致丢失此系统的唯一 10 位 ZeroTier 地址和密钥。 + +只要使用不同的主端口(请参见开关)和不同的工作目录,就可以在同一系统上运行多个 **zerotier-one** 实例。但由于单个服务可以加入任意数量的网络,通常这样做没有意义。 + +**zerotier-one** 服务通过在 127.0.0.1:<主端口> 上可用的 JSON API 进行控制,默认主端口为 9993。访问此 API 需要通常在服务工作目录中的 authtoken.secret 文件中找到的授权令牌。在某些平台上,如果启用了其他安全选项,访问可能受到其他措施(如套接字对等 UID/GID 查找)的保护(这不是默认设置)。 + +首次在新的工作目录中启动服务时,它会生成 ZeroTier 身份。在慢速系统上,由于 ZeroTier 在地址生成中使用了反 DDOS/反伪造的工作量证明函数,此过程可能需要十秒或更长时间。这只发生一次,一旦生成,结果将保存在工作目录中的 identity.secret 中。此文件代表并定义/声明您的 ZeroTier 地址和相关的 ECC-256 密钥对。 + +## 开关 + + * `-h`: + 显示帮助。 + + * `-v`: + 显示 ZeroTier One 版本。 + + * `-U`: + 跳过权限检查并允许非特权用户运行。这通常在使用包含网络控制器选项构建 **zerotier-one** 时使用。在这种情况下,ZeroTier 服务可能仅充当网络控制器,可能永远不会实际加入网络,在这种情况下,它不需要提升的系统权限。 + + * `-p`: + 指定不同的主端口。如果未给出,则默认为 9993。如果给定零,则每次选择随机端口。 + + * `-d`: + 作为守护进程分叉并运行。 + + * `-i`: + 调用 **zerotier-idtool** 个性,在这种情况下,二进制文件的行为类似于 zerotier-idtool(1)。如果二进制文件(或指向它的符号链接)的名称是 zerotier-idtool,则会自动发生。 + + * `-q`: + 调用 **zerotier-cli** 个性,在这种情况下,二进制文件的行为类似于 zerotier-cli(1)。如果二进制文件(或指向它的符号链接)的名称是 zerotier-cli,则会自动发生。 + +## 示例 + +使用 OS 默认工作目录和默认端口作为守护进程运行: + + $ sudo zerotier-one -d + +使用不同的工作目录和端口作为守护进程运行: + + $ sudo zerotier-one -d -p12345 /tmp/zerotier-working-directory-test + +## 文件 + +这些文件位于服务的工作目录中。 + + * `identity.public`: + 您的 ZeroTier 身份的公共部分,即您的 10 位十六进制地址和相关的公钥。 + + * `identity.secret`: + 您的完整 ZeroTier 身份,包括其私钥。此文件标识网络上的系统,这意味着您可以通过复制此文件来移动 ZeroTier 地址,如果您想保存系统的静态 ZeroTier 地址,应该备份此文件。此文件必须受到保护,因为窃取其私钥将允许任何人冒充您的设备在任何网络上并解密流量。对于网络控制器,此文件特别敏感,因为它构成了控制器网络的证书颁发机构的私钥。 + + * `authtoken.secret`: + 用于向服务的本地 JSON API 验证请求的机密令牌。如果它不存在,则在服务启动时从安全随机源生成。要使用,请在发送到 127.0.0.1:<主端口> 的 HTTP 请求中将"X-ZT1-Auth"标头发送。 + + * `devicemap`: + 记住 zt# 接口编号到 ZeroTier 网络的映射,以便在重新启动时保持映射。在某些支持可以编码网络 ID 的较长接口名称的系统上(如 FreeBSD),此文件可能不存在。 + + * `zerotier-one.pid`: + ZeroTier 的 PID。此文件在正常关闭时删除。 + + * `zerotier-one.port`: + ZeroTier 的主端口,也是其 JSON API 在 127.0.0.1:<此端口> 上的位置。此文件在启动时创建,并由 zerotier-cli(1) 读取以确定它应该在哪里找到控制 API。 + + * `controller.db`: + 如果 ZeroTier One 服务内置了网络控制器,则此文件包含控制器的 SQLite3 数据库。 + + * `controller.db.backup`: + 如果 ZeroTier One 服务内置了网络控制器,则它会定期在此文件中备份其 controller.db 数据库(目前每 5 分钟一次,如果有更改)。由于此文件不是当前正在使用的 SQLite3 数据库,因此在不损坏的情况下备份更安全。在新备份中,文件被轮换而不是就地重写。 + + * `iddb.d/` (目录): + 缓存 ZeroTier 在过去 60 天内与之通信的每个对等方的公共身份。此目录及其内容可以删除,但这可能导致连接启动较慢,因为需要我们出去重新获取与我们通信的对等方的完整身份。 + + * `networks.d` (目录): + 这会缓存您所属网络的网络配置和证书信息。ZeroTier 在启动时扫描此目录以查找 <网络 ID>.conf 文件以回忆其网络,因此在此目录中"touch"一个空的 <网络 ID>.conf 文件是预配置 ZeroTier 在启动时加入特定网络而不使用 API 的方法。如果配置文件为空,ZeroTier 将从网络的控制器获取它。 + +## 版权 + +(c)2011-2016 ZeroTier, Inc. -- https://www.zerotier.com/ -- https://github.com/zerotier + +## 另请参见 + +zerotier-cli(1), zerotier-idtool(1) \ No newline at end of file From 2387ab32dabb2021ecb326e1137b1cc4e4997155 Mon Sep 17 00:00:00 2001 From: oliver Date: Wed, 1 Oct 2025 19:45:34 +0800 Subject: [PATCH 15/15] =?UTF-8?q?Create=20a=20link=20to=20switch=20languag?= =?UTF-8?q?es=20=E2=80=8B=E2=80=8Bin=20the=20readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index e881ce810..c3d3b382d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ ZeroTier - Global Area Networking ====== +language:|[Chinese](README-zh_CN.md)|[Englsih](README.md)| *This document is written for a software developer audience. For information on using ZeroTier, see the: [Website](https://www.zerotier.com), [Documentation Site](https://docs.zerotier.com), and [Discussion Forum](https://discuss.zerotier.com).*