排查 Azure NAT 网关问题

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

NAT 网关配置基础知识

检查以下配置,确保可以使用 NAT 网关来定向出站流量:

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

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

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

如何验证连接性

NAT 网关 支持 IPv4 用户数据报协议 (UDP) 和传输控制协议 (TCP) 协议。 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 网关的出站流量,请使用 NSG 流日志。 NSG 流日志提供虚拟机的连接信息。 连接信息包含源 IP 和端口、目标 IP 和端口以及连接状态。 还会记录流量流方向以及流量大小(以发送的数据包和字节的数量表示)。 NSG 流日志中指定的源 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 网关附加到子网。

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

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

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

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

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

添加或删除公共 IP 地址

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

与一个 NAT 网关关联的公共 IP 地址不能超过 16 个。 可以将公共 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 前缀相关联。 NAT 网关可部署在双堆栈子网上,但仅使用 IPv4 公共 IP 地址来定向出站流量。 如果需要 IPv6 资源与 IPv4 资源位于同一子网中,请在双堆栈子网中部署 NAT 网关。 有关请如何从双堆栈子网提供 IPv4 和 IPv6 出站连接的详细信息,请参阅使用 NAT 网关和公共负载均衡器配置双堆栈出站连接

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

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

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

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

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

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

注意

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

更多故障排除指南

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

后续步骤

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

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