我试图在Azure中理解outbound connections,有一个特定的观点确实让我感到困惑,
多个流,每个流到不同的目标IP地址,端口和 协议,共享一个SNAT端口
我无法理解以上几点,不同目标IP地址,端口和协议的多个流如何共享一个SNAT端口?
例如,
本地内部->内部全局-> Oustide全局
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?
答案 0 :(得分:0)
多个流如何使不同的目标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 不知道内部IP 10.10.10.40:11111 ,因为它们被SNAT隐藏在VIP后面。因此,响应将发送到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。