Tunelo

1周前发布 27 00

Tunelo 是一个完全开源、基于 Rust 构建的单二进制文件工具。凭借 QUIC 协议 的强大能力,Tunelo 实现了极低延迟、高吞吐的内网穿透,同时保持了惊人的轻量化:客户端与服务端内存占用仅 8 MB,二进制文件大小约 4 MB,且支持 零拷贝 (Zero-Copy) 数据转发。

所在地:
美国
收录时间:
2026-03-23
其他站点:

在本地开发调试、演示 Demo 或临时分享文件时,将内网服务暴露到公网是高频需求。传统的解决方案如 ngrok 往往伴随着免费版的限速、强制注册账户、闭源以及无法自托管等限制;而其他的开源替代品则在性能、易用性或功能完整性上略有欠缺。

Tunelo 是一个完全开源、基于 Rust 构建的单二进制文件工具。凭借 QUIC 协议 的强大能力,Tunelo 实现了极低延迟、高吞吐的内网穿透,同时保持了惊人的轻量化:客户端与服务端内存占用仅 8 MB,二进制文件大小约 4 MB,且支持 零拷贝 (Zero-Copy) 数据转发。

无需配置文件,无需注册账户,只需一行命令,即可为你的本地端口或文件目录生成一个即时的 HTTPS 公共链接。

核心特性:极简与极致的统一

1. 一行命令,即时隧道

Tunelo 摒弃了复杂的配置流程。无论是暴露本地端口还是提供文件服务,仅需一条指令即可完成。

暴露本地端口:

$ tunelo port 3000
  Tunnel is ready.

  Public URL:  https://swift-fox-3847.tunelo.net  
  Forwarding:  http://localhost:3000

一键启动服务并建立隧道:
Tunelo 支持自动管理子进程。它会启动你的开发服务器,等待端口就绪后自动建立隧道;当隧道关闭时,子进程也会自动清理。

$ tunelo port 3000 -- pnpm dev

2. 内置高性能文件服务器

不同于其他工具仅能转发端口,Tunelo 内置了一个功能完整的 Web 文件服务器。无需安装 Nginx 或运行 Python 脚本,直接通过二进制文件即可浏览目录、预览代码、渲染 Markdown 甚至播放媒体。

# 通过隧道共享当前目录
$ tunelo serve .

# 共享特定构建目录
$ tunelo serve ./dist

# 仅本地预览(不创建公网隧道)
$ tunelo serve . --local

内置浏览器支持的能力包括:

  • 📂 目录浏览与导航
  • 💻 代码语法高亮查看
  • 📝 Markdown 实时渲染
  • 📄 PDF 在线预览
  • 🎬 媒体文件播放器
  • 📊 数据表格查看
  • ⚡ 支持 HTTP Range 请求(大文件分片加载)

前端界面在编译时通过 include_dir! 宏直接嵌入二进制文件中,真正实现了“单文件交付”。

3. 基于 QUIC 的极速传输

Tunelo 的数据平面完全基于 QUIC 协议 (基于 UDP),相比传统的 TCP/HTTP2 隧道,具有显著优势:

  • 多路复用:单个连接即可处理多个并发请求,无队头阻塞。
  • 低延迟:握手更快,连接迁移更平滑。
  • 零拷贝中继:数据在中继节点不进行任何 HTTP 解析或缓冲,直接在 TCP 套接字与 QUIC 流之间进行双向字节拷贝。
  • 加密传输:默认全链路加密,保障数据安全。

数据流向架构:

浏览器 (HTTPS) → 中继服务器 → (QUIC 流) → 客户端 → localhost:3000
  • 控制流:持久化 QUIC 流,负责心跳与注册。
  • 数据流:每个 HTTP 请求对应一个新的双向 QUIC 流,原始字节透传。

性能标杆:轻量级的奇迹

在追求功能的同时,Tunelo 对资源占用进行了极致优化。以下是其在压力测试下的表现:

指标数值备注
中继内存占用8 MBRSS 常驻内存
客户端内存占用8 MB极低资源消耗
二进制文件大小~4 MB易于分发与部署
隧道额外开销~14%相比直连的性能损耗极低
顺序延迟~6ms每请求增加延迟
吞吐量670 req/s单核高压测试
错误率0稳定性极佳

