【问题标题】:How PAT works in AzurePAT 在 Azure 中的工作原理
【发布时间】:2018-10-22 16:20:11
【问题描述】:

我试图了解 Azure 中的 outbound connections,有一个具体点让我很困惑,

多个流,每个流到不同的目标 IP 地址、端口和 协议,共享一个 SNAT 端口

我无法理解上面的点,多个流不同的目的IP地址、端口和协议如何共享一个SNAT端口?

例如,

内部本地 -> 内部全局 -> 外部全局

10.10.10.30 : 12345 -> 64.56.12.3: 5678 -> 1.2.3.4:80

10.10.10.40 : 11111 -> 64.56.12.3: 5678 -> 4.5.6.7:80

当从 4.5.6.7:80 返回响应时,Azure 如何知道它必须发送到哪个内部 IP,因为它们共享相同的端口号?

【问题讨论】:

  • 似乎是个好问题。如果您在 Server Fault 提出此问题,您将获得最好的帮助 :)

标签: azure networking routing nat


【解决方案1】:

多个流如何不同的目标 IP 地址、端口和 协议共享一个 SNAT 端口?

根据outbound connection每个流使用一个 SNAT 端口到单个目标 IP 地址端口。 这表示除了源信息是从虚拟网络私有 IP 地址重写之外,源端口到公网IP,SNAT端口,每一个TCP流映射也会考虑一个SNAT端口消耗时目的IP地址和端口的变化。

对于多个流,每个流到不同的目标 IP 地址、端口和协议,共享一个 SNAT 端口,因为有不同的目标 IP 地址,即 5 元组(相同的源公共IP、SNAT 端口、协议、不同的目标 IP 地址、端口)使流独一无二,无需额外的源端口来区分流。

当收到来自 4.5.6.7:80 的响应时,Azure 如何知道 由于它们共享相同的端口,因此必须发送哪个内部 IP 号码?

在这种情况下,当从4.5.6.7返回响应时,目标服务器4.5.6.7不知道内部IP10.10.10.40:11111 因为它们是 隐藏 在 VIP 后面的,因为 SNAT。因此响应发送到 VIP 和 SNAT 端口 64.56.12.3: 5678。系统会根据每个TCP流映射表(包括目的IP地址和端口)将VIP和SNAT端口翻译成源IP和源端口 10.10.10.40:11111 -> 64.56.12.3:5678 -> 4.5.6.7:80.

【讨论】:

  • 除了 TCP,NAPT 也适用于 UDP 和 ICMP,但它会破坏其他传输协议。它还会导致许多使用 TCP 或 UDP 的应用层协议出现问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-04
  • 2012-09-02
  • 2019-12-04
相关资源
最近更新 更多