你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

排查 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 网关脱离失败状态,请按照以下说明操作:

  1. 标识处于失败状态的资源。 转到 Azure 资源资源管理器并识别处于此状态的资源。

  2. 将右上角的切换更新为“读/写”。

  3. 对处于失败状态的资源选择“编辑”。

  4. 选择“PUT”,然后选择“GET”,以确保预配状态已更新为“成功”。

  5. 然后当资源不再处于失败状态后,可以继续执行其他操作。

添加或删除 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 中的命令进行操作)。

使用 Azure 资源浏览器使虚拟机网络接口脱离失败状态

  1. 转到 Azure 资源管理器(建议使用 Microsoft Edge 浏览器)

  2. 展开订阅(几秒钟后才能显示)。

  3. 展开包含处于失败状态的虚拟机网络接口的订阅

  4. 展开 resourceGroups。

  5. 展开包含处于失败状态的虚拟机网络接口的正确资源组。

  6. 展开提供程序。

  7. 展开 Microsoft.Network。

  8. 展开 networkInterfaces。

  9. 选择处于预配失败状态的网络接口。

  10. 选择顶部的“读/写”按钮。

  11. 选择绿色的“GET”按钮。

  12. 选择蓝色的“编辑”按钮。

  13. 选择绿色的“PUT”按钮。

  14. 选择顶部的“只读”按钮。

  15. 虚拟机网络接口现在应处于成功预配状态。 可以关闭浏览器。

添加或删除公共 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 网关问题,请通过本页底部的 GitHub 提交反馈。 我们会尽快处理你的反馈,以改善客户体验。

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