前言
日常上网、IPSec VPN、P2P 组网、流媒体打洞都绕不开 NAT 类型。很多人困惑:为啥 UDP 容易穿透 NAT、TCP 很难 P2P 直连?GRE / 原生 ESP 无法过运营商 CGN? 根源就是后端 NAT 实现规范不同。本文基于标准 RFC3489 分类,结合统一实验拓扑、报文实例拆解 4 类 NAT 工作逻辑,区分「内网主动上网」和「外网主动入站 P2P 穿透」两大场景,同时联动 IPSec NAT-T、GRE 隧道知识点。
一、前置核心基础概念
1. NAPT 映射机制(运营商 / 家用路由主流 NAT 模式)
NAPT 即端口多路复用 NAT,多个内网主机共享单个公网 IP,依靠五元组中「IP + 端口」区分主机。
- 出站映射条目:
(内网源IP,内网源端口,传输层协议) ↔ (NAT公网IP,分配的公网出口端口)- 回程转发规则:外网回程报文以
目的公网IP+目的端口为索引查询映射表,匹配成功则转换内网地址转发,无匹配直接丢弃。
关键:只有 TCP/UDP/SCTP 等带四层端口的报文才能生成 NAPT 映射;GRE (47)/ESP (50)/AH (51) 纯三层协议无端口,原生无法生成映射。
2. NAT 穿越的两种定义(区分误区重中之重)
| 场景 | 行为描述 | NAT 表现 |
|---|---|---|
| 场景 A:内网主动发起访问外网(常规上网) | 内网主机主动发包访问互联网服务器,如浏览器、微信、DNS | 四类 NAT 全部兼容,TCP/UDP 百分百正常通信,不存在无法穿越,我们平时上网全是该场景 |
| 场景 B:外网主动发起连接向内网(P2P 穿透) | 外网服务器 / 对等主机在无内网请求前提下,主动发连接请求到内网设备 | 受 NAT 规则限制,四类 NAT 放行逻辑不同,是评判「能不能穿透 NAT」的标准场景,也是 IPSec、P2P、直播打洞研究对象 |
3. 固定统一实验拓扑(全文复用,所有案例统一参数)
- 内网客户端 A:
192.168.1.10,固定业务源端口:5000 - NAT 网关设备:出口单公网 IP
203.1.1.5,开启 NAPT,后端对接内网 192.168.1.0/24 - 远端两台公网服务器:
S1:202.1.1.1(常用业务服务器)
S2:202.2.2.2(陌生外网服务器)
约定:所有测试默认使用 UDP 报文,TCP 逻辑仅握手细节差异,端口映射规则一致。
二、四类 NAT 逐类深度解析(宽松→严苛排序:全锥→受限锥→端口受限锥→对称 NAT)
1. Full Cone NAT 全锥形 NAT|最宽松老式家用路由 NAT
1.1 出站端口分配规则
内网同一个192.168.1.10:5000,无论访问 S1 还是 S2 任意远端 IP,NAT 永久固定分配同一个公网出口端口,映射永久绑定不随目的地址变化。
示例:
A (192.168.1.10:5000)→S1 (202.1.1.1) → 生成映射:192.168.1.10:5000 <-> 203.1.1.5:7000
A(192.168.1.10:5000)→S2(202.2.2.2) → 依然复用 7000 端口,映射不变
1.2 入站报文放行规则(无 IP、源端口双重限制)
只要外网报文目的地址是203.1.1.5:7000,无论报文来自任意 IP、任意源端口,NAT 全部查表转发至内网 A 主机,无黑白名单限制。
- ✅ S1 任意源端口、S2 任意源端口访问
203.1.1.5:7000全部放行 - ✅ 互联网随机陌生 IP 访问该端口也可直达内网
1.3 NAT 穿透表现 & 实际场景
- UDP:内网仅需向外网任意 IP 发送 1 个数据包完成「打洞」,全网所有公网节点均可主动接入内网,P2P 穿透难度极低;早期 P2P 下载、语音通话极易组网。
- TCP:外网直接发送 SYN 握手报文至
203.1.1.5:7000即可建立 TCP 连接,穿透简单。
1.4 优缺点
优点:穿透性最强,组网便捷;缺点:安全性极差,公网端口完全暴露,容易被扫描攻击,现代路由基本淘汰。
2. Restricted Cone NAT 受限锥形 NAT|主流家用宽带、中小型路由器默认 NAT
2.1 出站端口分配规则
同全锥:内网192.168.1.10:5000访问任意目的 IP,公网出口端口固定为 7000,映射不变。
2.2 入站报文放行规则(IP 白名单限制)
仅放行曾经收到过内网 A 主动报文的远端 IP发来的入站流量;从未交互过的陌生 IP 报文直接丢弃。
实例:
1.A 主动发 UDP 包→S1 (202.1.1.1),NAT 生成映射,S1 进入白名单;
2.✅ S1 任意源端口发往
203.1.1.5:7000,NAT 放行转发 A;3.❌ S2 从未收到 A 报文,S2 所有去往
203.1.1.5:7000报文直接丢弃。
2.3 NAT 穿透表现
- UDP:内网提前向目标对等 IP 发送 1 个打洞包,目标 IP 即可主动接入,P2P 容易穿透;绝大多数家用光纤宽带为此类 NAT。
- TCP:需要预先打洞录入远端 IP 白名单,TCP 三次握手 SYN 报文容易被设备基础防火墙拦截,穿透困难。
2.4 优缺点
兼顾安全性与穿透性,民用宽带最优选型。
这个场景的详解:






3. Port Restricted Cone NAT 端口受限锥形 NAT|运营商 CGN、新一代智能路由默认
在受限锥形 NAT(仅 IP 白名单)基础上增加远端源端口 限制,形成IP + 端口双重白名单机制 ,是目前国内电信 / 联通 / 移动CGN (运营商级 NAT) 主流实现,新一代智能路由器默认采用。
3.1 出站端口分配规则
延续锥形特性:内网固定五元组192.168.1.10:5000,所有目的 IP 共用同一个公网端口 7000。
192.168.1.10:5000 ↔ 203.1.1.5:7000(所有目的共用此映射)
3.2 入站报文放行规则(IP + 远端源端口双重白名单限制)
入站报文必须同时满足:远端 IP 曾经交互过 + 远端报文源端口和上次回包源端口一致,任意一项不匹配直接丢包。
实例:
A 访问 S1: 目的端口 53,S1 使用自身源端口 53 回复报文;
✅ 只有S1(202.1.1.1):源端口53主动入站放行;
❌ S1 更换源端口 80 发包、S2 任意报文全部丢弃。

4. Symmetric NAT 对称 NAT|企业专线、部分移动大网 CGN、严苛政企防火墙
内网同一个192.168.1.10:5000,访问不同目的 IP / 不同目的端口,NAT 每次随机分配全新公网出口端口,映射条目完全独立。
实例:
1.A→S1 (202.1.1.1):映射192.168.1.10:5000 ↔ 203.1.1.5:70002.A→S2 (202.2.2.2):映射192.168.1.10:5000 ↔ 203.1.1.5:8000
远端无法提前预判后续接入所需公网端口。

| NAT 类型 | UDP 外网主动穿透 | TCP 外网主动穿透 | 典型应用场景 |
|---|---|---|---|
| 全锥形 NAT | 极易穿透 | 容易穿透 | 老旧家用路由器、早期宽带 |
| 受限锥形 NAT | 容易穿透 | 困难 | 电信 / 联通家用光纤宽带 |
| 端口受限锥形 NAT | 困难穿透 | 极难穿透 | 运营商 CGN、新款智能路由 |
| 对称 NAT | 无法天然穿透 | 无法天然穿透 | 移动 CGN、企业专线防火墙 |
三、总结
四种 NAT 本质汇总(核心只看两点:①出站公网端口怎么分配 ②入站报文放行门槛)
一、三大锥形 NAT 共性
出站规则完全一致:内网同一个 IP + 源端口,访问任意目的 IP,永久固定同一个公网端口(示例固定 7000)
三类锥形差距只在【外网向内网发包的放行规则】,往外上网没有任何区别
| NAT 类型 | 出站端口规则 | 入站放行校验规则(核心区别) | UDP 穿透 | TCP 主动入站穿透 | 常用环境 |
|---|---|---|---|---|---|
| 全锥形 | 固定公网端口 7000 | 无限制:任何外网 IP、任意源端口访问203.1.1.5:7000全放行 |
极易 | 容易 | 老旧路由器、早年宽带 |
| 受限锥形 | 固定公网端口 7000 | 仅校验远端 IP:只放行曾经被内网访问过的 IP,对方源端口不限 | 容易(发 1 个包打洞即可) | 困难(防火墙拦外网 SYN) | 电信 / 联通家用光纤 |
| 端口受限锥形 | 固定公网端口 7000 | 校验远端 IP + 远端源端口双条件,两项必须和历史通信完全匹配 | 困难(两端必须固定收发端口) | 几乎不可行 | 运营商 CGN、新款智能路由 |
二、对称 NAT(和锥形根本性割裂)
- 出站端口(最大本质区别) :内网
192.168.1.10:5000,访问不同目的 IP / 目的端口,每次分配全新公网端口A→S1:7000;A→S2:8000;A 再换端口访问 S1:又出新端口 - 入站放行:仅放行历史匹配的「远端 IP + 远端源端口」,且端口只对当前目标生效;
- 穿透:UDP/TCP都无法天然 P2P 穿透,只能 TURN 中继转发;
- 适用:移动 CGN、政企专线、金融防火墙。
三、一句话提炼四层本质区别
- 从出站划分两大阵营锥形:内网源端口固定→公网出口端口永久不变;对称:目的地址一变→公网端口立刻换新。
- **锥形内部分级(安全逐级升高、穿透逐级变差)**全锥(无校验)→受限锥(只验 IP)→端口受限锥(IP + 端口双校验)。