NAT 系列:认识 NAT
目录
一文概览 NAT
NAT 简介
NAT(Network Address Translation,网络地址转换)是一种在 IP 数据包通过路由器或防火墙时重写源 IP 地址或目的 IP 地址的网络技术。这种技术被广泛应用于拥有多台主机但只使用一个公有 IP 地址访问互联网的私有网络中。
NAT 可以分为两大类:
- 静态 NAT:由管理员手动创建和维护映射,通常用于需要固定公网IP的服务器
- 动态 NAT:由路由器根据需要自动创建和维护映射,通常用于普通客户端的出站连接
每个 TCP/IP 数据包都包含四个关键信息:
- 源 IP 地址(Source IP)
- 源端口(Source Port)
- 目的 IP 地址(Destination IP)
- 目的端口(Destination Port)
NAT 设备会基于这些信息创建和维护映射表。
示例:假设内部主机(IP:
192.168.0.1
)通过端口56876
访问外网服务器时:
- 原始数据包:
- 源:
192.168.0.1:56876
- 目标:
2.2.2.2:80
- NAT 转换后:
- 源:
3.3.3.3:56876
(公网IP)- 目标:
2.2.2.2:80
(保持不变)当服务器响应时,NAT 设备会根据映射表将数据包转发给正确的内部主机。
NAT 的四种类型
全锥型 NAT(Full Cone NAT)
全锥型 NAT 是最简单且限制最少的 NAT 类型:
- 特点:
- 一旦建立映射,允许任何外部主机访问内部服务
- 映射规则固定且持久
- 外部主机无需事先与内部主机通信
示例:内部 Web 服务器配置
- 内部服务器:
192.168.0.1:80
- NAT 映射:
- 外部:
1.1.1.1:80
(公网IP和端口)- 内部:
192.168.0.1:80
(私网IP和端口)- 任何访问
1.1.1.1:80
的请求都会被转发到内部服务器
受限锥型 NAT(Restricted Cone NAT)
受限锥型 NAT 增加了来源 IP 限制:
- 特点:
- 只接受已知外部主机的数据包
- 外部主机可以使用任意端口
- 需要内部主机先发起连接建立映射
示例:游戏服务器连接
- 内部客户端:
192.168.0.1:56723
- 游戏服务器:
56.45.34.78
(任意端口)- 映射规则:
- 只允许来自
56.45.34.78
的数据包- 服务器可以使用任意端口回复
端口受限锥型 NAT(Port Restricted Cone NAT)
端口受限锥型 NAT 进一步增加了端口限制:
- 特点:
- 只接受已知外部主机和端口的数据包
- 需要完全匹配源IP和源端口
- 提供更好的安全性
示例:P2P 应用场景
- 内部客户端:
192.168.0.1:56723
- 外部节点:
56.45.34.78:33456
- 映射规则:
- 只允许来自
56.45.34.78:33456
的数据包- 其他端口的数据包将被丢弃
对称型 NAT(Symmetric NAT)
对称型 NAT 是最严格的 NAT 类型:
- 特点:
- 为每个连接创建唯一的映射
- 随机化源端口
- 提供最高级别的安全性
- 可能导致 P2P 应用问题
示例:多目标连接
- 内部客户端访问不同服务器时:
- 连接A:
192.168.0.1:56723
→1.1.1.1:80
映射为3.3.3.3:62000
- 连接B:
192.168.0.1:56723
→2.2.2.2:80
映射为3.3.3.3:62001
NAT 的优势
-
地址节约
- 有效缓解 IPv4 地址短缺
- 允许多个设备共享一个公网 IP
- 降低 ISP 的地址分配成本
-
安全性提升
- 提供天然的防火墙功能
- 阻止未经请求的入站连接
- 保护内部网络免受直接攻击
- 有助于防御网络蠕虫和恶意扫描
NAT 的局限性
-
连接限制
- 无法支持真正的端到端通信
- 部分网络协议可能无法正常工作
- 需要特殊配置才能支持入站连接
-
架构影响
- 违背了 Internet 端到端通信的设计理念
- 部分 ISP 仅提供私有 IP,影响服务质量
- 可能导致连接建立延迟增加
-
可靠性问题
- NAT 设备故障会影响所有连接
- 需要维护状态表,增加了复杂性
- 可能影响网络性能和延迟
参考资料
- [1] RFC 2663: IP Network Address Translator (NAT) Terminology and Considerations
- [2] RFC 3022: Traditional IP Network Address Translator (Traditional NAT)
- [3] IETF: Architectural Implications of NAT
- [4] Wikipedia: Network Address Translation