没有 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 之间进行"翻译"。

  1. 你的电脑 (192.168.1.10) 向网站发送请求
  2. 路由器将源地址从 192.168.1.10 转换为全局 IP (例如 203.0.113.5),并记录源端口
  3. 网站的响应到达 203.0.113.5
  4. 路由器查询 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 管理的无数家庭设备。

相关术语

NAT 在私有 IP 和全局 IP 之间进行转换的技术。IPv4 地址耗尽的临时方案。 IP 地址 指 NAT 在其间进行转换的全局 IP 和私有 IP。 IPv6 使 NAT 不再必要的下一代协议。可以为每台设备分配全局地址。 防火墙 NAT 具有阻止未经授权的外部访问的副作用。 ISP 运行 CGNAT 的运营商,让多个客户共享一个全局 IP。