NAT(Network Address Translation,网络地址转换)是一种部署在路由器 / 网关 上的网络技术,核心作用是将局域网(LAN)的私有 IP 地址转换为互联网(WAN)的公有 IP 地址,解决 "公有 IP 地址资源不足" 的问题,同时隔离内网与外网,提升局域网安全性。
一、NAT 核心前提:IP 地址分类
NAT 的工作依赖 "私有 IP" 与 "公有 IP" 的区分,两者的定义和用途严格分离:
- 公有 IP :由 IANA(互联网号码分配机构)统一分配,全球唯一,可直接在互联网中路由(如百度服务器 IP
180.101.49.11
)。 - 私有 IP :仅用于局域网内部通信,不可在互联网中路由,需通过 NAT 转换为公有 IP 才能访问外网。IANA 预留的私有 IP 段如下:
- A 类:
10.0.0.0 ~ 10.255.255.255
(1 个大网段) - B 类:
172.16.0.0 ~ 172.31.255.255
(16 个网段) - C 类:
192.168.0.0 ~ 192.168.255.255
(256 个网段)
- A 类:
举例 :家庭网络中,手机、电脑的 IP(如 192.168.1.2
、192.168.1.3
)均为私有 IP,而路由器 WAN 口获取的 IP(如 202.103.xx.xx
)是 ISP 分配的公有 IP。
二、NAT 基本工作流程(以 "内网访问外网" 为例)
NAT 的核心是路由器维护一张NAT 转换表 (记录 "私有 IP + 端口" 与 "公有 IP + 端口" 的映射关系),通过 "替换 IP 和端口" 实现数据双向传输。以下以 "内网 PC(192.168.1.2:5000
)访问外网服务器(203.0.113.10:80
)" 为例,拆解完整流程:
步骤 1:内网 PC 发起请求,数据包进入路由器
- 内网 PC(
192.168.1.2
)向外网服务器(203.0.113.10:80
)发送 TCP 请求数据包(如 HTTP 请求),数据包的源地址 为192.168.1.2:5000
(私有 IP + 随机端口),目的地址 为203.0.113.10:80
(公有 IP + 服务端口)。 - 数据包通过交换机转发到路由器的LAN 口(局域网侧接口),进入路由器的 NAT 模块。
步骤 2:路由器执行 NAT 转换,生成映射表
-
路由器检测到数据包的源 IP 是私有 IP,需执行 "私有 IP→公有 IP" 转换:
- 从自身 WAN 口的公有 IP 池(通常是 ISP 分配的 1 个公有 IP,如
202.103.15.6
)中选择一个公有 IP 作为 "转换后的源 IP"; - 分配一个未被占用的临时端口 (如
6000
)作为 "转换后的源端口",避免多个内网设备使用同一公有 IP 时端口冲突。
- 从自身 WAN 口的公有 IP 池(通常是 ISP 分配的 1 个公有 IP,如
-
路由器在NAT 转换表 中新增一条映射记录,格式如下:
内网地址(私有 IP: 端口) 外网地址(公有 IP: 端口) 目的地址(外网服务器 IP: 端口) 协议 超时时间 192.168.1.2:5000 202.103.15.6:6000 203.0.113.10:80 TCP 120 秒 -
路由器修改数据包的源地址 :将
192.168.1.2:5000
替换为202.103.15.6:6000
,目的地址保持不变(203.0.113.10:80
),然后通过WAN 口(互联网侧接口)发送到互联网。
步骤 3:外网服务器响应,数据包返回路由器
- 外网服务器(
203.0.113.10
)接收请求后,生成响应数据包(如 HTTP 响应),此时数据包的源地址 为203.0.113.10:80
,目的地址 为202.103.15.6:6000
(即路由器转换后的公有 IP + 端口)。 - 响应数据包通过互联网传输到路由器的WAN 口,进入 NAT 模块。
步骤 4:路由器反向 NAT 转换,转发到内网 PC
- 路由器查询NAT 转换表 ,根据 "目的地址(
202.103.15.6:6000
)+ 协议(TCP)" 匹配到对应的内网地址(192.168.1.2:5000
)。 - 路由器修改数据包的目的地址 :将
202.103.15.6:6000
替换为192.168.1.2:5000
,源地址保持不变(203.0.113.10:80
)。 - 转换后的数据包通过路由器的LAN 口 转发到内网交换机,最终送达发起请求的 PC(
192.168.1.2
)。
步骤 5:连接结束,释放映射记录
当 PC 与服务器的通信结束(如 TCP 断开连接),或映射记录达到 "超时时间"(通常 1-5 分钟,避免表项过多),路由器会删除 NAT 转换表中的对应记录,释放端口资源。
三、常见 NAT 类型的工作差异
根据 "公有 IP 数量" 和 "映射方式",NAT 主要分为 3 类,工作流程略有不同:
1. 静态 NAT(Static NAT)
- 核心特点 :1 个私有 IP 与 1 个公有 IP永久绑定(一对一映射),映射表由管理员手动配置,不会自动删除。
- 工作流程:无需动态分配端口,数据包的源 IP 直接替换为绑定的公有 IP(端口不变);反向转换时,直接根据静态映射表匹配私有 IP。
- 适用场景 :内网需要对外提供服务的设备(如内网服务器、监控摄像头),需固定公有 IP 供外网访问(如
192.168.1.100
绑定202.103.15.7
,外网可通过202.103.15.7
访问该服务器)。
2. 动态 NAT(Dynamic NAT)
- 核心特点 :多个私有 IP 共享一个公有 IP 池(如 10 个公有 IP),映射时从池内动态选择空闲的公有 IP(一对一临时映射),超时后释放。
- 工作流程:与基本流程类似,但 "转换后的公有 IP" 从 IP 池选择,而非固定 1 个;若 IP 池无空闲 IP,新请求会被阻塞。
- 适用场景:内网设备数量较多,但同时访问外网的设备较少,且无需固定公有 IP(如中小型企业内网)。
3. 端口地址转换(PAT,Port Address Translation)
- 核心特点 :所有内网设备共享1 个公有 IP,通过 "不同的端口号" 区分不同设备(一对多映射),是目前最主流的 NAT 类型(家庭路由器默认使用 PAT)。
- 工作流程:与前文 "基本工作流程" 完全一致,核心是通过 "私有 IP: 端口 → 公有 IP: 临时端口" 的映射,实现单公有 IP 支持多设备同时访问外网。
- 优势:极大节省公有 IP 资源,1 个公有 IP 可支持数千台内网设备(端口范围 0-65535,排除系统占用端口后约可用 6 万个端口)。
四、NAT 的局限性与解决方案
NAT 虽解决了 IP 不足问题,但也存在天然限制,需针对性解决:
-
内网设备无法被外网主动访问 :外网设备无 NAT 转换表记录,无法主动向私有 IP 发送数据包。解决方案:配置端口转发(Port Forwarding) (将公有 IP 的特定端口映射到内网设备的端口,如将
202.103.15.6:8080
映射到192.168.1.100:80
,外网可通过202.103.15.6:8080
访问内网 Web 服务器)。 -
部分网络协议(如 VPN、P2P)无法正常工作:这类协议需 "端到端 IP 可见",NAT 转换会破坏协议中的 IP 信息。解决方案:使用UPnP(通用即插即用) 或NAT 穿透(NAT Traversal,如 STUN、TURN 协议),让设备自动协商 NAT 映射规则。
总结
NAT 的本质是 "路由器通过维护转换表,实现私有 IP 与公有 IP 的双向映射",核心流程可概括为:内网请求→NAT 正向转换(私→公)→外网响应→NAT 反向转换(公→私)→内网接收其中,PAT 通过 "端口区分" 实现单公有 IP 多设备共享,是家庭和中小企业网络的标配;静态 NAT 和端口转发则用于内网设备对外提供服务的场景。