想把家里 NAS、树莓派或自建服务轻松放到外网,却怕配置太麻烦、性能不稳或费用爆表?这篇文章直接告诉你,用最省事、最省钱、最省脑细胞的方式把内网服务搬到公网,让你省去一堆抓狂的调参过程。
先说结论:不同需求选不同工具
大家普遍以为越贵越好,或者开源工具一定慢,这都是误区。真正决定你该选哪个的,是你要暴露几个端口、设备资源有多紧张、还有没有预算这几个关键点。
核心概念拆解(第一层)
- 内网穿透的本质:把一根「自来水管」(本地服务)搬到「公共水塔」(公网服务器)上,水塔把水(流量)再倒回你的管子里。
- 两方角色:公网服务器(中转站)和内网客户端(要被倒出的机器)。
- 常见需求:只要一条隧道(SSH),还是要多端口、多协议、甚至要加密的全套方案。
四大工具的核心特性(第一层对比)
| 特性 | frp | rathole | NPS | ngrok |
|---|---|---|---|---|
| 协议支持 | TCP/UDP/HTTP/HTTPS/HTTPS+TLS | TCP/UDP,支持TLS/Noise | 几乎全部(TCP/UDP/HTTP/HTTPS/SOCKS5) | HTTP/HTTPS/TCP |
| 资源占用 | 中等(≈5 MiB) | 极低(≈0.5 MiB) | 中等偏上(≈8 MiB) | 中等(受云端节点限制) |
| 部署难度 | 需要写两份配置,门槛一般 | 配置最简,单文件即可 | 提供 Web 管理面板,最友好 | 只下载二进制或用 SaaS,几秒搞定 |
| 安全机制 | Token + TLS | Token + 可选 Noise/TLS | Token + IP 白名单 + Web UI 控制 | 官方 TLS + 付费版支持 OAuth/SAML |
| 是否免费 | 完全免费 | 完全免费 | 完全免费(自建) | 免费版功能受限,付费解锁 |
| 适用场景 | 需要多协议、复杂负载均衡 | 资源受限设备(路由器、树莓派) | 想要可视化管理、团队共用 | 临时演示、快速原型、外部客户访问 |
把误区抛到一边,真正决定选型的三大因素
- 设备资源:如果你的客户端只有 256 MiB 内存(比如家里路由器),选 rathole,省内存不抢系统肥。
- 端口数量 & 协议多样性:要同时映射 SSH、Web、数据库,且希望同一个公网端口复用多服务,frp 的
vhost_http_port能搞定。 - 运维成本:如果你不想写配置文件,只想点几下就开通,用 ngrok 免费版或付费版最省事;如果团队需要审计、权限分配,NPS 的 Web UI 能省掉大量手动检查。
实战示例:把家庭 NAS 的 SSH 暴露出来
下面分别用四个工具展示「只要一行命令」的思路,帮助你快速挑选。
- frp:
# 服务器端 frps.toml [common] bind_port = 7000 token = "my_secret" [ssh] bind_port = 6000
# 客户端 frpc.toml [common] server_addr = "myvps.com" server_port = 7000 token = "my_secret" [ssh] type = "tcp" local_port = 22 remote_port = 6000
运行./frps -c frps.toml与./frpc -c frpc.toml即可。 - rathole:
# server.toml [server] bind_addr = "0.0.0.0:2333" [server.services.nas_ssh] token = "my_secret" bind_addr = "0.0.0.0:5202"
# client.toml [client] remote_addr = "myvps.com:2333" [client.services.nas_ssh] token = "my_secret" local_addr = "127.0.0.1:22"
运行./rathole server.toml与./rathole client.toml,外网myvps.com:5202直通 NAS。 - NPS:
# nps 配置(省略 UI 步骤) # 在 Web 面板里点「添加服务」→「SSH」→「端口 6000」 # 客户端下载 nps client,填写 server_ip、token、local_ip:22
一键开关,适合多人共享同一个服务器。 - ngrok:
# 注册账号后获取 auth token ngrok config add-authtoken YOUR_TOKEN ngrok tcp 22
ngrok 会返回类似tcp://0.tcp.ngrok.io:12345的地址,直接 SSH 即可。
到底选哪一个?让我们把情景化一下
- “我只有一块旧路由器,想把家里媒体库的 32400 端口外放,且不想占太多内存。” → 选 rathole,二进制小、CPU 占用低。
- “我在公司内部有 20 台机器需要统一映射到同一个公网 IP,想让运维同事通过 UI 管理。” → 选 NPS,自带面板、权限细分。
- “我是一名自由开发者,要给客户演示一个用 React 写的 web 项目,想 5 分钟内搞定。” → 选 ngrok,下载即用。
- “我准备在自家服务器上部署多个微服务,需要 HTTP/HTTPS 复用、流量统计、零成本。” → 选 frp,功能最全且社区活跃。
小技巧:组合使用提升弹性
如果你担心公网服务器单点故障,完全可以把 frp 当主隧道,rathole 用作备份;或者在不同网络环境下切换 ngrok 的免费隧道与自建的 frp。
之前我们聊过如何在 cloudflare 中配置 DNS 让内网服务更安全,今天可以把这些技巧和上述四个工具结合起来,形成“一键回滚、随时切换”的方案,详情可以去frp 项目或rathole 项目看看源码。
结语 & 互动
内网穿透其实没有什么神秘的黑科技,只是把「本地的水管」搬到「公共的水塔」而已。选对工具,你就省下时间、流量和金钱。下面把你最想用的方案写在评论区,或者吐槽一下自己的“穿透踩坑”经历,咱们一起聊聊如何更顺畅地把家里服务器搬上云!
评论 (0)