zrok 推荐,开源自托管的内网穿透与文件分享

想把家里电脑上的网页演示发给同事看,或者临时分享一个文件夹,常见做法是 ngrok 开隧道,免费档限制多,服务本身闭源。zrok 走了另一条路,构建在 OpenZiti 零信任网络之上,Apache 2.0 开源,客户端服务端全部可以自托管。我把官方文档、定价页和两轮 Hacker News 讨论读完,把这款工具的能耐和门槛都摸清了。

主要功能

zrok 用 Go 写成,由 NetFoundry 团队维护,GitHub 星标 4700,最新版 v2.0.4 今年 5 月发布,v2 的命令名叫 zrok2。它能分享的东西按官方后端模式分七类。HTTP 类四种,proxy 把本机任意 Web 服务转发出去,web 把本地目录发布成可浏览的文件索引,给同事临时发一批文件两行命令解决,drive 用 WebDAV 暴露目录可以直接挂载成网络盘,caddy 内建了一台 Caddy 服务器供自定义站点。另有裸 TCP、裸 UDP 转发和 SOCKS5 代理三种模式,Minecraft 服务器这种纯 TCP 场景也能穿。

分享分公开与私有两种形态。公开分享面向没装任何客户端的普通访客,得到一个 share.zrok.io 域名下的地址,关掉分享即失效。私有分享是官方眼里的特色,对方需要装 zrok 并持有你给的 share token,全程点对点加密,任何一方都不必开放防火墙端口,全部后端模式都支持。分享还分临时与保留两类,保留的分享重启后仍在,适合长期挂着的自托管服务,两类合计占用五十个后端配额。

穿透能力来自底层的 OpenZiti。设备以 x509 证书身份接入网络,访问控制基于身份而非 IP,出站连接即可工作,NAT 后面的机器也能被访问到。免费托管层的额度给得明白,每日 5GB 带宽、25 个环境、50 个分享后端、50 个私有访问前端,公开分享另有速率限制,每 IP 每 300 秒 2000 次请求。想彻底摆脱限制,官方提供 Docker Compose 一键自托管栈,配好泛域名与几个端口就能跑,生产环境建议前置 Caddy 做 TLS。

解决了什么需求

从 ngrok 迁过来的用户最有发言权。HN 用户 bredren 的原话是 ngrok 已经完全丢了灵魂,转向 zrok。vineyardmike 在同帖向困惑的读者解释,这是基于 OpenZiti 的隧道与资源共享工具,定位一说就透。开发者 dovholuknf 本人在 HN 答疑时给出定位,与 ngrok、Tailscale Funnel、Cloudflare Tunnel 属同类,最大差异是彻底开源且可全自托管,服务方式常驻运行也不会超时。Reddit r/selfhosted 有两个帖子都在找能穿 NAT 的便宜方案,评论里的评价是它跟 ngrok 全局等价且开源,有人拿它跑 Minecraft 服务器,Cloudflare Tunnel 不支持 UDP 的空档正好由它补上。商用需求注意一点,更高档位没有公开标价,需要联系销售谈。

看不懂的批评也存在。kerkeslager 当年直言读不懂官网的定位描述,whisk 读完 OpenZiti 主页后自称得了零信任恐惧症。概念门槛是真的,这块放到注意事项说。

注意事项

使用托管服务需要注册 myzrok.io 账号,到控制台取 token 再启用,未绑信用卡的免费账号,公开分享首次访问会先看到一页反钓鱼提示,这是官方防滥用的设计。安全模型依赖分享者的信任根,private share 的 token 别乱给。性能预期要摆正,开发者在 HN 承认 overlay 网络常会比 WireGuard 直连慢,自家没有公开基准数据。自托管栈涉及控制器、路由器、泛域名解析与多个端口,新手配置量不小,开发者自己也承认多实例守护的配置还不够顺手,文档是主要救星。版本上有个已修的坑,旧版进程收到终止信号时可能误删保留的分享记录,直接用 v2.0.4 即可绕开。安装走官方脚本一行搞定,macOS 用户用社区维护的 brew formula,自托管实例还能开邀请制自助注册。

总结

穿透类工具的选择题,说到底是把信任交给谁。zrok 把协议、服务端、客户端全部开源,免费层够日常用,想抠细节还能整套搬回家。接受它比 ssh 隧道多出来的概念成本,换来的是一条可以自己审计的通路。临时分享用免费档起步,量大再自托管,这条路它的用户已经替你走过一遍,踩坑笔记在 HN 帖子里都翻得到。每日 5GB 的免费流量,日常分享场景绰绰有余。

来源

  • 官网与定价页 https://zrok.io/ https://zrok.io/pricing/
  • GitHub 仓库 https://github.com/openziti/zrok
  • 后端模式文档 https://github.com/openziti/zrok/blob/main/website/docs/concepts/backend-modes/index.mdx
  • 私有分享文档 https://github.com/openziti/zrok/blob/main/website/docs/concepts/private-shares.mdx
  • 服务限制文档 https://github.com/openziti/zrok/blob/main/website/docs/myzrok/service-limits.md
  • Docker 自托管文档 https://github.com/openziti/zrok/blob/main/website/docs/self-hosting/deployment/docker.mdx
  • Hacker News 2023 讨论 https://news.ycombinator.com/item?id=34709487
  • Hacker News 2024 讨论 https://news.ycombinator.com/item?id=38899402
  • Reddit r/selfhosted 讨论 https://www.reddit.com/r/selfhosted/comments/1exdrg9/alternative_to_ngrok_this_is_a_minecraft_post/