三类 NAT 的分工
静态 NAT 是一对一固定映射,私网地址与公网地址永久绑定,双向都能由外向内发起,常用于要对公网发布服务的场景。动态 NAT 从地址池里临时借一个公网地址,用完归还,通常是出方向使用。PAT(也叫 NAPT,端口地址转换)更进一步:多台私网主机共用一个公网地址,靠源端口号区分不同会话,这是家庭与办公出口最常见的形态。
为什么 PAT 最普遍
公网 IPv4 地址稀缺,PAT 用一个公网地址就能支撑成百上千台设备上网,代价是外网无法主动访问内网主机——除非在设备上预先配置端口映射(端口转发)。这也解释了为什么家庭宽带装好后必须做端口映射才能从外网访问内网服务,而企业出口的服务器通常用静态 NAT 或反向代理暴露。
运维上的两个难点
第一是端口耗尽:PAT 设备可用的源端口约 6 万个(每目标地址),并发连接数极高的场景(大量爬虫、P2P、长连接)可能耗尽端口,表现为部分新连接随机失败。第二是日志溯源:多用户共享一个公网 IP,要定位某个外网连接的来源必须依赖设备日志里的「公网 IP + 源端口 + 时间戳」三元组,因此会话日志的留存时间与时钟同步很关键。
基本信息
| 静态 NAT | 1 私网 ↔ 1 公网,双向可用 |
|---|---|
| 动态 NAT | 私网 ↔ 地址池,通常仅出方向 |
| PAT / NAPT | 多私网 ↔ 1 公网 + 端口区分,最常用 |
| 反向访问 | PAT 需预先配置端口映射 |
| 规范依据 | RFC 3022(传统 NAT)、RFC 4787(NAT 行为要求) |
典型使用场景
- 家庭与小型办公出口:所有终端共享一个公网地址上网
- 企业出口:办公终端走 PAT,对外服务器走静态 NAT
- 云上:实例在私有子网通过 NAT 网关访问公网
- 负载均衡与反向代理:对外只暴露一个地址,内部多台后端
- 跨网段互联:地址重叠时用 NAT 做临时规避
查看本机是否在 NAT 后
查看本机是否在 NAT 后
curl -s ifconfig.me # 出口侧看到的公网 IP
ip -4 addr show | grep 'inet ' # 本机实际地址
# 两者不一致 → 中间存在 NAT
ss -tn state established | head # 观察本机对外连接与源端口三类 NAT 对比
| 类型 | 映射方式 | 方向 | 典型场景 |
|---|---|---|---|
| 静态 NAT | 1 个私网 ↔ 1 个公网 | 双向 | 对外发布服务器 |
| 动态 NAT | 私网 ↔ 地址池中临时地址 | 通常出向 | 少量客户端上网 |
| PAT / NAPT | 多私网 ↔ 1 公网 + 端口区分 | 出向 + 端口映射 | 家庭与办公出口(最常见) |
对称型 NAT 与锥型 NAT 的区别会影响 P2P 与语音通话:对称 NAT 为每个目标分配不同源端口,导致打洞失败率更高。这也是很多即时通信软件需要中继服务器或 TURN 服务的根本原因。
NAT 不是安全设备:它顺带挡掉了外网主动发起的连接,但不做内容检测与访问控制。内部主机被植入木马后仍可主动外连,安全性必须靠防火墙策略、最小开放与流量审计。