为什么需要内网穿透?
家里有台 NAS、跑了个 Home Assistant、或者搭了个开发用的测试环境,想在外面用手机或者办公电脑访问——这是很多技术爱好者的日常需求。传统的做法是向运营商申请公网 IP,然后配置端口转发和 DDNS。但现实是:很多地区的家庭宽带已经不提供公网 IPv4 地址了,即使有,动态 IP 加 DDNS 的稳定性也常常让人头疼。
内网穿透(NAT Traversal)就是为解决这个问题而生的。它不需要公网 IP,不需要改动路由器设置,只需要一台有公网 IP 的云服务器作为中转——或者直接用服务商提供的免费公共穿透节点。
2026 年,内网穿透工具的选择比前几年丰富了很多。今天重点介绍 FRP(Fast Reverse Proxy),它依然是社区最活跃、部署最简单的方案之一。
FRP 的工作原理
FRP 的架构非常直观,由两部分组成:
- frps(服务端):部署在有公网 IP 的服务器上,负责接收外部请求并转发给内网的客户端。
- frpc(客户端):部署在内网机器上,主动与服务端建立长连接,并把来自服务端的流量转发到内网的指定服务。
整个流程是:外部用户 → frps(公网)→ frpc(内网长连接)→ 内网服务。frpc 主动连接 frps,因此不需要内网开放任何入站端口,完美穿越 NAT 和防火墙。
FRP 目前最新稳定版是 v0.61,支持 TCP、UDP、HTTP、HTTPS 等多种协议,还支持加密、压缩、限流、负载均衡等进阶功能。
快速部署:服务端配置
以一台 Ubuntu 22.04 云服务器为例:
- 从 GitHub Releases 下载对应架构的二进制包。
- 解压后只需关注两个文件:frps(可执行文件)和 frps.toml(配置文件)。
- 编辑 frps.toml:
bindPort = 7000
vhostHTTPPort = 8080
auth.token = “your-strong-token-here”
bindPort 是 frpc 连接服务端的端口,vhostHTTPPort 是 HTTP 穿透的入口端口,auth.token 用于客户端认证——强烈建议设置一个强随机字符串。
启动服务端:
./frps -c frps.toml
建议配合 systemd 做成开机自启的服务,这样服务器重启后无需手动干预。
客户端配置:把内网服务暴露出去
假设内网有一台机器(Windows/Linux/macOS 均可),上面跑了一个 Web 服务监听在 localhost:3000,我们想通过 frps 的 8080 端口从外部访问它。
编辑 frpc.toml:
serverAddr = “ 你的云服务器 IP”
serverPort = 7000
auth.token = “your-strong-token-here”[[proxies]]
name = “web”
type = “http”
localPort = 3000
customDomains = [“your-domain.com”]
如果暂时没有域名,也可以用 IP 加端口的方式访问。启动客户端后,在浏览器输入 http:// 你的服务器 IP:8080 就能访问到内网的 3000 端口服务了。
进阶用法:多服务代理 + TCP 穿透
FRP 支持同时代理多个服务。比如内网还有一台 SSH 服务(端口 22)和一台 Minecraft 服务器(端口 25565):
[[proxies]]
name = “ssh”
type = “tcp”
localPort = 22
remotePort = 6000[[proxies]]
name = “minecraft”
type = “tcp”
localPort = 25565
remotePort = 25565
通过 remotePort 字段,可以给每个服务分配不同的公网端口。
安全注意事项
内网穿透的本质是给内网开了一扇 ” 后门 ”,安全性必须重视:
- 强认证 :auth.token 使用至少 32 位随机字符串,不要用默认值或弱密码。
- TLS 加密 :FRP 支持服务端和客户端之间的 TLS 加密通信,在生产环境建议开启。
- 最小暴露原则 :只穿透需要远程访问的服务,不要把所有端口一股脑映射出去。
- 配合反向代理 :如果是 HTTP 服务,建议在 frps 前面再加一层 Caddy 或 Nginx,统一做 HTTPS 和访问控制。
小结
FRP 是一个轻量、稳定、配置直观的内网穿透工具。对于个人开发者和小团队来说,用一台最低配的云服务器(月费几十块钱)就能跑起来,性价比很高。相比 ZeroTier/Tailscale 这类 SD-WAN 方案,FRP 的优势在于不需要在所有设备上安装客户端——外部访问者只需要一个浏览器或 SSH 客户端即可,这在分享服务给非技术人员时特别方便。
如果你正在为没有公网 IP 而烦恼,花半小时搭一套 FRP,你会发现很多之前 ” 做不到 ” 的事情,其实只是缺了一个靠谱的穿透方案。