如果你有过这样的经历:在家里或公司搭了一个网站、一台测试服务,想让外面的人访问却连不上;或者出差在外想远程打开家里的 NAS 取个文件——这些问题的根源都一样:设备在内网里,外网没法直接访问它。

解决这类需求的技术叫内网穿透,也叫隧道。它做的事情很明确:给处于内网的服务开一条通往公网的通道。本文挑选 11 款轻量、开源或免费的工具,逐个说明适用场景与限制。

先明确一件事:内网穿透的正当用途是开发调试、远程协作、自有设备互访。把服务发布到公网之后,访问控制必须自己做——不要把内网服务无保护地暴露在互联网上,那等于把家门敞开。

可用于内网穿透的隧道工具,或开源或免费

1. 内网穿透到底解决什么问题

内网穿透的典型场景有三类:

  1. 网站 / Web 开发:本地写完想让同事或客户直接看效果,不用先部署到服务器;
  2. 本地服务调试:接收第三方平台(支付、消息、OAuth)的 Webhook 回调,必须有一个公网可达的地址;
  3. 远程访问自有设备:出差时访问家里的 NAS、测试机、开发板。

隧道技术发展至今,早已不只是”加密通道”,还融合了访问控制、路由选择、可用性管理等能力。选工具时,关键看四点:是否需要自己准备公网服务器、支持哪些协议、隧道数量限制、能否自定义域名。

2. 本文的筛选标准

被排除的工具/平台,原因如下:

  • 必须在公网服务器上私有化部署的——只是调试个小功能,成本太高;
  • 只提供有限时段免费试用的——要用的时候正好过期;
  • 免费额度过于苛刻的(月请求次数、月流量、连接时长都卡得很死);
  • 因被滥用而严重污染、已被大面积屏蔽的。

3. 工具逐个介绍

§ loophole

Loophole 通过反向代理把本地服务暴露到公网,一条命令即可:告诉它本地服务监听哪个端口就行。支持 HTTPS、WebDAV 与 HTTP 基本认证,客户端覆盖 Windows / Linux / macOS。从公网到本地的流量使用 Let’s Encrypt 证书加密,并用 Auth0 做身份验证。支持同一端点下运行多条并行隧道与端到端加密。

§ localhost.run

无客户端工具,直接用 SSH 就能把本地应用变成公网可访问的 URL。因为所有主流操作系统都自带 SSH,无需下载任何东西,也无需注册账号。提供永久免费计划,但域名会定期变化且有速度限制;注册并添加 SSH 密钥后可让分配的域名保持更久。

  • 是否开源:否
  • 地址:https://localhost.run/
  • 协议:http、https 及其他基于 TLS 的应用
  • 隧道数:3
  • 支持自定义域名:是(仅付费计划)
§ localtunnel

基于 Node.js 的老牌内网穿透工具,非常流行,无需改 DNS 和防火墙设置即可把本地服务暴露出去,很适合前端页面调试与外部 API 回调测试。除了命令行,也提供 API 供自动化集成使用。

§ expose

用 PHP 编写的开源隧道应用,适合 PHP 开发者。注册后可获取免费令牌使用官方服务器;pro 版支持自定义域。因为完全开源,Expose 服务器支持私有化部署,也能用中间件扩展。提供 CLI 与 Web 仪表板。

§ bore

用 Rust 写的极简 TCP 隧道,代码只有约 400 行,只做一件事:把本地端口转发出去。易于安装、易于自托管,也提供 Docker 镜像。执行一条命令即可获得一个随机域名,映射到本地指定端口。

§ tabserve

无客户端的 Web 应用,用 Cloudflare Worker 加浏览器 Web Worker 组成反向代理,可从任何机器上把本地 Web 服务共享出去,也能用来接收 Webhook。使用前需要把 Worker 代码部署到自己的 Cloudflare 账号,并配置 DNS。

  • 是否开源:否
  • 地址:https://tabserve.dev/
  • 协议:http(s)
  • 隧道数:无限制
  • 其他限制:不支持 WebSocket;请求速率有限制;大响应会拖慢 Worker
§ staqlab

定位为公共隧道服务的免费替代方案。没有付费选项,但服务持续有效——这一点在同类免费服务里相当难得(不少公共隧道服务已陆续关闭)。它是轻量级的反向代理 SSH 隧道客户端,免费支持自定义域,便于与第三方应用集成,并提供带流量拦截器的 GUI 面板,可用于调试请求/响应、分析响应时间。

§ jprq

jprq(join public router, quickly)是一个免费开放的隧道工具,支持暴露 TCP 协议(HTTP、SSH 及主流数据库),可指定自定义子域名。先从官网获取 token 即可使用。

§ zrok

基于 OpenZiti 零信任网络的应用隧道,定位为”下一代共享平台”,目标是让共享网络与文件资源变得简单安全。支持自托管,也可使用官方免费托管服务。支持 HTTP/S 反向代理、文件共享与 TCP/UDP 端点代理。

一个很实用的特性:可以指定本地文件夹作为 Web 后端,直接把目录变成一个网站,无需额外配置 Web 服务器。

§ telebit

仍处于早期开发阶段的隧道工具,可用于本地开发的远程调试、网站发布、文件分享与 SSH 访问,支持 HTTP、HTTPS、SSH、TCP 多种协议。

§ cpolar

国内团队做的内网穿透服务,免费用户提供 1M 带宽,对前端调试和非多媒体类网站发布完全够用。国内节点访问速度上有天然优势,适合访问者主要在国内的场景。

  • 是否开源:部分组件开源
  • 地址:https://www.cpolar.com/
  • 协议:http、https、tcp
  • 支持自定义域名:是

4. 选型建议

你的需求推荐
只想临时演示一下,不想装任何东西localhost.run
前端页面调试、Webhook 回调localtunnel、staqlab
需要稳定的自定义域名loophole、staqlab、cpolar
想自己完全掌控(私有化部署)expose、bore、zrok
访问者主要在国内cpolar
只用 SSH,越简单越好localhost.run

5. 安全注意事项(重要)

把内网服务发布到公网之前,务必先做好这几件事:

  1. 加访问控制:能加 HTTP Basic Auth 就加;能限定来源 IP 就限定;
  2. 不要在隧道里暴露敏感服务:数据库、管理后台、SSH 端口这类,不要随手发布出去;
  3. 用完即关:临时调试的隧道,用完立刻停掉,不要长期挂着;
  4. 只发布你有权发布的服务:不要用它去访问或暴露他人网络中的资源;
  5. 注意合规:隧道的正当用途是开发调试与自有设备互访。使用隧道规避所在网络的合法管理策略,不属于本文讨论的范畴。

内网穿透本身是标准技术,工具也都正规开源;真正决定安全与否的,是你有没有把访问控制做到位。把上面五条记住,这类工具就能安心用起来。