次の方法で共有

排查 Azure NAT 网关问题

本文提供有关如何正确配置 NAT 网关并排查常见配置和部署相关问题的指导。

NAT 网关配置基础知识

检查这些设置以通过 NAT 网关启用出站流量。

  1. 已将至少一个公共 IP 地址或一个公共 IP 前缀附加到 NAT 网关。 必须将至少一个公共 IP 地址与 NAT 网关相关联,这样网关才能提供出站连接。

  2. 将至少一个子网附加到 NAT 网关。 可将多个子网附加到 NAT 网关以建立出站连接,但这些子网必须在同一个虚拟网络中。 NAT 网关不能跨越单个虚拟网络。

  3. 没有网络安全组 (NSG) 规则或用户定义的路由 (UDR) 阻止 NAT 网关将流量定向到 Internet。

如何验证连接性

NAT 网关 支持用户数据报协议(UDP)和传输控制协议(TCP)协议。

Note

NAT 网关不支持 ICMP 协议。 不支持使用 ICMP 协议执行 Ping 操作,预期它会失败。

若要验证 NAT 网关的端到端连接,请执行以下步骤:

  1. 验证是否正在使用 NAT 网关公共 IP 地址

  2. 执行 TCP 连接测试和 UDP 特定的应用程序层测试。

  3. 查看 NSG 流日志,以分析来自 NAT 网关的出站流量流。

有关用于验证 NAT 网关连接的工具,请参阅下表。

操作系统 常规 TCP 连接测试 TCP 应用层测试 UDP
Linux nc(常规连接测试) curl(TCP 应用层测试) 特定于应用程序
Windows PsPing PowerShell Invoke-WebRequest 特定于应用程序

如何分析出站连接

若要分析来自 NAT 网关的出站流量,请使用虚拟网络 (VNet) 流日志。 VNet 流日志提供虚拟机的连接信息。 连接信息包含源 IP 和端口、目标 IP 和端口以及连接状态。 还会记录流量流方向以及流量大小(以发送的数据包和字节的数量表示)。 VNet 流日志中指定的源 IP 和端口适用于虚拟机,而非 NAT 网关。

添加或删除 NAT 网关

无法删除 NAT 网关

必须从虚拟网络中的所有子网拆离 NAT 网关,然后才能移除或删除资源。 有关分步指导,请参阅从现有子网中删除 NAT 网关并删除资源

添加或删除子网

NAT 网关不能附加到已附加到另一个 NAT 网关的子网

一个虚拟网络中的一个子网不能附加多个 NAT 网关以便出站连接到 Internet。 一个单独的 NAT 网关资源可以关联到同一虚拟网络中的多个子网。 NAT 网关不能跨越单个虚拟网络。

基本资源不能与 NAT 网关位于同一子网中

NAT 网关不与基本负载均衡器或基本公共 IP 等基本资源兼容。 基本资源必须放置在不与 NAT 网关关联的子网中。 基本负载均衡器和基本公共 IP 可以升级到标准层,以便与 NAT 网关一起使用。

不能将 NAT 网关附加到网关子网

NAT 网关不能部署在网关子网中。 VPN 网关使用网关子网在 Azure 虚拟网络和本地位置之间发送加密流量。 请参阅 VPN 网关概述来详细了解 VPN 网关如何使用网关子网。 若要使用 NAT 网关,请将其附加到同一虚拟网络中的其他任何子网。

无法将 NAT 网关附加到包含处于失败状态的虚拟机网络接口的子网

将 NAT 网关关联到包含处于失败状态的虚拟机网络接口(网络接口)的子网时,你会收到一条错误消息,指示无法执行此操作。 必须先解析虚拟机网络接口失败状态,然后才能将 NAT 网关附加到子网。

若要使虚拟机网络接口脱离失败状态,可以使用以下两种方法之一。

使用 PowerShell 使虚拟机网络接口脱离失败状态

  1. 使用 Get-AzNetworkInterface PowerShell 命令 确定网络接口的预配状态,并将“provisioningState”的值设置为“Succeeded”。

  2. 在网络接口上执行 GET/SET PowerShell 命令。 PowerShell 命令将更新预配状态。

  3. 通过再次检查网络接口的预配状态来检查此操作的结果(按照步骤 1 中的命令进行操作)。

添加或删除公共 IP 地址

一个 NAT 网关上的公共 IP 地址不能超过 16 个

NAT 网关不能与 16 个以上的 IPv4 公共 IP 地址相关联。 可以将公共 IP 地址和前缀的任意组合与 NAT 网关配合使用(最多总共 16 个 IP 地址)。 若要添加或移除公共 IP,请参阅添加或移除公共 IP 地址

以下 IP 前缀大小可与 NAT 网关配合使用:

  • /28(16 个地址)

  • /29(8 个地址)

  • /30(4 个地址)

  • /31(2 个地址)

IPv6 共存

NAT 网关支持 IPv4 UDP 和 TCP 协议。 NAT 网关不能与 IPv6 公共 IP 地址或 IPv6 公共 IP 前缀相关联。

不能将基本公共 IP 与 NAT 网关配合使用

NAT 网关不能用于基本资源,包括基本的公共 IP 地址。 可以使用以下指南升级要与 NAT 网关配合使用的基本公共 IP 地址:升级公共 IP 地址

公共 IP 地址和 NAT 网关的区域必须匹配

NAT 网关是区域性资源可以指定到特定区域或“无区域”。当 NAT 网关处于“无区域”状态时,Azure 会将 NAT 网关置于一个区域中,但你无法查看 NAT 网关所在的区域。

NAT 网关可以与指定到特定区域、无区域、所有区域(区域冗余)的公共 IP 地址配合使用,具体取决于其自己的可用区域配置。

NAT 网关可用性区域指定 可以使用的公共 IP 地址/前缀指定
无区域 区域冗余、无区域或区域性(为了与无区域 NAT 网关一起使用,指定的公共 IP 区域可以是一个地区内的任何区域)
指定到特定区域 可以使用区域冗余或区域公共 IP

Note

如果需要知道 NAT 网关所在的区域,请确保将其指定到特定的可用性区域。

不能将 DDoS 保护的公共 IP 与 NAT 网关配合使用

NAT 网关不支持启用 DDoS 防护的公共 IP 地址。 受 DDoS 保护的 IP 对于入站流量更为重要,因为大多数 DDoS 攻击旨在通过大量传入流量来淹没目标的资源。 若要了解有关 DDoS 保护的详细信息,请查看以下文章。

默认出站访问

尽管存在 NAT 网关,但虚拟机 NIC 仍具有默认出站 IP

有一个 NIC 级参数(defaultOutboundConnectivityEnabled),用于跟踪是否将默认出站 IP 分配给虚拟机或虚拟机规模集实例。

在某些情况下,即使配置了显式出站方法(例如 NAT 网关或 UDR)将流量定向到 NVA/防火墙,默认出站 IP 仍会分配给非专用子网中的虚拟机。 默认出站 IP 不用于出口,除非删除了这些显式方法。 通过将子网设为专用并在虚拟机上执行停止和解除分配来删除默认出站 IP。

更多故障排除指南

如果本文未涵盖你遇到的问题,请参阅其他 NAT 网关故障排除文章:

后续步骤

我们一直在努力改善客户体验。

若要详细了解 NAT 网关,请参阅: