NAT 类型完全指南
从 Full Cone 到 Symmetric,深入理解四种 NAT 的行为差异,以及它们如何影响 P2P 连接与网络安全。
NAT1 · Full Cone(完全圆锥型)
连通性:★★★★★ · 安全性:★☆☆☆☆NAT 内部主机对外建立连接后,会得到一个固定的公网 IP 和端口映射。任何外部主机只要知道这个公网地址,无论从哪个 IP、哪个端口发来的数据包,都能直接穿透进入内部主机。
工作原理
当内网主机向外发送数据时,NAT 建立一个 (内网IP:端口 → 公网IP:端口) 的固定映射。此后任何外部主机访问这个公网端口,NAT 都无条件地把数据转发给内网主机,不区分来源。
适用场景
常见于 P2P 下载、游戏联机、音视频通话等需要被外部主动连接的场景。但由于任何外部主机都能直接访问内网设备,安全性最差,容易被恶意探测。
NAT2 · Restricted Cone(受限圆锥型)
连通性:★★★★☆ · 安全性:★★☆☆☆在 Full Cone 基础上增加了外部主机 IP 校验。只有当内部主机曾向某个外部 IP 发送过数据,该外部 IP 上的主机才能向内网主机回连。
工作原理
NAT 维护一个"已通信外部 IP"的白名单。当外部主机发来数据包时,NAT 会检查来源 IP 是否在此白名单中。只要 IP 匹配,无论来源端口是什么,都允许转发;否则丢弃。
适用场景
适合 P2P 应用,且安全性比 Full Cone 略好。它屏蔽了来自陌生 IP 的主动连接,但仍允许已通信 IP 的任意端口访问,端口扫描仍可能暴露内网服务。
NAT3 · Port Restricted Cone(端口受限圆锥型)
连通性:★★★☆☆ · 安全性:★★★☆☆同时校验外部主机的 IP 与端口。只有内网主机曾主动通信过的"外部 IP + 端口"组合,才能回连内网主机。这是多数家庭路由器和运营商网络的实际类型。
工作原理
NAT 维护 (外部IP, 外部端口) 的组合白名单。当外部数据包到达时,必须来源 IP 和来源端口都命中白名单才被允许转发。这大幅减少了来自端口的探测风险。
适用场景
绝大多数家庭宽带、4G/5G 移动网络都属于 NAT3。它足以支持常见的 P2P 打洞(UDP Hole Punching),是日常使用中"安全与可用"的较好平衡。
NAT4 · Symmetric NAT(对称型)
连通性:★☆☆☆☆ · 安全性:★★★★★最严格的 NAT 类型。每当内部主机向一个"不同的目标地址"发起连接时,NAT 都会分配一个全新的公网端口映射,即使来源端口相同也会生成不同映射。
工作原理
映射关系不仅取决于 (内网IP:端口),还取决于 (目标IP:端口)。因此向 A 服务器和 B 服务器通信时会得到两个不同的公网端口,外部主机几乎无法预知端口,P2P 打洞极难成功。
适用场景
常见于某些严格的企业网络、部分运营商蜂窝网络。对 WebRTC、P2P 打洞影响巨大,往往需要引入 TURN 中继服务器进行流量转发才能完成通信。
四种类型对比
| 类型 | 外部来源 IP | 外部来源端口 | P2P 打洞 | 安全性 |
|---|---|---|---|---|
| NAT1 Full Cone | 任意 | 任意 | 极佳 | ★☆☆☆☆ |
| NAT2 Restricted Cone | 白名单 | 任意 | 优秀 | ★★☆☆☆ |
| NAT3 Port Restricted | 白名单 | 白名单 | 良好 | ★★★☆☆ |
| NAT4 Symmetric | 动态映射 | 动态映射 | 极难 | ★★★★★ |
* 所谓"P2P 打洞",指通过 UDP 端口预测实现 NAT 穿透、建立点对点连接的技术,NAT4 因端口动态变化而几乎无法打洞。
为什么 NAT 类型影响 WebRTC?
WebRTC 采用 ICE(Interactive Connectivity Establishment) 框架进行 P2P 连接协商。它通过 STUN 服务器发现自身的公网映射地址,并通过 ICE 候选(Candidate)交换建立连接路径。
- 1
host 本机网卡地址,仅同一局域网内有效。
- 2
srflx 通过 STUN 得到的公网反射地址,是 NAT 类型判定的关键。
- 3
relay 通过 TURN 中继服务器转发,用于 NAT4 等无法穿透的场景。
通过对比同一内网主机向多个不同 STUN 服务器探测得到的公网端口,即可判断是否为 Symmetric NAT(NAT4)。