家里没有公网 IP、运营商给了大内网,或者只想从外面连回自己的 NAS/开发机,就需要"内网穿透"。内网穿透指的是一种让位于 NAT 或防火墙后面、公网无法直接访问的设备对外提供服务的办法。本文把常见方案分成三类——组网型(Tailscale、ZeroTier)、反向端口映射(frp)、托管隧道(Cloudflare Tunnel、ngrok),逐类讲清原理、是否需要一台有公网 IP 的服务器、免费额度,并给出本站用 frp v0.71.1 在同一台机器上实测的隧道开销数字,最后附避坑清单与"说法→出处"对照表。
信息核验时点:2026-11-04(各产品版本号与免费额度以当日官方发布页/定价页为准;实测数字为本站本机回环测量,非广域网速率)
本文要点
- **先分三类再选型**:组网型(Tailscale/ZeroTier)把多台设备拼成一个加密虚拟网,通常不需要自备公网服务器;反向映射(frp)把内网端口映射出去,**必须自己有一台公网服务器**;托管隧道(Cloudflare Tunnel/ngrok)由厂商提供公网入口,你只需跑一个出站的连接器。 - **要不要公网服务器**决定门槛:只有 frp 需要;Tailscale 可自建控制面(Headscale),ZeroTier、Cloudflare Tunnel、ngrok 都不需要你暴露公网 IP 或开入站端口。 - **速度不由软件决定,而由"走没走中继"决定**:能 UDP 打洞直连时接近专线;打洞失败被 Tailscale DERP、ZeroTier 根服务器或厂商边缘节点中继时,延迟和丢包都会变差。 - **实测口径**:本站在同机回环测得 frp 隧道本身相对直连的吞吐——开启默认 TLS 时约为直连的 43%,关掉 TLS 约 66%;这是 CPU 受限的单机数字,真实广域网受上行带宽限制,frp 开销通常看不出来。 - **边界**:本文针对个人与小团队的常见选型;企业合规、跨境专线不在范围内。免费额度、版本随时变化,以官方页为准。一、先分清三类方案,别一上来就比软件
内网穿透看着工具多,其实底层只有三种路子,先对号入座再比具体软件:
| 类别 | 代表 | 怎么打通 | 需要自备公网服务器 | 典型场景 |
|---|---|---|---|---|
| 组网型(mesh VPN) | Tailscale、ZeroTier | 设备各装客户端,拼成一张加密虚拟局域网,点对点为主、中继兜底 | 不需要 | 多地设备互访、连回家里 NAS |
| 反向端口映射 | frp | 公网服务器跑 frps、内网机器跑 frpc,把内网端口映射到公网端口 | 需要 | 把内网 Web、SSH、远程桌面暴露出去 |
| 托管隧道 | Cloudflare Tunnel、ngrok | 装一个只做外连的连接器,厂商给你公网入口 | 不需要 | 临时演示、给 HTTP 服务套个域名 |
一句话:只是想自己几台设备互相访问,选组网型;要把某个服务公开给外人访问,选反向映射或托管隧道。 本站那篇远程办公离不开的 VPN,到底是什么?——原理、选型与排障一篇讲透把"虚拟专用网"的原理讲得更细,可与本篇对照看。
二、组网型:Tailscale 和 ZeroTier,谁是装好就能用的那个?
两者都不需要你准备公网服务器,装好客户端登录就成网,差别在协议和额度。
Tailscale 基于 WireGuard 隧道协议,官方对 DERP(Designated Encrypted Relay for Packets)中继服务器的定位很清楚:正常走点对点直连,只有在"硬 NAT、防火墙"导致其它连接方式都不行时,才退回到用 DERP 服务器当中继。截至核验日最新稳定版是 v1.104.5(2026-11-03 发布),官方说稳定版大约每四周发一次、以偶数次版本号标识。免费档(Personal)是 $0 永久免费、用户设备不限、最多 6 个用户、3 个 ACL 组、50 个带标签资源,仅限非商业用途。想彻底不依赖官方控制面,可以用开源的 Headscale 自建协调服务器。合规方面,官网写明 Tailscale 已完成 SOC 2 Type II 认证,并与安全公司 Latacora 合作做安全审计(审计报告按需索取,未公开)。
ZeroTier 则是自研的点对点协议,把自己形容成"给地球用的可编程以太网交换机",提供类似 VXLAN 的虚拟二层(VL2),能穿透路上的 NAT 和有状态防火墙。它不需要你自建服务器:根服务器全球只有"一个 planet",由 ZeroTier 公司作为免费服务运行,目前四台。免费档 Personal 版=10 台设备、一个网络、1 名管理员,仅限个人非商业用途,比 Tailscale 的"设备不限"要少。当前支持版本为 v1.16.x(另兼容 1.14.x/1.12.x),最新为 1.16.2(2026-05-28)。安全上,官方文档写明 2020 年 3 月 Trail of Bits 审阅过其协议与密码学设计;同时官方也坦诚 ZeroTier 目前不提供前向保密。
一个关键提醒:ZeroTier 官方说中继(经根服务器转发)是"免费但慢",副作用是延迟升高、可能丢包——能不能打洞直连,才是速度的分水岭,不是它俩谁品牌响。
三、反向映射:frp 为什么一定要你自己有台公网服务器?
frp 的定位在 README 里写得很直白:它是一个快速反向代理,把 NAT 或防火墙后面的本地服务器暴露到公网,支持 TCP、UDP,以及 HTTP、HTTPS,还提供 P2P 直连模式。它的工作模型是:把 frps 程序和服务器配置放在一台有公网 IP 的机器上,把 frpc 放在外网直连不到的内网机器上——所以 frp 是这几类里唯一必须自备公网服务器的。认证默认用 token(也支持 OIDC)。协议许可是 Apache-2.0(常被误写成 MIT),最新稳定版 v0.71.1(2026-10-14)。另外 SOCKS5 在 frp 里是内置插件(socks5),不是核心代理类型,别和"暴露端口"混为一谈。
顺带纠正一个常见误解:自 v0.50.0 起 frp 的 transport.tls.enable 默认就是 true,也就是默认启用 TLS 加密传输——这既是好事(多一跳加密),也是本文实测里那部分开销的来源。
四、实测:frp 隧道自身到底吃掉多少吞吐?
这台机器是 i3-8100(4 线程)、Windows 10、frp v0.71.1。我在同一台机器上用 Python 起一个源站(127.0.0.1:18000),再让 frpc→frps 建一条 TCP 隧道映射到 127.0.0.1:12000,下载同一个 300MB 文件,比较"直连源站"和"穿过 frp 隧道"的单流吞吐(取四次中位数):
| 路径 | 中位吞吐 | 相对直连 |
|---|---|---|
| 直连源站(127.0.0.1:18000) | 约 10,180 MB/s | 100% |
| 穿过 frp 隧道,默认 TLS 开启 | 约 4,361 MB/s | 约 43% |
| 穿过 frp 隧道,显式关掉 TLS | 约 6,711 MB/s | 约 66% |
怎么读这组数:同机回环是纯 CPU/内存受限的极端场景,直连能跑到约 10 GB/s,说明瓶颈根本不在网卡。隧道把吞吐砍到 66%(关 TLS),是"数据在 frpc、frps 两个进程间多拷了两次、还要做连接管理"的固定成本;再开启默认 TLS,又叠加加解密,掉到约 43%。换成这台机器或多线程流,数字会变,别把它当通用性能指标。
更重要的落地结论:真实广域网里你几乎看不到这个开销。家用宽带上行往往只有几十 Mbps,早已把链路卡死在带宽上,frp 的转发与 TLS 那点 CPU 成本完全被网络瓶颈淹没。只有在千兆内网、或老 CPU 上跑大流量时,frp 自身开销才可能成为瓶颈——届时可考虑 transport.tls.enable = false(在可信通道内)或换更靠近的服务器。
五、托管隧道:Cloudflare Tunnel 和 ngrok,不想露公网 IP 时怎么选?
如果你连"开一个入站端口"都不想,可以用只做外连的托管隧道。
Cloudflare Tunnel 装一个叫 cloudflared 的轻量守护进程,官方描述它是"仅出站、后量子加密的连接",卖点正是"不开入站端口、不暴露公网 IP、没有攻击面"。它支持 HTTP、HTTPS、TCP、SSH、RDP 等,所有套餐可用;配额上,单条隧道的活跃 cloudflared 副本上限为 25、每账号隧道上限 1000。不想注册也能用"快速隧道":cloudflared 会分配一个随机的 trycloudflare.com 地址,但只在进程运行期间存在,适合临时演示。
ngrok 走类似路线,但对免费档的限制更硬。据官方"Free Plan Limits",免费档是 每月 1GB 数据出、每月 20,000 次 HTTP 请求、每月 5,000 次 TCP 连接、最多 3 个在线端点、3 个并发 agent、1 个用户,且不支持 TLS 端点;并且对免费档的 HTML 浏览器流量会插一个提示页(anti-phishing interstitial)。当前 agent 版本为 3.39.13(2026-10-22),付费 Hobbyist 约 $10/月。这里要特别纠一个流传很广的旧说法:ngrok 免费档现在给的是绑定账号的固定 dev 域名(重启 agent 不变)、端点也不再有时长超时,"每次随机临时域名""会话 2 小时过期"是老规则,别照旧文档选型。
国内也有类似的开箱即用产品:花生壳、蒲公英(贝锐 Oray)。它们主打免配置,但免费额度各家页面口径不一致(花生壳有页面写"1Mbps/每月 1GB/最多 2 条隧道",另一 FAQ 写"送 5G/月流量"),蒲公英则称每账号送 3 个组网体验授权、经转发服务器中继时免费带宽约 2Mbps/节点。正因为这些数字在官方页之间自相矛盾,本文不给你一个"准数",选型前务必以你注册时看到的实时页面为准。
六、避坑清单:这些"你以为的"和"官方写的"往往不一样
- 别拿旧教程的额度当真:Tailscale 早年的"3 用户/100 设备"、ZeroTier 的"25 或 50 设备"、ngrok 的"临时域名/2 小时超时"都已被官方现行页取代,以本页第五节核验日数字为准。
- 别把"没写带宽上限"读成"带宽无限":Tailscale 定价页并未公布免费档带宽上限,准确说法是"未声明限额",而不是"无限带宽"。
- 别编造"某某通过了第三方渗透测试":能核实的只有——Tailscale 有 SOC 2 Type II、审计报告(Latacora)按需索取并未公开;ZeroTier 有 2020 年 Trail of Bits 的协议审阅;frp、ngrok、花生壳未检索到公开审计报告。没有出处就不要写。
- 别忽视"走没走中继":打洞成功是点对点、延迟最低;一旦 Tailscale 落到 DERP、ZeroTier 落到根服务器、托管隧道落到厂商边缘节点,都会多出延迟和丢包。这往往比"选哪家软件"更影响体验。
- 别忘了 frp 需要公网服务器:把它和 Tailscale/ZeroTier 并列时容易漏掉这条门槛——它决定了你要不要额外花一台云主机的钱。
- ZeroTier 无前向保密:官方文档明说;对安全要求高的场景要把它纳入考量。
想把这些工具产生的文件在局域网里直接传,不必上公网,可参考局域网传文件不再折腾:LocalSend 从原理到上手的完整指南;若穿透的目标正是访问家里 NAS,先看NAS 选购与办公组建完全指南:从需求分析到落地配置,一篇讲透再决定用哪条隧道。
常见问题
我只想从外面连回家里那台机器,选哪个最省事?
优先 Tailscale 或 ZeroTier 这类组网型:两端装客户端登录即可,不用公网服务器,也不用公网 IP。设备少、想要"点一下就成网",多数人选 Tailscale;需要跨平台二层虚拟网、或想自建控制面(Headscale)再考虑。
我要把内网的 Web 服务公开给陌生人访问,还不想买云服务器,怎么办?
用托管隧道更合适:Cloudflare Tunnel 或 ngrok 都由厂商提供公网入口,你只需跑一个出站的连接器,不用开入站端口。临时演示可用 Cloudflare 快速隧道(进程退出即失效);长期服务要注意 ngrok 免费档的请求数、连接数与每月 1GB 流量限制。
frp 明明要一台公网服务器,为什么很多人还是用它?
因为 frp 免费、开源、可控:你已有云主机(或愿意花一台的钱)时,frp 映射的端口、协议、鉴权全在你手里,没有厂商免费档的额度天花板,也不受第三方中继限速。它适合"已有公网资源、想要稳定长期暴露若干服务"的用户。
穿 frp 隧道会不会明显拖慢我的下载?
按本文实测,同机回环下默认 TLS 让单流吞吐降到直连约 43%、关 TLS 约 66%。但真实家用宽带上行通常远低于此,瓶颈在带宽不在 frp,一般感觉不到。只有千兆内网或弱 CPU 大流量场景,才需要为这点开销优化。
说法 → 出处(核验于 2026-11-04)
| 说法 | 出处 |
|---|---|
| Tailscale 基于 WireGuard;DERP 为硬 NAT 下的兜底中继 | tailscale.com/docs(WireGuard、DERP servers) |
| Tailscale 免费档 $0/设备不限/最多 6 用户/3 ACL 组/50 标签资源、非商用;稳定版 v1.104.5;SOC 2 Type II、Latacora 审计按需索取 | tailscale.com/pricing、/releases、/security |
| Headscale=自托管 Tailscale 控制面 | github.com/juanfont/headscale |
| ZeroTier 自研 P2P 虚拟二层;免费档 10 设备/1 网络/1 管理员非商用;中继"免费但慢";Trail of Bits 2020 审阅;无前向保密;v1.16.2 | zerotier.com/pricing、docs.zerotier.com(protocol/security/relaying/start) |
| frp=反向代理,支持 TCP/UDP/HTTP/HTTPS,需 frps 公网机,默认 token 鉴权,Apache-2.0,v0.71.1;自 v0.50.0 默认启用 TLS | github.com/fatedier/frp(README、releases)、gofrp.org network-tls |
| frp 同机回环实测 43%/66%(直连归一) | 本站台架 D:\tmp\frpbench\bench_frp_tls.py(i3-8100/4 线程、Win10、v0.71.1) |
| Cloudflare Tunnel 仅出站、后量子加密、不开入站端口、协议 HTTP/HTTPS/TCP/SSH/RDP、单隧道 25 副本;快速隧道 trycloudflare 仅运行期存在 | developers.cloudflare.com/tunnel、/tunnel/concepts、/cloudflare-one/account-limits |
| ngrok 免费档 1GB 出/月、20,000 HTTP/月、5,000 TCP/月、3 端点、3 agent、无 TLS 端点、提示页;固定 dev 域名不过期;agent 3.39.13 | ngrok.com/docs/pricing-limits/free-plan-limits、/agent/changelog |
| 花生壳、蒲公英免费额度官方页口径不一致,不给准数 | hsk.oray.com、pgy.oray.com |
本文版本号、额度均于 2026-11-04 依据上述官方页核对;frp 隧道开销为本站同机回环实测,属 CPU 受限场景,不代表广域网速率。数据核验于 2026-11-04。