无 GC (垃圾回收) 暂停,无运行时开销,纯粹的异步 Rust 带来了确定性的性能表现。

完全自主:自托管中继服务器

不想使用公共中继?Tunelo 的客户端与中继完全解耦,且中继服务端也是同一个二进制文件。你可以轻松在任何 VPS 上部署自己的中继,掌握数据主权。

部署步骤:

  1. 构建/获取二进制文件
    cargo build --release --bin tunelo
    
  2. 运行中继
    ./target/release/tunelo relay --domain yourdomain.com
    
  3. 客户端连接
    tunelo port 3000 --relay yourdomain.com:4433
    

自托管前置要求:

  • 一个拥有通配符 DNS 解析 (*.yourdomain.com) 的域名。
  • 有效的通配符 TLS 证书。
  • 使用 Nginx 或其他反向代理进行 TLS 终止(端口 443)。
  • 开放 UDP 端口 4433 用于 QUIC 隧道连接。

竞品对比:为什么选择 Tunelo?

特性TunelongrokboreCloudflare Tunnel
开源程度✅ 完全开源❌ 核心闭源✅ 开源❌ 闭源
自托管支持✅ 支持❌ 不支持✅ 支持❌ 不支持
账户依赖❌ 无需✅ 需要❌ 无需✅ 需要
传输协议QUICHTTP/2TCPHTTP/2
路由方式子域名子域名TCP 端口子域名/TCP
TLS 支持✅ 内置✅ 内置❌ 无✅ 内置
内存占用8 MB~50 MB~10 MB~30 MB+
二进制大小~4 MB~25 MB~5 MB~20 MB+
文件服务✅ 内置❌ 无❌ 无❌ 无
  • vs ngrok:Tunelo 提供了免费无限制的开源替代,且内存占用仅为 ngrok 的 1/6,支持自托管避免供应商锁定。
  • vs bore:Tunelo 基于子域名路由而非端口,更符合 HTTP 习惯;内置 TLS 终止,安全性更高;独有的文件服务功能使其场景更广。
  • vs Cloudflare Tunnel:Tunelo 摆脱了对 Cloudflare 生态的依赖,可在任意 VPS 上部署,配置复杂度大幅降低(无需命名隧道、DNS 记录配置)。

安全设计原则

Tunelo 在设计之初就将安全作为核心考量:

  • 仅出站连接:客户端主动连接中继,无需在本地防火墙开放任何入站端口。
  • 端到端加密:基于 QUIC 的内置加密与中继端的 TLS 终止,确保数据传输安全。
  • 零数据存储:中继节点仅作为字节拷贝的管道,不记录、不存储任何流量内容。
  • 访问控制:支持通过 --password 参数为隧道设置访问密码,防止未授权访问。
  • 数据主权:通过自托管中继,企业和个人可完全掌控数据流向,满足合规需求。

AI 智能体原生支持

Tunelo 专为 AI 编码时代设计。项目包含标准的 SKILL.md 文件,可被各类 AI 智能体(如 Cursor, GitHub Copilot 等)识别。

只需运行以下命令,即可教会你的 AI 助手如何使用 Tunelo:

npx -y skills add tunelo/tunelo

安装后,当你向 AI 发出“分享这个本地服务”或“暴露我的开发服务器”指令时,AI 将自动调用 tunelo port 命令,智能处理端口检测与隧道建立,极大提升开发效率。

快速开始

无需复杂安装,只需两个终端即可与世界共享你的本地服务。

第一步:启动本地服务

python3 -m http.server 3000

第二步:暴露到公网

tunelo port 3000

即刻获得一个 https://xxx.tunelo.net 的公共链接。默认连接至 Tunelo 公共中继,也可通过 --relay 指定私有中继。

Tunelo 让内网穿透变得像 ping 一样简单,却拥有企业级的性能与安全。无论是独立开发者、开源贡献者还是企业运维团队,这都是值得尝试的新一代隧道工具。

数据统计

相关导航

暂无评论

none
暂无评论...