内网穿透是一种帮助没有公网 IP 的内网设备对外提供服务的网络技术,主要解决如何把家庭、办公室或机房内网中的服务安全发布到公网的问题。理解它的工作原理,有助于在租用VPS(虚拟专用服务器)或独立服务器时,判断自己究竟需要一台”中转服务器”,还是只需要一套反向代理配置。
定义
内网穿透(NAT Traversal,也叫 NAT 穿透)是指在外部网络与内网服务之间建立一条受控转发通道,让公网用户能够访问位于 NAT(网络地址转换)设备之后的服务的统称。它的核心矛盾在于:IPv4 公网地址数量有限,绝大多数家庭宽带和企业内网中的设备只有运营商分配的私有地址(如 192.168.x.x、10.x.x.x),外部请求无法直接路由到这些设备。
解决这一矛盾有两条主流路径:一条是在一台有公网 IP 的服务器上部署 frp 这类隧道工具,由内网设备主动向外建立连接并保持会话;另一条是把服务部署在具备公网地址的服务器上,再用 Nginx 等反向代理统一对外发布。两条路径经常组合使用,构成常见的”公网入口 + 内网节点”架构。
NAT 为什么挡住了入站连接
NAT 设备(家用路由器、企业网关)把内网多台设备的私有地址映射成少数公网地址。出站连接时,NAT 会记录”哪台内网设备在什么端口发起了请求”,回程流量据此送回;但入站连接没有这样的映射记录,路由器不知道该把请求转给内网哪台设备,只能丢弃。
运营商层面的 NAT(CGNAT)让情况更复杂:不少宽带用户获得的公网地址本身也是运营商内网地址,即使拿到路由器管理权限做端口映射,流量也到不了自己的设备。这也是许多家庭实验室用户最终选择”租一台有公网 IP 的服务器做中转”的直接原因。评估中转服务器所在机房时,线路质量比硬件配置更重要,可先了解BGP(边界网关协议,用于多运营商智能选路)等多线接入方式,再决定节点位置。

frp 的工作原理与配置要点
frp 是目前使用最广泛的内网穿透工具之一,采用”服务端 frps + 客户端 frpc”架构。frps 运行在有公网 IP 的服务器上,监听一个服务端口;frpc 运行在内网设备上,启动后主动向 frps 建立长连接。外部用户访问公网服务器的指定端口时,流量经这条已建立的隧道转发到内网服务,全程不需要内网设备开放任何入站端口。
以把内网 192.168.1.10 的 Web 服务(端口 8080)发布到公网为例,关键配置只有几行:
# frpc.toml(内网设备侧) serverAddr = "你的公网服务器IP" serverPort = 7000 [[proxies]] name = "web" type = "tcp" localIP = "192.168.1.10" localPort = 8080 remotePort = 8080
配置完成后,访问”公网 IP:8080″即可到达内网 Web 服务。生产环境使用时有三点必须补齐:一是 frps 与 frpc 之间要配置 token 认证,防止端口被陌生人占用;二是涉及网页等敏感流量时,应启用 frp 的 TLS 加密或叠加 HTTPS;三是 remotePort 是暴露在公网的真实端口,建议配合防火墙规则限制来源。
反向代理的发布方式
反向代理(Reverse Proxy)是指代表后端服务接收请求、再按规则转发出去的网关角色,Nginx、Caddy 是典型实现。与 frp 的区别在于定位:反向代理本身解决”多个服务如何共用 80/443 端口、如何统一配置证书与缓存”,它假设后端服务是可达的。
当内网服务通过 frp 隧道出现在公网服务器本机的某个端口后,反向代理就有了用武之地。常见组合是:frpc 把内网服务映射到公网服务器的 127.0.0.1:8080(bindAddr 绑定回环地址,避免直接暴露),再由 Nginx 按域名把 example.com 的 443 流量转发到该端口,同时统一挂载 SSL(安全传输协议)证书。这样公网只暴露标准的 443 端口,后端端口、真实拓扑都被隐藏。
frp 隧道与反向代理在架构中的分工可以用下表概括:
| 维度 | frp 隧道 | 反向代理 |
|---|---|---|
| 解决的核心问题 | 内网服务如何跨越 NAT 被公网访问 | 多个服务如何统一对外发布与加密 |
| 部署位置 | 公网服务器(frps)+ 内网设备(frpc) | 公网入口服务器 |
| 连接方向 | 内网主动外连,保持长会话 | 接收公网请求,向可达后端转发 |
| 典型代表 | frp、nps、rathole | Nginx、Caddy、Traefik |

应用场景
家庭实验室是最典型的场景:NAS(网络附属存储)的私有云盘、Home Assistant 智能家居面板、自建 Git 服务等,都只有内网地址,需要借助一台低配置 VPS 做穿透入口。企业场景中,分支机构的内部管理系统、开发环境的联调回调(如微信支付、企业微信OAuth 回调要求公网可达地址)也常通过隧道 + 反向代理的组合暴露测试环境。
远程运维是另一类高频需求。当 SSH(安全远程登录协议)直连不可行时,部分团队会把内网设备的 SSH 端口经 frp 映射出来,再叠加跳板机认证;关于远程登录链路的常见故障,可参考SSH 公私钥登录故障排查一文中的处理思路。
常见误区与边界
第一,内网穿透不等于免认证。隧道只解决”可达性”,把内网服务直接暴露到公网等于把攻击面同步扩大,未加认证的 Redis、数据库管理面板经穿透上线后被扫描入侵的案例并不少见。第二,frp 隧道的速度上限受中转服务器带宽(单位时间内网络链路可传输的数据量)约束,1 Mbps 的小水管 VPS 不会因为穿透工具而变快,对带宽敏感的服务应关注服务器带宽选型。第三,穿透有合规边界,国内提供 Web 服务需完成相应备案流程,隧道不应被用于规避监管或搭建违规服务。
方案选择上可以这样判断:服务本来就能部署在公网服务器上,直接部署加反向代理最简单;服务必须留在内网(依赖本地硬件、本地数据),才需要 frp 一类隧道工具,并把反向代理叠加在入口做统一加密和域名管理。
若需要评估承载穿透入口的服务器选型,可以参考香港 VPS 的带宽、延迟与合规要点,其中对入口节点位置与成本权衡有具体分析。
参考资料
- frp 官方文档:https://github.com/fatedier/frp(项目 README 与配置示例)
- VPS 概念词条
- 独立服务器与 VPS 专栏

微信扫一扫打赏
支付宝扫一扫打赏