引子:你肯定遇到过这些"连不上"的时刻

你有没有过这种经历——

出差在外地,客户急着要一份文件,你突然想起它躺在家里电脑的桌面上。打电话让家人帮忙开电脑?对方连开机键在哪都找不到。

周末在咖啡馆,想远程连回公司服务器排查个问题,结果发现公司内网只能从办公室连,VPN 配了半天也没连上。

或者,家里搞了台 NAS 存照片,出门想翻一张老照片,打开 APP 转了半天提示"无法连接"。

这种时候,你就需要一个叫"内网穿透"的东西。

说白了,内网穿透就是帮你解决一个老大难问题:你家(或公司)的设备,在公网上是"隐形"的。外面的人想访问你家里的电脑、NAS、摄像头,就像隔着墙喊话,墙太厚,对方听不见。内网穿透就是帮你在这堵墙上开个小门。


一、先说说,为什么会有"连不上"的问题?

要理解内网穿透,得先搞明白一个事:IPv4 地址不够用了。

你家路由器从运营商那里拿到的是一个公网 IP,但全家几十台设备(手机、电脑、电视、智能家居)都共用这一个 IP。路由器内部给每台设备分配的是"私有 IP"(192.168.x.x 这种),这些地址只能在局域网内用,从外面是访问不了的。

这就好比你住在一个小区,每家每户都有内部房号(私有IP),但整个小区只有一个对外地址(公网IP)。快递员(外部请求)到了小区门口,不知道该送到哪一户——除非你提前告诉门卫怎么转交。

内网穿透就是那个"门卫"。

它有三种主流做法:

  1. 端口转发 + 公网IP:最直接,但运营商不一定给你公网IP,而且暴露端口有安全风险。
  2. 中继转发:通过一台有公网IP的服务器做中间人,帮你转发数据。稳定可靠,但多绕了一圈。
  3. P2P打洞:让两台设备直接建立连接,绕过中间服务器。速度快,但受网络环境限制,不一定都能成功。

二、5款工具,谁适合谁?

工具名称协议/状态一句话说明适合谁
FRP开源,活跃维护高性能、全协议,自建穿透的首选有云服务器,需要稳定长期方案
ZeroTier开源 (GPL v3)创建虚拟局域网,设备像在同一内网多台设备跨地域组网
gonc开源基于P2P"打洞",追求直连低延迟追求P2P直连,不想维护服务器
Spleen开源 (Apache 2.0)轻量级,注重安全审计,基于TLS加密对安全有高要求的场景
rathole开源类FRP,主打轻量化和低资源占用在低配设备上跑穿透

🏆 FRP:最稳的选择,没有之一

如果你手头有一台云服务器(哪怕是 1 核 2G 的最低配),FRP 是闭眼选

它的原理很简单:你有一台公网服务器,FRP 在服务器上跑一个"服务端",在需要穿透的家里电脑上跑一个"客户端"。客户端主动连接到服务端,在服务器上开一个端口,访问这个端口就等于访问了家里电脑的服务。

💡 我自己的用法

我家里 NAS 上的各种服务(文件管理、影音播放、下载工具)全部通过 FRP 暴露在外网访问。跑了两年多,中间升级过版本,没有出过任何问题。稳定到你会忘记它的存在。

优点: 支持 TCP、UDP、HTTP、HTTPS 几乎所有协议,社区活跃,文档齐全,遇到问题搜一下就有答案。

缺点: 需要一台云服务器(月费几十块),流量经过服务器中转,带宽取决于服务器带宽。

🌐 ZeroTier:让设备像在同一个房间

如果说 FRP 是"开小门",ZeroTier 就是造一座虚拟城市

你安装了 ZeroTier 之后,它会给你所有的设备分配一个"虚拟 IP"。不管这些设备在上海、北京还是纽约,装了 ZeroTier 之后,它们就像在同一个局域网里——可以直接用 IP 互相访问。

最适合的场景: 公司有台服务器,家有几台电脑,偶尔出差带笔记本。三地设备想互相访问,又不想每台都配置穿透。ZeroTier 装上,全搞定。

有点遗憾的地方: 它依赖一个"行星服务器"做协调,这服务器在海外,连接有时不太稳定。不过你可以自建 Moon 节点来加速。

⚡ gonc:追求极致的P2P直连

gonc 的理念是:能不中转,就不中转。

它利用公共的 STUN 服务器尝试"打洞",如果成功,两台设备直接建立连接,不经过任何中间服务器。延迟极低,非常适合远程桌面这类对延迟敏感的场景。

优点: 直连延迟低,无需维护服务器。

缺点: 打洞成功率受网络环境限制。有些严格的防火墙(比如公司网络)可能打洞失败,这时候就只能降级用中继。

🔒 Spleen:安全至上的轻量级选手

Spleen 的设计思路跟前面几个不太一样——它把安全审计放在第一位。

所有的连接都经过 TLS 加密,并且有详细的连接日志记录。谁在什么时候连了哪个服务,一目了然。

适合谁: 如果你对安全比较敏感,比如暴露的服务涉及到公司内部数据,或者你想随时知道有没有人在摸你的服务器。

🪶 rathole:不吃资源的 FRP 表弟

rathole 的定位是"轻量版 FRP"。它的核心卖点是资源占用极低(内存不到 10MB),跑在树莓派、OpenWrt 路由器这类低配设备上毫无压力。

不过需要注意,rathole 的更新最近有些放缓,社区活跃度不如 FRP。如果你追求长期稳定,FRP 仍然是更稳妥的选择。


三、到底怎么选?

每个人的需求不一样,我帮你按场景捋一遍:

① 有云服务器,追求长期稳定、功能全面FRP。这是经过长期验证、社区最活跃的方案,文档齐全,是自建服务最可靠的选择。没有之一。

② 多台设备在不同地方,想互相访问ZeroTier。让北京的家、上海的公司、出差的笔记本组成一个大局域网,互相访问跟在同个房间一样。

③ 追求 P2P 直连,不想维护服务器gonc。利用公共 STUN 服务尝试打洞,成功即直连,无需中转。延迟低,适合远程桌面。

④ 追求极致轻量和低资源占用Spleenrathole。Spleen 侧重安全连接审计,rathole 更轻量。不过两者更新都不如 FRP 活跃,建议先在小项目上试水。


四、个人心得

内网穿透这个东西,平时你可能觉得"用不上"——但一旦经历了一次出差在外急需文件却连不上自家电脑的尴尬,你就会想要立刻搞定它。

我的建议是:从 FRP 开始。 一台最便宜的云服务器,配上 FRP,就能解决 90% 的远程访问需求。等跑起来之后,如果发现有些场景对延迟敏感,再考虑叠加 ZeroTier 或 gonc 做 P2P 直连。

不要追求一步到位,先用起来才是关键。

毕竟,工具的意义就是让你在需要的时候,不会因为"连不上"而抓狂。