NAT 和 NAT 表

cal*_*een 6 networking router wireless-networking nat ip

我试图了解 NAT 和 NAT 表的工作原理,但似乎无法在线找到答案。我有几个关于 NAT 的问题。假设已建立 TCP 连接。

假设路由器有 WAN 201.22.14.15

1) 假设 IP 为 192.168.1.1 的设备想要连接到 IP 为 137.132.1.15 的服务器。设备首先将数据封装在一个 IP 数据报中,源 IP 为 192.168.1.1,目标 IP 为 137.132.1.15?

2) 之后数据报被发送到发生 NAT 的路由器。假设这是在专用网络中发送的第一个数据包,NAT 表最初是空的?

3) 现在表中有一个条目将 192.168.1.1:1234 映射到 201.22.14.15:2345。?

192.168.1.1:1234 -> 201.22.14.15:2345
Run Code Online (Sandbox Code Playgroud)

IP 数据报在发送前会使用相应的路由器地址(201.22.14.15)和端口号 2345 重新打包。从路由器到服务器是否有单独的 TCP 连接?或者该条目只是分配了一个虚拟端口号?

4)数据从服务器137.132.1.15返回,dst IP为201.22.14.15,目标端口为2345。路由器查表,发现201.22.14.15:2345映射到192.168.1.1:122 所以它重新打包了 src 地址为 137.132.1.15:80 和 dst 地址为 192.168.1.1:1234 的 IP 数据报

我不确定我强调的步骤是否正确。

小智 4

我会尽量简单地解释。主要有两种类型的 NAT:

  • 源 NAT:通常称为“伪装”,它用您的本地 IP 地址屏蔽您的本地 IP 地址,以便它可以与网络中不知道到您本地网络的路由的主机进行通信。
  • 目标 NAT:通常称为“端口转发”,它将目标网络地址转换为外部网络中的本地地址。

我认为您所描述的是源 NAT,即从本地网络到互联网中的服务器的通信。发生的事情正如你所说,但让我稍微改一下:

  1. 您生成从本地网络到互联网的连接:192.168.1.1 -> 137.132.1.15:PORT,您的源端口是随机的。
  2. 根据您的路由表,在 IP 为 192.168.1.1 的本地主机中,您的数据包将前往下一跳,通常是您的互联网目的地的默认网关。
  3. 当您的数据包到达配置了源 NAT 的设备时,它将转换源地址,伪装数据包的源并将其转换为201.22.14.15 -> 137.132.1.15:PORT. 它会记住此连接来自您的本地 IP 192.168.1.1。
  4. 我们假设,在大多数情况下,137.132.1.15 是一个防火墙,它将目标端口 PORT NAT 到外部本地网络,例如 10.0.0.1,并且假设它是一个 Web 服务器,因此它将转换数据包作为201.22.14.15 -> 10.0.0.1:80
  5. 10.0.0.1 的服务器会收到来自 201.22.14.15 的请求,当返回时,另一条路上也会发生同样的事情,根据他的路由表,他会回到 201.22.14.15。
  6. 路由器/防火墙需要以另一种方式伪装,将数据包地址更改为137.132.1.15 -> 201.22.14.15
  7. 您位于 201.22.14.15 的路由器将接收该数据包,将能够检测到该数据包与 192.168.1.1 生成的流相关,并返回响应。192.168.1.1 将看到来自 137.132.1.15 的数据包,因为 10.0.0.1 已被伪装。

希望它能有所帮助,并且不会产生更多混乱。

边注

TCP 连接不是以数据报的形式组织的,它们是流。数据报是UDP。