NAT 是否完全改变了 L3 封装?

网络工程 ip 网络
2022-02-28 12:03:55

假设我发送的请求 https 服务器的数据包成功到达我的目标 (NAT) 路由器。

路由器接收到它并通过端口转发/触发策略,它知道它必须在端口 443 上发送 IP 地址为 192.168.0.100 的服务器 1。但它收到的数据包具有源路由器公共 IP 的 L3 封装( ME)和目标路由器公共 IP(THEM)。我知道它用一个新的帧封装了数据包,这是一个新的 Source Mac 和 Destination Mac 通过 LAN 发送并找到正确的设备。但我听说 L3-Encapsulation 没有改变。真的吗?

这是否意味着 server-1 接收到的数据包将仅具有具有两个公共 IP 地址的旧 L3 封装,或者它是否更改为自己的私有 IP 192.168.0.100 和路由器的私有 IP 192.168.0.1?

2个回答

这是否意味着 server-1 接收到的数据包将仅具有具有两个公共 IP 地址的旧 L3 封装,或者它是否更改为自己的私有 IP 192.168.0.100 和路由器的私有 IP 192.168.0.1?

在您描述的场景中,目标 (NAT) 路由器根据 NAT 策略修改第 3 层信息(IP 地址),此外还删除和替换作为正常路由的一部分执行的第 2 层信息。

在典型的静态 NAT 中,数据包的目标地址被修改以匹配真实服务器地址的地址。反向修改返回包,使服务器的真实地址替换为NAT地址。

结果是源设备和目标服务器都不知道 NAT 正在发生。源将流量发送到 NAT 地址,它接收的流量来自同一地址。

服务器接收到发给它的数据包,并且不知道路由器修改了目标地址。

正如其他人指出的那样,虽然这是一种非常常见的 NAT 场景,但还有许多其他使用 NAT 的方法。

...到达我的目标路由器

我假设您的意思是您的 WAN 路由器,它使用数据包的寻址地址(使用 IPv4 NAT)。通常,目的地绝不是路由器,而是主机。

但是它收到的数据包具有源路由器公共 IP(ME)和目标路由器公共 IP(THEM)的 L3 封装。

不会。数据包仅由 L2 帧封装(从最后一跳路由器到当前路由器的地址,通常通过 MAC)。IP 数据包又封装了一个 TCP 段(或来自更高层协议的任何其他内容)。通常,IP 数据包从源主机寻址到目的主机,周期。

只有 IPv4 和 NAT 才需要翻译。在您的情况下,有从公共 IP 空间到私有主机的目标 NAT 。NAT 路由器需要一个端口转发规则。由于数据包的地址是路由器自己的公共 IP 和 L4 端口(符合规则),因此它将publicIP:publicPort转换为实际服务器上的privateIP:privatePort 。然后它转发数据包。

仅当数据包需要通过基于 MAC 的网络(如以太网)时才需要 MAC 地址。路由器 ARP 主机 IP 并将该 MAC 地址用作封装帧的目的地。