静态 NAT 和端口地址转换

静态 NAT 和端口地址转换

我读过有关 NAT 的文章。它有 3 种类型。

  1. 静态——私有地址和公共地址之间的一对一映射。
  2. 动态 - 从公有地址池中选择一个公有地址,并将其映射到一个私有地址。这也是一对一映射。
  3. 过载/PAT - 在这种情况下,端口号将发挥作用,将一组私有地址映射到公共地址或一组更小的公共地址。

在前两种情况下,NAT 表将具有 IP 地址对,但在最后一种情况下,NAT 表将具有 IP+端口号对。

我还读到,通信时可以通过端口号来区分不同的应用程序。

我的问题是:让我们考虑一个静态 NAT,其中本地主机映射到全局 IP 地址。如果此主机运行多个应用程序,并且每个应用程序使用不同的端口号,那么 NAT 表是否也具有端口号映射?换句话说,在静态 NAT 中,如果没有端口号,如何处理/区分来自特定主机的不同应用程序的请求?

答案1

NAT 实现各不相同。即使是 3 种类型的 NAT 也并不总是像您描述的那样。静态 NAT 可以有静态 IP + 端口。即私有 IP/端口映射到公共 IP/端口。并且您可以将不同的私有 IP/端口映射到相同的公共 IP 但不同的端口。(事实上,NAT 的类型远不止 3 种,但这是另一个讨论)

话虽如此,我们继续你的例子。比如说静态 NAT 192.168.1.2 => 25.4.233.34

NAT 实现通常有一个 NAT 转换表来查找传入数据包,该数据包具有 Internet 主机的源 IP 和 NAT 的公共 IP 之一的目标 IP。每当发生新的转换时,此转换表都会更新,并且有时会过期。

如果存在完整三元组匹配(即源 IP/端口、目标 IP/端口、IP 协议),NAT 将使用该匹配进行转换。它也可能是部分匹配(您可以认为静态 NAT 条目有一个使用端口通配符的半条目)。假设收到的数据包是TCP 213.3.2.4:33442 -> 25.4.233.34:80

如果匹配 ( 24.4.233.34),它将使用静态转换将传入的目标 IP ( 24.4.233.34) 映射到静态 NAT 中的私有 IP ( 192.168.1.2)。在静态 NAT 条目的情况下,NAT 只需转换目标 IP,端口则不做修改直接通过。主机192.168.1.2将根据目标端口将数据包分发给应用程序。即,端口 TCP 80 上的应用程序将接收数据包。

相关内容