数据包遍历如何在 NAT 过载的公共网络上工作

网络工程 路由 路由器 纳特 包路径
2022-02-20 14:07:35

假设我有一个专用网络连接到 Internet,Router1 上的默认网关为 192.168.1.1。现在,该网络上的主机(Host#1, 192.168.1.10)想要通过公共 Internet 将数据包发送到另一个专用网络 192.168.2.0/24 上的主机(Host#2,192.168.2.10),RouterB 作为其默认网关。来自 192.168.1.0/24 网络的数据包被 NAT 到,比如说,100.100.100.100,对于网络 192.168.2.0/24,它是 101.101.101.101。

这是我对数据包流动的感觉

  1. Host#1 创建一个数据包,其源 IP 和目标 IP 分别为 192.168.1.10 和 192.168.2.10。(我不确定。目标 IP 是 Host#2 的公共 IP 还是私有 IP?)。
  2. 数据包到达 Router1 并被 NAT 到公共 IP 地址 100.100.100.100 和 101.101.101.101。
  3. 数据包到达Router2。
  4. 现在,Router2 看到来自 100.100.100.100 的数据包被定向到 101.101.101.101。它如何知道它必须将数据包路由到哪个主机。

我还要补充一点,我在这里专门讨论 PAT。

1个回答

对于公共 Internet 穿越,NAT 不是一个好的选择。

退出 Router#1 时,您首先必须将源 IP 192.168.1.10 进行 SNAT 到 100.100.100.100(也可以对源 TCP/UDP 端口进行 NAT)。到达路由器#2 后,您必须将目标 IP 101.101.101.101 进行 DNAT 转换为 192.168.2.10。

如果 Host#1 使用 Host#2'2 私有 IP 作为目的地,Router#1 还必须将 DNAT 192.168.2.10 转换为 101.101.101.101,Router#2 会将其改回。

它如何知道它必须将数据包路由到哪个主机?

确切地。为了让两台主机进行透明通信,您需要静态 NAT,其公有 IP 到私有 IP 的 1:1 映射(与单个服务的端口转发相反)。您不能将公共 IP 用于其他任何事情(除非您通过相应的源地址创建特定映射)。

一般来说,这没有什么好处,而且有很多困惑。创建使用私有 IP 进行通信的隧道是一个更好的选择。私有 IP 数据包由路由器#1 封装在公共 IP 数据包中,遍历 Internet,并由路由器#2 解封装 - 原始数据包不会改变。

隧道还使两个以上的主机能够仅与两个公共 IP 端点进行透明通信。加密是另一种选择。