Iroh 1.0 - 使用密钥拨号,而非IP地址
摘要
Iroh 1.0 是一个稳定版的对等网络库,它使用加密密钥代替IP地址,实现跨不同传输协议和平台的直接、安全连接。
<p><a href="https://lobste.rs/s/cslljn/iroh_1_0_dial_keys_not_ips">评论</a></p>
查看缓存全文
缓存时间: 2026/06/15 17:00
# Iroh 1.0 - 用密钥拨号,而非 IP 地址
来源:https://www.iroh.computer/blog/v1
这个想法其实很简单,但它代表了未来互联网应有的抽象层。IP 地址可能毫无征兆地失效,而且你无法控制你的设备。而密钥则由你创建并控制——它们随着你的设备移动而保持不变,并且你可以选择丢弃或保留。IP 地址可能是私有的,也可能被防火墙阻挡而无法访问,但使用 iroh,你的设备无论身在何处都能安全寻址。
我们认为这就是互联网应有的工作方式,这也是 iroh 存在的原因。今天我们很高兴地宣布 iroh 1.0 版本正式发布。
这是我们的第一个稳定版本,但项目本身在通往 1.0 的 65 个版本中已经取得了巨大进展。iroh 已经在各地被广泛使用。**我们运行的公共中继服务在过去 30 天内,仅端点创建量就超过了 2 亿。***开发者们正在使用 iroh 进行视频流传输、训练大型语言模型、与智能体对话、安全聊天、游戏、文件传输,以及更多我们无法一一列举的场景。iroh 是一项旨在推动互联网根本性变革的基础技术,如今已在数百万台设备上运行。
经过四年多公之于众的构建,我们拥有了一个让我们引以为傲的基础。
- 我们转向开放标准,尽可能优先采用 IETF 草案。
- 我们构建了自己的 **QUIC 多路径**(https://datatracker.ietf.org/doc/draft-ietf-quic-multipath/)实现,使 iroh 能在同一连接内建立并管理多条路径,并在网络条件变化时热切换路径。
- 我们实现了 **QUIC NAT 穿越**(https://datatracker.ietf.org/doc/draft-seemann-quic-nat-traversal/),从而能够在保持连接细节加密的同时建立直接连接。
- 我们添加了完整的本地优先配置,使 iroh 能够发现并连接到本地设备,即使没有互联网访问。
- 我们构建并持续验证 iroh 可以编译为 WASM 并在浏览器中运行。
- 我们与高级用户合作,添加了钩子机制,使你能够注入逻辑来控制连接的工作方式。
- 我们甚至增加了对 **自定义传输层**(https://www.iroh.computer/blog/iroh-0-97-0-custom-transports-and-noq)的支持,因此你可以接入诸如 **低功耗蓝牙(BLE)**(https://github.com/mcginty/iroh-ble-transport/)、LoRa(建设中)、WiFi Aware 甚至 **Tor**(https://github.com/n0-computer/iroh-tor-transport)等技术来构建连接,所有这些都统一在相同的“通过密钥拨号”抽象之下。
密钥的重要性怎么强调都不为过。我们用它来保护连接安全。由于来自连接的所有数据都由该密钥保护,我们可以从同一个密钥向上构建身份、权限和归属。我们还可以使用相同的密钥作为可拨号的地址,无论它位于世界何处。它把互联网变成了一个安全的本地环回。
Iroh 连接的效率也高得多。通常,连接中传输的数据有 95% 直接在设备之间传递。走直连意味着更少经过云端的跳数,从而降低你的出站费用。它也减少了经过路由器的跳数,因此整个互联网也变得更高效。
我们之前曾因维护开销(API 变更频繁)暂停了 FFI 支持,并承诺在 1.0 稳定 API 发布时恢复。现在我们正在兑现这个承诺:除了 Rust crate,我们现在正式支持 Python、Node.js、Swift 和 Kotlin。这让你的应用程序用例更加简单,使你能够将 iroh 嵌入到你的 Swift iOS 应用或 Kotlin Android 应用中。请查阅**文档**(https://docs.iroh.computer/languages)和**自动生成的 API 文档**(https://n0-computer.github.io/iroh-ffi/)。
Iroh 1.0 确保了连接协议和语言 API 的稳定性:一个 iroh v1 端点将能够与另一个 iroh v1 端点通信,无论其小版本号或语言如何。
未来,我们可能会独立地对这两个方面进行版本控制,例如:我们可能会发布某个语言 API 的 v2 版本,但保持连接协议层面的兼容性。**任何影响 iroh 连接协议稳定性的变更,都将始终伴随一个主版本发布。**
1.0 是 iroh 的第一个主版本,我们同时公布了对客户的支持计划:**阅读我们的支持计划**(https://docs.iroh.computer/about/release-policy#support-policy)
简而言之:
- 1.0 之后的主版本和小版本将按计划提供支持。
- 0.35 小版本将不再有后续更新。公共中继服务对 0.35x 的支持将持续到 **2026 年 12 月 31 日**,更多细节见下文。
- 我们不打算在今天之后继续支持 Canary(0.9x)和发布候选版本(1.0.0-rcX)。
需要注意的是,1.0 版本包含大量 bug 修复和改进。如果你在更早的版本中遇到问题,在提交 bug 报告之前,我们希望你先尝试升级到 1.0,确认问题是否仍然存在。
我们维护着一组公共中继服务,通常通过构建端点时的 "n0" 预设来访问。
| 版本 | 公共中继服务运营截止日 |
|------|------------------------|
| v1.0 | 直至生命周期结束 |
| v0.35x | 2026年12月31日 |
| v0.9x 及 v1.0.0-rcX | 2026年9月30日 |
每次发布后,我们通常会在 24 小时内将公共中继服务更新到最新版本。如果中继服务的连接协议发生变更,我们将提供新的 URL,以便旧客户端继续工作。
一如既往,中继服务的二进制文件本身是开源的,我们通过 iroh 服务提供托管中继。公共中继对中继流量设有速率限制,该限制可能随时更改。
互联网应该建立在通过密钥拨号的基础上,建立在开箱即用的连接之上,建立在安全且默认走直连的连接之上。借助 1.0,你现在拥有一个成熟的网络栈,可以放心地集成到你的应用中。现在是时候基于 iroh 进行构建了,我们迫不及待地想看到你的成果。
查看 **iroh 快速入门指南**(https://docs.iroh.computer/quickstart)以开始应用开发。
加入讨论:**Reddit**(https://www.reddit.com/r/rust/comments/1u6it5w/iroh_10_dial_keys_not_ips/) | **Hacker News**(https://news.ycombinator.com/item?id=48542480) | **Bluesky**(https://bsky.app/profile/iroh.computer/post/3modkbhkxvs26) | **X.com**(https://x.com/iroh_n0/status/2066534955421708692)
Iroh 是一个开箱即用的“拨号到任意设备”网络库。通过组合由现成协议组成的生态系统来获取你所需的功能,或者在使用干净的抽象层(基于原始管道)时完全自定义。Iroh 是开源的,并已在数十万台设备上投入生产。要开始使用,请查看我们的**文档**(https://iroh.computer/docs),直接深入**代码**(https://github.com/n0-computer/iroh),或在我们的 **Discord 频道**(https://iroh.computer/discord)与我们交流。
相似文章
n0-computer/iroh
Iroh 是一个用于点对点网络的 Rust 库,它通过公钥简化端点连接,使用打洞技术和 QUIC 并配备后备中继服务器,还提供了诸如 blob、gossip 和 docs 等可组合协议。
chriskohlhoff/asio
asio C++ 库 1.38.1 版本已发布,提供网络和底层I/O功能。
一款由iroh驱动的智能风扇
本文演示了如何使用ESP32微控制器和iroh网络库构建智能风扇,实现无需云服务的点对点控制。
irken:一个微型、可定制、功能齐全的IRC客户端
irken 是一个小巧、可定制、功能齐全的IRC客户端,面向想要轻量且可自定义聊天客户端的用户。
Infranode: 无密钥、开源 MCP 服务器,面向 AI 代理。
Infranode 是一个无密钥、开源的 MCP 服务器,专为 AI 代理设计,简化安全通信。