目录

NAT-NAPT

NAT NAPT

NAT

NAT(Network Address Translation,网络地址转换) 主要用于在不同网络(如 私有网络和公共互联网 )之间进行 IP 地址转换 ,解决 IP 地址短缺 问题,并提供一定的 安全性

  • IPv4 地址是 32 位 (最多 2^32 ≈ 43 亿 个地址),但全球设备数量远超这个范围。
  • 私有 IP 地址(如 192.168.1.0/24 )不能直接在公网使用 ,必须通过 NAT 转换成公网 IP。

NAT IP转换过程

当主机A私有IP地址访问服务器公有IP时,先把数据发给路由器,NAT 路由器将报文的源地址从 10.0.0.10 替换成全局的 IP 202.244.174.37;并在转换表中建立私有IP和公有IP的映射关系。

当服务器返回报文时,NAT 路由器收到外部的数据时, 再根据转变表的映射关系,把目标 IP 从 202.244.174.37 替换回10.0.0.10;

当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系;

https://i-blog.csdnimg.cn/direct/f518a3bdf7664a02bf01478176301040.png

NAPT

那么问题来了, 如果局域网内, 有多个主机都访问同一个外网服务器 , 那么对于服务器返

回的数据中, 目的 IP 都是相同的 . 那么 NAT 路由器如何判定将这个数据包 **转发给哪个

局域网的主机?**

这时候就不能但使用IP建立联系,要用IP+port。

https://i-blog.csdnimg.cn/direct/861d17ec0d6249b7860f15001109a8a2.png

同一个子网中每个主机的私有 IP 是唯一的 ,即使端口号一样,也能保证唯一性。 IP+端口号保证了在同一个子网中,每台主机以及主机上客户端的唯一性。

NAPT,转换的公网IP一样, 但可以分配不同的端口号,也保证了唯一性。

这样映射双方都保证了唯一性。

再来想一下,同一子网中主机的私有IP不同,但不同子网的私有IP可能会相同。如果这两个子网有同一个路由器,在 不同子网的两个主机私有IP相同,端口号也相同 ,访问同一个服务器,会怎么样?

即使不同子网的主机 IP + 端口号相同, NAPT 仍然能基于 NAT 端口号 + 子网信息( NAPT 设备用来区分不同子网的标识信息: 入接口 eth 源子网 VLAN 标识 )唯一映射,确保数据包不会错误地送达另一台主机。

子网 A 的 192.168.1.100:5001 → 203.0.113.1:30001

子网 B 的 192.168.1.100:5001 → 203.0.113.1:30002

服务器返回数据时,NAPT 设备根据 NAT 端口号找到正确的原始子网,并正确转发回去。

其他 NAT 方案:

  • 策略 NAT(Policy-Based NAT)

    • 不同子网使用不同的 NAT 端口范围 ,确保 NAT 端口不重叠。
    • 例如:
      • 子网 A:NAT 端口 30000-31000
      • 子网 B:NAT 端口 31001-32000
  • 使用多个公网 IP

    • 如果 NAT 设备支持多个公网 IP, 可以为不同子网分配不同的公网 IP ,避免 NAT 端口冲突:
      • 子网 A → 203.0.113.1
      • 子网 B → 203.0.113.2