学习NAT PAT的细节。我了解基本原理,其中 PAT 路由器结合了一个源端口来识别在公共地址上通信的私有地址计算机,从而使公共地址端能够将数据包返回到原始私有 IP 计算机。
关于这个前提我有两个问题。
(1) 当计算机向外通信时,NAT PAT 路由器是使用发送计算机的原始源端口号(?)还是(无论出于何种原因)路由器是否将原始源端口替换为它自己的端口号(来自免费的池等?)同时在某个表中跟踪原始端口号和给定端口号?
(2) 我想知道路由器如何在 DHCP 租约更新期间处理这些源端口标识?
学习NAT PAT的细节。我了解基本原理,其中 PAT 路由器结合了一个源端口来识别在公共地址上通信的私有地址计算机,从而使公共地址端能够将数据包返回到原始私有 IP 计算机。
关于这个前提我有两个问题。
(1) 当计算机向外通信时,NAT PAT 路由器是使用发送计算机的原始源端口号(?)还是(无论出于何种原因)路由器是否将原始源端口替换为它自己的端口号(来自免费的池等?)同时在某个表中跟踪原始端口号和给定端口号?
(2) 我想知道路由器如何在 DHCP 租约更新期间处理这些源端口标识?
(1) 实现方式各不相同,但最常见的 NAPT 使用路由器池中的源端口,而不考虑原始源端口。有时这可以被覆盖以使用特定的源端口(例如 SMTP 的端口 25)。
(2) DHCP 与 NAT 无关。使用直接 DHCP,发现不会跨越路由器,并且作为广播,也不会经过 NAT。使用 DHCP 中继,所有信息都包含在数据包的有效载荷中。(包装)IP 数据包与租用无关,它只是要约或确认的返回地址。
(1) 当计算机向外通信时,NAT PAT 路由器是使用发送计算机的原始源端口号(?)还是(无论出于何种原因)路由器是否将原始源端口替换为它自己的端口号(来自免费的池等?)同时在某个表中跟踪原始端口号和给定端口号?
PAT 是 Cisco 特定于 NAPT*(网络地址端口转换)的术语。NAPT 设备替换(转换)TCP 和UDP 的IPv4 地址和传输地址(端口),或ICMP 的查询ID。传输地址来自所使用的传输协议(TCP、UDP 或 ICMP)的池,因此存在三个传输池,并且对于三个传输协议中的每一个都有一个转换表。转换表允许将回复转换回原始 IPv4 地址和传输地址。
(2) 我想知道路由器如何在 DHCP 租约更新期间处理这些源端口标识?
这是两件完全不同的事情,如果主机上的 IPv4 地址发生变化,那么 NAPT 就会损坏。没有 NAT 的 TCP 连接也会发生这种情况,因为它取决于源和目标 IP 以及 TCP 地址在连接期间保持不变。通常,DHCP 更新将为主机提供相同的地址。主机通常会在大约一半的 DHCP 租用期向 DHCP 服务器询问相同的地址。
* RFC 2663,IP 网络地址转换器 (NAT) 术语和注意事项:
4.1.2. 网络地址端口转换 (NAPT)
NAPT 通过还翻译传输标识符(例如,TCP 和 UDP 端口号、ICMP 查询标识符)进一步扩展了翻译的概念。这允许将多个私有主机的传输标识符多路复用为单个外部地址的传输标识符。NAPT 允许一组主机共享一个外部地址。请注意,NAPT 可以与基本 NAT 结合使用,以便将外部地址池与端口转换结合使用。
对于从专用网络出站的数据包,NAPT 将转换源 IP 地址、源传输标识符和相关字段,例如 IP、TCP、UDP 和 ICMP 标头校验和。传输标识符可以是 TCP/UDP 端口或 ICMP 查询 ID 之一。对于入站数据包,将转换目标 IP 地址、目标传输标识符以及 IP 和传输标头校验和。
图 2 中的 NAPT 路由器可以配置为将源自 N-Pri 的会话转换为单个外部地址,例如 Addr-i。
很多时候,NAPT路由器的外部接口地址Addr-Nx被用作映射N-Pri的地址。