Azure NAT 网关资源

本文介绍 NAT 网关资源的关键组件,这些组件使其能够提供高度安全、可缩放和可复原的出站连接。 NAT 网关可以通过支持的客户端在订阅中配置。 这些客户端包括 Azure 门户、Azure CLI、Azure PowerShell、资源管理器模板或适当的替代方法。

NAT 网关体系结构

Azure NAT 网关使用软件定义的网络作为完全托管的分布式服务运行。 根据设计,NAT 网关跨越多个容错域,使它能够承受多个故障,而不会对服务造成任何影响。 NAT 网关为 Azure 虚拟网络的关联子网中的专用实例提供源网络地址转换(SNAT)。 虚拟机的专用 IP 经过 SNAT 转换到 NAT 网关的静态公共 IP 地址,以便连接到 Internet。 NAT 网关还仅为出站始发连接的响应数据包提供目标网络地址转换 (DNAT)。

示意图显示了包含虚拟机的 NAT 网关资源。

图:用于出站到 Internet 的 NAT 网关

配置到虚拟网络内的子网时,NAT 网关将成为子网中所有指向 Internet 的出站流量的默认下一跃点类型。 无需额外的路由配置。 NAT 网关不提供来自 Internet 的未经请求的入站连接。 DNAT 仅针对作为对出站数据包的响应而到达的数据包执行。

子网

NAT 网关可以附加到虚拟网络中的多个子网,以提供与 Internet 的出站连接。 当 NAT 网关附加到子网时,它假定默认路由到 Internet。 NAT 网关充当所有出站到互联网流量的下一个跳点。

以下子网配置不能与 NAT 网关一起使用:

  • 每个子网不能附加多个 NAT 网关。

  • NAT 网关无法附加到来自不同虚拟网络的子网。

  • NAT 网关不能与网关子网一起使用。 网关子网是 VPN 网关在 Azure 虚拟网络和本地位置之间发送加密流量的指定子网。 有关网关子网的详细信息,请参阅网关子网

静态公共 IP 地址

NAT 网关可以与静态公共 IP 地址或公共 IP 前缀相关联。 如果分配公共 IP 前缀,则会使用整个公共 IP 前缀。 可以直接使用公共 IP 前缀,也可以跨多个 NAT 网关资源 分发该前缀的公共 IP 地址 。 NAT 网关将所有流量发送到前缀的 IP 地址范围。

  • NAT 网关不能与 IPv6 公共 IP 地址或前缀一起使用。 它最多支持 16 个 IPv4 公共 IP 地址。
  • NAT 网关不能与基本 SKU 公共 IP 地址一起使用。

SNAT 端口

SNAT 端口库存由附加到 NAT 网关的公共 IP 地址、公共 IP 前缀或两者共同提供。 SNAT 端口清单按需提供给附加到 NAT 网关的子网中的所有实例。 无需为每个实例预分配 SNAT 端口。

有关 SNAT 端口和 Azure NAT 网关的详细信息,请参阅使用 Azure NAT 网关进行源网络地址转换 (SNAT)

在将虚拟网络中的多个子网附加到同一 NAT 网关资源时,NAT 网关提供的 SNAT 端口清单将会跨所有子网共享。

SNAT 端口充当唯一标识符,用于区分不同的连接流。 可以使用同一 SNAT 端口同时连接到不同的目标终结点

不同的 SNAT 端口用于建立与同一目标终结点的连接,以便区分不同的连接流。 重复使用以连接到同一目标的 SNAT 端口将放在 重用冷却计时器上,然后才能重复使用。

示意图显示了 SNAT 端口分配。

图:SNAT 端口分配

单个 NAT 网关可以按与之关联的公共 IP 地址数进行缩放。 每个 NAT 网关公共 IP 地址提供 64,512 个 SNAT 端口以建立出站连接。 NAT 网关可以纵向扩展到超过 100 万个 SNAT 端口。 TCP 和 UDP 是独立的 SNAT 端口清单,与 NAT 网关无关。

可用性区域

NAT 网关是一种区域性资源,这意味着它可以在各个可用性区域内部署和运行。 如果与 NAT 网关关联的区域出现故障,则与 NAT 网关关联的子网的出站连接将受到影响。

有关可用性区域和 Azure NAT 网关的详细信息,请参阅可用性区域设计注意事项

NAT 网关的单区域部署示意图。

图:NAT 网关的单区域部署。

部署 NAT 网关后,无法更改区域选择。

协议

NAT 网关与 UDP 和 TCP 流的 IP 和 IP 传输标头进行交互。 NAT 网关对应用层有效负载不可知。 不支持其他 IP 协议,例如 ICMP。

TCP 重置

当 NAT 网关检测到不存在的连接流上的流量时,将发送 TCP 重置数据包。 TCP 重置数据包向接收终结点指示连接流已释放,并且同一 TCP 连接上将来的任何通信都将失败。 TCP 重置对于 NAT 网关是单向的。

