内网穿透

NAT Traversal Explained

Posted by Marlin on November 13, 2025

内网穿透

内网穿透,也称为 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,外部无法主动连接。
  • 传统端口映射需要路由器支持并手动配置,不够灵活。

内网穿透的核心原理

内网穿透的核心思想是:让内网设备主动建立一个“出口”连接到一个公网服务器,然后由这个服务器转发外部请求到内网设备。

基本流程:

  1. 内网客户端(如 A)启动一个穿透客户端,主动连接公网穿透服务器(如 S)。
  2. 公网用户(如 B)想要访问 A,先连接 S。
  3. S 作为中继,将 B 的请求转发给 A,并将 A 的响应转发给 B。
  4. 看起来就像是 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) 提供公网中继或虚拟局域网 易用,部分免费,依赖第三方

典型工具详解

  1. frp(Fast Reverse Proxy)
    • 开源,支持 TCP、UDP、HTTP、HTTPS。
    • 架构:frps(服务器端)+ frpc(客户端)。
    • 示例:将内网 192.168.1.100:8080 映射到公网 vps.com:6000。
    • 配置简单,性能高,广泛使用。
  2. nps(NPS 是一款轻量级、高性能、功能强大的内网穿透代理服务器)
    • 类似 frp,但支持 Web 管理界面。
    • 支持多用户、流量控制、加密等。
  3. ngrok
    • 官方服务,一键使用:ngrok http 8080
    • 自动生成公网域名,适合开发调试。
    • 免费版有流量和域名限制。
  4. Zerotier / Tailscale
    • 创建虚拟局域网(VXLAN),设备加入同一虚拟网络,像局域网一样通信。
    • 基于 WireGuard,加密强,跨平台。
    • 无需端口映射,适合远程办公、远程桌面。

内网穿透的典型应用场景

场景 说明
远程访问家中 NAS 通过 frp 将 NAS 的 Web 管理端口映射到公网
本地开发调试 Webhook 使用 ngrok 将本地 8080 端口暴露给外网
远程桌面连接公司电脑 用 Zerotier 组建虚拟局域网,远程连接 RDP
物联网设备远程管理 设备主动连接云平台,实现反向控制
游戏联机(如 Minecraft) 内网服务器通过 frp 暴露端口,好友可加入

总结

内网穿透就是:“让没有公网 IP 的设备,也能被全世界找到。”

它通过“反向连接 + 公网中继”的方式,打破了 NAT 的限制,成为远程办公、开发调试、物联网等领域的“隐形桥梁”。