OpenZiti 是一个开源零信任网络平台,它使网络服务对未授权用户完全不可见。每一次连接——无论是来自用户、服务、设备还是工作负载——都通过加密身份进行认证,通过策略进行授权,并实现端到端加密。
OpenZiti 既适用于现有应用(通过轻量级隧道器,无需修改代码),也适用于新应用(通过嵌入式 SDK 实现最强零信任模型)。这使得它既能应对存量环境(brownfield),也能支持全新开发(greenfield)。
由 NetFoundry 创建并提供赞助。基于 Apache 2.0 许可开源。
OpenZiti 让你能够将零信任扩展到任何场景,包括非人类工作负载和工作流,跨越多个网络和第三方。以下是一些常见用例。
为内部服务提供安全访问,无需 VPN 客户端、分裂隧道(split tunneling)问题或集中器瓶颈。每个服务单独授权。杜绝“一旦进入,便能访问一切”的问题。
使 API 和服务对互联网不可见。零监听端口意味着零攻击面。授权客户端通过 OpenZiti 连接;其他人什么也看不到。
为每个设备、传感器和机器分配唯一的加密身份。OpenZiti 的身份模型不仅适用于人类用户,也同样适用于非人类工作负载,为构成现代网络流量主体的机器对机器连接提供强认证。
保护跨云和跨环境的工作负载间通信。服务之间通过加密身份(而非网络位置)进行相互认证。无需共享密钥,无需 IP 白名单,无需环境隐式权限。
为每个 AI 参与者(包括智能体、MCP 服务器、工具端点和私有 LLM)提供加密身份,保障智能体与服务之间、智能体与智能体之间的通信安全。让私有 LLM 保持黑暗状态,不暴露任何监听端口或公共 URL。智能体使用强唯一身份进行认证,并且只能访问策略允许的资源,使得自主工作流既能获得所需访问权限,又不会对其他一切拥有隐式授权。
一个覆盖网络横跨 AWS、Azure、GCP、本地数据中心和边缘位置。无需特定云的网络工具,无需跨环境 VPN 隧道,无需复杂的对等互连(peering)安排。
从任何地方访问家庭实验室或自托管服务,如 Nextcloud、Home Assistant、媒体服务器和开发环境。无需开放路由器端口,无需动态 DNS,无需依赖第三方隧道服务。你掌控整个路径。
连接 Kubernetes 集群之间的服务,无需复杂的入站规则、服务网格边车或集群间 VPN 隧道。同时支持超越 Kubernetes 的场景,可将 k8s 服务连接到虚拟机、裸金属、物联网设备或覆盖网络上的任何其他目标。
OpenZiti 支持三种零信任模型。可以在同一个网络中混合使用,并随时间推移进行迁移。
在受信网络区域部署一个 OpenZiti 边缘路由器。流量从已认证的客户端进入覆盖网络,然后从该区域出口进入运行服务的私有网络。
在与服务相同的主机上运行 OpenZiti 隧道器。隧道器负责处理身份、认证和加密。服务只需接受来自 localhost 的连接。
将 OpenZiti SDK 直接嵌入客户端和/或服务器应用。应用本身持有加密身份并就地加密流量。不存在任何监听端口,甚至 localhost 上也没有。
从何入手: 许多团队从主机接入(隧道器)开始,用于现有服务。几分钟即可部署完成,无需修改代码。对于新开发或高安全要求的工作负载,应用接入(SDK)提供最强的零信任姿态。
以下快速入门指南展示了如何搭建本地 OpenZiti 网络用于开发、测试和学习。对于生产部署,请参阅产品文档:https://netfoundry.io/docs/openziti/category/deployments/。
启动本地 OpenZiti 网络最快的方式:
wget https://get.openziti.io/dock/all-in-one/compose.yml
docker compose up
这会在单个 Compose 栈中启动一个控制器、一个边缘路由器以及 Ziti 控制台。控制台地址为 https://localhost:1280/zac/。在此处你可以创建身份、定义服务以及配置访问策略。
详细信息(包括存储选项、环境变量和 CLI 用法)请参阅 all-in-one Docker 快速入门。
从 GitHub Releases 下载最新的 ziti 二进制文件,然后:
ziti edge quickstart
这将启动一个本地开发网络:控制器、路由器以及一个默认的管理员身份。适用于测试和学习。
如需向正在运行的控制器添加 Ziti 管理控制台 (ZAC):
ziti ops console download --location /opt/openziti/console
ziti ops console configure /path/to/controller.yml --all --location /opt/openziti/console
# 重启控制器,然后打开 https://<controller-address>/zac/
或者在不修改控制器配置的情况下本地提供 ZAC 服务:
ziti run console --version latest
# 打开 https://127.0.0.1:8443。从浏览器指向任何控制器即可。
| 资源 | 描述 |
|---|
OpenZiti 的覆盖网络运行在现有基础设施之上:任何 IP 网络、任何云、任何组合。核心组件:
控制器是管理平面。负责:
边缘路由器构成数据平面,是一个网状结构,承载端点之间的加密流量。
路由器自动发现彼此,形成网状连接,并使用智能路由根据延迟、吞吐量和成本选择最佳路径。
端点是应用和用户连接到 OpenZiti 网络的方式:
SDK(Go、C、Python、Node.js、Java、Swift、C#):将零信任直接嵌入应用。应用本身持有身份并处理加密。无需边车、无需代理、无需监听端口。
隧道器(Linux、Windows、macOS、iOS、Android):轻量级应用,为未修改的软件提供 OpenZiti 连接。流量被透明地拦截并通过覆盖网络路由。无需修改代码。
OpenZiti 网络中的每个参与者(例如用户、服务、设备、工作负载)都携带一个由 x509 证书支持的唯一加密身份。当发起连接时,OpenZiti 验证:
如果任何一项检查失败,连接被拒绝。如果之后访问被撤销,活跃连接会立即终止。不存在基于网络位置的隐式信任。除非策略明确允许,否则在同一个 LAN 上并不比在互联网上拥有更多访问权限。
这一模型实现了零信任应用分段:每个服务独立授权。获取对一个服务的访问权限并不会授予对任何其他服务的访问权限。
“暗”服务没有任何开放端口。它不在任何网络接口上监听入站连接。相反,服务(或其旁边的隧道器)向 OpenZiti 边缘路由器发起一个出站连接并注册自身。客户端只能在认证和授权之后,通过 OpenZiti 结构来访问它。
这在实践中意味着:
边缘路由器也可以变成黑暗状态。私有路由器只发起出站连接,因此在你的私有网络中无需任何入站防火墙规则。
使用 OpenZiti SDK 时,流量从发送应用加密到接收应用:数据路径使用 libsodium,身份认证使用 mTLS。即使路由器或中间网络被攻破,流量也无法被解密或篡改。
使用隧道器时,加密覆盖从隧道器到隧道器(或隧道器到 SDK)的路径,实现无需更改应用的机器对机器加密。
将零信任网络直接嵌入你的应用:
所有 SDK 均列在 OpenZiti GitHub 组织 下。
OpenZiti 是一个以安全为导向的项目。负责任地披露漏洞有助于我们保护平台及其用户的安全。
报告漏洞: 如果你发现安全问题,请查阅我们的漏洞披露政策了解完整细节。敏感问题应报告至 [email protected]。非敏感问题可以在相应仓库中作为 GitHub issue 提交。你应在 7 天内收到回复。
我们如何处理漏洞: 我们的产品安全事件响应流程描述了如何对报告的漏洞进行分类、记录和解决——包括如何协调 CVE 发布与修复。
安全港: OpenZiti 和 NetFoundry 不会对善意研究和报告漏洞的任何人提起法律诉讼。我们鼓励安全研究,并会在公告和发布说明中将报告的发现归功于报告者。
OpenZiti 拥有一个活跃且不断壮大的社区:
OpenZiti 项目欢迎各种贡献,包括代码、文档、错误报告和反馈。
构建说明请参阅本地开发教程。
OpenZiti 已在生产环境中被多个组织使用,包括 DeltaSecure(托管 SOC)、Resulticks(营销自动化)、Chirp Wireless(物联网/电信)、GIGO Dev(云开发环境)、OSMIT(托管 IT/GDPR 合规),以及开源项目如 zrok 和 BlueBubbles。
完整列表请见:ADOPTERS.md。你正在使用 OpenZiti?我们很乐意将你加入列表——请提交 issue 或 PR。
如果你不想自己管理基础设施,NetFoundry 提供完全托管、全球分布的 OpenZiti 网络即服务,包含 SLA、企业支持以及全球边缘路由器矩阵。
OpenZiti 由 NetFoundry, Inc 开发并开源。
| 能力 | 描述 |
|---|
| 暗服务 | 服务不开放任何监听端口,对扫描器和未授权用户不可见。 |
| 万物身份 | 为用户、服务、设备和非人类工作负载(NHI)提供加密身份。不依赖 IP。 |
| 基于身份的操作 | 通过身份和策略管理网络,而非 IP 地址和防火墙规则。简化运维,消除手动网络配置。 |
| 端到端加密 | 使用 libsodium 实现从源到目标的数据加密。使用 mTLS 进行身份认证。对网络路径零信任。 |
| 无需 VPN 或开放端口 | 连接通过 OpenZiti 的覆盖网络路由。无需 VPN 客户端,无需入站防火墙规则,无需暴露端口。 |
| 智能路由 | 网状结构(mesh fabric)配合智能路径选择,实现高性能和可靠性。 |
| 灵活部署 | 可嵌入 SDK、使用隧道器,或在网络层面部署。每项服务可自由组合搭配。 |
| 策略驱动访问 | 细粒度、基于身份的访问策略。可实时撤销访问,并立即切断活跃连接。 |
| 可编程 REST API | 提供完整的管理 API 用于自动化和集成。包含基于 Web 的管理控制台。 |
| 完全自托管 | 可在你自己的基础设施上运行整个平台。无供应商依赖。开源,Apache 2.0 许可。 |
| 简介 | 核心概念及 OpenZiti 工作原理 |
| 快速入门指南 | 本地、Docker 和托管环境的分步设置 |
| 零信任模型 | 三种部署模型的深入解析 |
| 隧道器参考 | 零代码修改快速上手 |
| 语言 | 仓库 | 备注 |
|---|
| Go | sdk-golang | OpenZiti 项目自身使用 |
| C | ziti-sdk-c | 适用于嵌入式系统、物联网和高性能场景 |
| Java / Kotlin | ziti-sdk-jvm | 包含 Android 支持 |
| Swift | ziti-sdk-swift | iOS 和 macOS |
| Node.js | ziti-sdk-nodejs | |
| C# / .NET | ziti-sdk-csharp | |
| Python | ziti-sdk-py |
| 仓库 | 描述 |
|---|
| openziti/ziti | 核心平台:控制器、路由器、CLI |
| sdk-golang | Go SDK |
| ziti-sdk-c | C SDK |
| ziti-sdk-jvm | Java / Kotlin / Android SDK |
| ziti-sdk-swift | Swift / iOS SDK |
| ziti-sdk-nodejs | Node.js SDK |
| ziti-sdk-csharp | C# SDK |
| ziti-sdk-py | Python SDK |
| ziti-tunnel-sdk-c | Linux 隧道器及核心隧道器 SDK |
| ziti-tunnel-apple | macOS 和 iOS 边缘客户端 |
| desktop-edge-win | Windows 桌面边缘客户端 |
| ziti-doc | 文档站点 |