没有 NAT,互联网在 2000 年代就会崩溃
你家里有智能手机、电脑、平板、智能音箱、游戏机、电视等众多设备连接着互联网。然而你的 ISP 通常只分配给你一个全局 IP 地址。
让数十台设备用一个 IP 地址上网的魔法,就是 NAT (Network Address Translation,网络地址转换)。你在 IP 确认上看到的 IP 地址是路由器的全局 IP,无论你用家里哪台设备访问都显示相同的 IP 地址,这正是 NAT 的功劳。
NAT 的工作原理 - 路由器的"翻译"工作
家中的设备被分配私有 IP 地址 (192.168.x.x、10.x.x.x、172.16-31.x.x)。这些地址无法在互联网上使用。路由器管理着一张 NAT 表,在私有 IP 和全局 IP 之间进行"翻译"。
- 你的电脑 (192.168.1.10) 向网站发送请求
- 路由器将源地址从 192.168.1.10 转换为全局 IP (例如 203.0.113.5),并记录源端口
- 网站的响应到达 203.0.113.5
- 路由器查询 NAT 表,将响应转发给 192.168.1.10
这种转换每秒发生数千次,但用户完全感知不到。
NAT "发明"的背景
NAT 于 1994 年在 RFC 1631 中被提出。当时 IPv4 地址耗尽正在成为现实问题,NAT 被设计为"在 IPv6 普及之前的临时过渡方案"。
然而 NAT 太好用了,反而削弱了向 IPv6 迁移的动力。"有了 NAT,IPv4 就够用了"的状况已经持续了 30 多年。这是临时方案变成永久互联网基础设施的讽刺案例。
NAT 的副作用 - 安全性与局限性
意外的防火墙效果
NAT 后面的设备无法从外部直接访问。没有对应 NAT 表条目的入站通信会被路由器丢弃。这是副作用而非设计目标,但它有效地保护了家庭设备免受未经授权的外部访问。
P2P 通信困难
两台都在 NAT 后面的设备之间的直接通信很困难。在线游戏、视频通话、文件共享等 P2P 通信需要使用 STUN/TURN 服务器进行 NAT 穿透。这就是 WebRTC 使用 STUN 服务器的原因。
CGNAT - NAT 中的 NAT
在 ISP 层面应用 CGNAT (运营商级 NAT) 时,数百到数千个客户共享一个全局 IP。这会导致 IP 信誉问题 (一个恶意用户导致所有人被封禁) 以及 GeoIP 精度下降。
总结
NAT 作为 IPv4 地址耗尽危机的"紧急措施"而诞生,已经支撑互联网运行了 30 多年。在 IP 确认上显示的那一个 IP 地址背后,是由 NAT 管理的无数家庭设备。