Skip to content

NAT 简介

产生背景

随着互联网的快速普及,IPv4 公网 IP 地址逐渐接近枯竭。为了解决这一问题,1994 年提出了 网络地址转换(NAT,Network Address Translation) 方案,并划分了专门的 私有 IP 地址网段(RFC 1918)供内部网络使用。这一方案极大缓解了公网 IP 地址的短缺问题,并促进了私有网络的广泛应用。

NAT 简介

网络地址转换(NAT,Network Address Translation) 是一种在 IP 数据包通过路由器或防火墙时 重写源 IP 地址或目的 IP 地址 的技术。NAT 主要用于私有网络访问公网,或多个设备共享同一个公网 IP 进行通信。

NAT 的优缺点

✅ 优点

  • 缓解 IP 地址空间枯竭:多个私有 IP 地址可以通过一个或少量公网 IP 访问外网。
  • 提高安全性:内部私有 IP 地址对外不可见,一定程度上减少了外部攻击风险。
  • 简化网络管理:无需为每个设备分配公网 IP,降低运营成本。

❌ 缺点

  • 增加交换延迟:NAT 需要对数据包进行修改,影响网络传输效率。
  • 破坏端到端 IP 连接:使得端到端的通信变得复杂,例如某些 P2P 应用需要额外配置。
  • 影响某些协议的兼容性:如 IPsec VPN 需要额外的 NAT 穿透机制。
  • 日志管理复杂:由于多个内部设备共享公网 IP,日志分析和溯源较困难。

NAT 的实现方式

NAT 的实现方式主要包括以下几种:

1. 静态 NAT(Static NAT)

将一个私有 IP 地址 一对一映射 到一个公网 IP 地址,通常用于服务器对外提供服务。

2. 动态 NAT(Dynamic NAT)

从一个公网 IP 地址池中 动态分配 公网 IP 给私有 IP 地址,但每个私有 IP 仍然需要一个公网 IP。

3. 网络地址与端口转换(NAPT / PAT)

端口地址转换(Port Address Translation, PAT),多个私有 IP 地址通过 同一个公网 IP,但使用 不同端口 进行通信。

典型应用:家庭和公司路由器使用 NAT,让局域网内的多个设备共享一个公网 IP 访问互联网。

NAT 在 Linux 中的实现

在 Linux 系统中,NAT 主要通过 iptables 实现,使用 nat 表进行地址转换。

详细参考:iptables NAT 配置

参考文献

[^1]: RFC 2663 - IP Network Address Translator (NAT) Specification. 链接 [^2]: RFC 1918 - Address Allocation for Private Internets. 链接