如果出现以下情况,则连接流可能不存在:

  • 在连接流上处于非活动状态一段时间后,达到空闲超时,并以无提示方式中断了连接。

  • 来自 Azure 网络端或公共 Internet 端的发送方在连接中断后发送了流量。

TCP 重置数据包仅在检测到中断的连接流上的流量时发送。 此操作意味着在连接流中断后,TCP 重置数据包可能不会立即发送。

无论流量来自 Azure 网络端还是公共 Internet 端,系统都会发送 TCP 重置数据包,以响应检测不存在的连接流上的流量。

TCP 空闲超时

NAT 网关为 TCP 协议提供 4 分钟到 120 分钟的可配置空闲超时范围。 UDP 协议的不可配置的空闲超时为 4 分钟。

当连接空闲时,NAT 网关会一直占用 SNAT 端口,直到连接空闲超时。当由于长时间空闲超时计时器可能会不必要地增加 SNAT 端口耗尽的可能性,因此建议不要将 TCP 空闲超时持续时间增加到超过默认的 4 分钟。 空闲计时器不会影响从不处于空闲状态的流。

TCP keepalive 可用于提供刷新长时间空闲连接和终结点活动状态检测的模式。 有关详细信息,请参阅 .NET 示例。 TCP Keepalive 以重复 ACK 的形式显示给终结点,其开销较低,对应用层不可见。

UDP 空闲超时计时器不可配置,应使用 UDP keepalive 来确保未达到空闲超时值,从而保持连接。 与 TCP 连接不同,在连接的一端启用 UDP keepalive 功能仅适用于一个方向的流量流。 必须在流量流的两端均启用 UDP keepalive,从而保持流量流活动状态。

计时器

端口重用计时器

端口重用计时器确定连接关闭后源端口处于阻塞状态的时间,在此时间结束后,该端口才能被 NAT 网关重新用于到达同一目标终结点的新连接。

下表提供了有关 TCP 端口何时可供 NAT 网关重复用来连接到同一目标终结点的信息。

计时器 描述
TCP FIN TCP FIN 数据包关闭连接后,将激活一个占用 SNAT 端口的 65 秒计时器。 该计时器结束后,该 SNAT 端口可供重用。 65 秒
TCP RST TCP RST 数据包(重置)关闭连接后,将激活一个占用 SNAT 端口的 16 秒计时器。 该计时器结束时,该端口可供重用。 16 秒
TCP 半开 在建立连接期间,当一个连接终结点正在等待另一终结点的确认时,将激活 30 秒计时器。 如果未检测到任何流量,则连接将会关闭。 连接关闭后,可以重用源端口连接到同一目标终结点。 30 秒

对于 UDP 流量,连接关闭后,端口将保持占用状态 65 秒,然后可供重用。

空闲超时计时器

计时器 描述
TCP 空闲超时 如果在任一终结点之间长时间未传输任何数据,则 TCP 连接可能处于空闲状态。 计时器可配置为 4 分钟(默认)到 120 分钟(2 小时),用于在空闲连接超时后断开连接。 流中的流量会重置空闲超时计时器。 可配置;4分钟(默认)- 120 分钟
UDP 空闲超时 如果在任一终结点之间长时间未传输任何数据,则 UDP 连接可能处于空闲状态。 UDP 空闲超时计时器为 4 分钟,且不可配置。 流中的流量会重置空闲超时计时器。 不可配置;4 分钟

注意

这些计时器设置随时可能更改。 提供这些值以帮助进行故障排除,目前不应依赖于特定计时器。

Bandwidth

NAT 网关提供 50 Gbps 的吞吐量,在出站和入站(响应)数据之间拆分。 对于每个 NAT 网关资源的出站(响应)数据,数据吞吐量限制为 25 Gbps,对于入站(响应)数据,限制为 25 Gbps。

性能

NAT 网关每个公共 IP 地址最多可以支持 50,000 个并发连接,通过 Internet 连接到同一目标终结点 ,用于 TCP 和 UDP 流量。

NAT 网关可以同时支持多达 200 万个活动连接。 NAT 网关上的连接数基于 5 元组(源 IP 地址、源端口、目标 IP 地址、目标端口和协议)进行计数。 如果 NAT 网关超过 200 万个连接,则数据路径可用性会下降,新连接会失败。

NAT 网关每秒最多可以处理 500 万个数据包。

限制

  • 基本负载均衡器与 NAT 网关不兼容。 请改用标准负载均衡器。

  • 基本公共 IP 与 NAT 网关不兼容。 请改用标准公共 IP。

  • NAT 网关不支持 ICMP

  • IP 分段不适用于 NAT 网关。

  • NAT 网关不支持启用了 DDoS 保护的公共 IP。 有关详细信息,请参阅DDoS 限制

  • 安全虚拟网络(vWAN)体系结构不支持 Azure NAT 网关。

后续步骤