内网穿透
内网穿透,也称为 NAT 穿透,是一种允许外部网络用户访问处于私有网络内部设备或服务的技术。
由于 IPv4 地址资源的枯竭,大多数设备都处于 NAT(网络地址转换)之后,没有公网 IP 地址,这使得外部设备难以直接访问它们。内网穿透技术通过一系列方法解决了这个问题,使得无论设备身处何种网络环境,都能被外部访问。
背景知识
私有地址与 NAT
- 私有地址范围:
- A类私有地址:10.0.0.0 - 10.255.255.255(共16 777 216个地址)
- B类私有地址:172.16.0.0 - 172.31.255.255(共1 048 576个地址)
- C类私有地址:192.168.0.0 - 192.168.255.255(共65 536个地址)
- NAT(网络地址转换):路由器将私有 IP 地址转换为公网 IP 地址,实现多个设备共享一个公网 IP。
问题
- 内网设备没有公网 IP,外部无法主动连接。
- 传统端口映射需要路由器支持并手动配置,不够灵活。
内网穿透的核心原理
内网穿透的核心思想是:让内网设备主动建立一个“出口”连接到一个公网服务器,然后由这个服务器转发外部请求到内网设备。
基本流程:
- 内网客户端(如 A)启动一个穿透客户端,主动连接公网穿透服务器(如 S)。
- 公网用户(如 B)想要访问 A,先连接 S。
- S 作为中继,将 B 的请求转发给 A,并将 A 的响应转发给 B。
- 看起来就像是 B 直接访问了 A。
常见的内网穿透技术
| 技术/工具 | 原理 | 特点 |
|---|---|---|
| 反向代理 + 长连接(如 frp、nps) | 内网客户端主动连接公网服务器,建立持久连接,服务器转发请求 | 稳定、安全、支持 TCP/UDP/HTTP,需自建服务器 |
| STUN/TURN/ICE(用于 WebRTC) | STUN 获取公网地址,TURN 中继数据,ICE 综合选择最佳路径 | 用于 P2P 通信,如视频通话,TURN 用于中继 |
| UPnP/NAT-PMP | 自动在路由器上添加端口映射 | 自动但安全性差,很多路由器默认关闭 |
| SSH 反向隧道 | 使用 SSH 的 -R 参数建立反向连接 |
简单但功能有限,适合临时使用 |
| 第三方服务(如 ngrok、花生壳、zerotier、tailscale) | 提供公网中继或虚拟局域网 | 易用,部分免费,依赖第三方 |
典型工具详解
- frp(Fast Reverse Proxy)
- 开源,支持 TCP、UDP、HTTP、HTTPS。
- 架构:frps(服务器端)+ frpc(客户端)。
- 示例:将内网 192.168.1.100:8080 映射到公网 vps.com:6000。
- 配置简单,性能高,广泛使用。
- nps(NPS 是一款轻量级、高性能、功能强大的内网穿透代理服务器)
- 类似 frp,但支持 Web 管理界面。
- 支持多用户、流量控制、加密等。
- ngrok
- 官方服务,一键使用:
ngrok http 8080。 - 自动生成公网域名,适合开发调试。
- 免费版有流量和域名限制。
- 官方服务,一键使用:
- Zerotier / Tailscale
- 创建虚拟局域网(VXLAN),设备加入同一虚拟网络,像局域网一样通信。
- 基于 WireGuard,加密强,跨平台。
- 无需端口映射,适合远程办公、远程桌面。
内网穿透的典型应用场景
| 场景 | 说明 |
|---|---|
| 远程访问家中 NAS | 通过 frp 将 NAS 的 Web 管理端口映射到公网 |
| 本地开发调试 Webhook | 使用 ngrok 将本地 8080 端口暴露给外网 |
| 远程桌面连接公司电脑 | 用 Zerotier 组建虚拟局域网,远程连接 RDP |
| 物联网设备远程管理 | 设备主动连接云平台,实现反向控制 |
| 游戏联机(如 Minecraft) | 内网服务器通过 frp 暴露端口,好友可加入 |
总结
内网穿透就是:“让没有公网 IP 的设备,也能被全世界找到。”
它通过“反向连接 + 公网中继”的方式,打破了 NAT 的限制,成为远程办公、开发调试、物联网等领域的“隐形桥梁”。