排查 NAT 网关和 Azure 服务的出站连接问题
本文提供相关指导,讲解如何在将 NAT 网关与其他 Azure 服务配合使用时排查连接问题,这些服务包括:
Azure 应用服务
Azure 应用服务
已关闭 Azure 应用服务区域虚拟网络集成
可将 NAT 网关与 Azure 应用服务一起使用,以允许应用程序从虚拟网络发起出站调用。 若要在 Azure 应用服务与 NAT 网关之间使用此集成,必须启用区域虚拟网络集成。 请参阅区域虚拟网络集成的工作原理了解详细信息。
若要将 NAT 网关与 Azure 应用服务一起使用,请执行以下步骤:
请确保应用程序配置了虚拟网络集成,请参阅启用虚拟网络集成。
请确保为虚拟网络集成启用了“全部路由”,请参阅配置虚拟网络集成路由。
创建 NAT 网关资源。
创建新的公共 IP 地址,或将网络中的现有公共 IP 地址附加到 NAT 网关。
将 NAT 网关分配到用于虚拟网络与应用程序的集成的同一子网。
有关如何配置 NAT 网关与虚拟网络的集成的分步说明,请参阅配置 NAT 网关集成。
有关 NAT 网关和 Azure 应用服务集成的重要说明:
虚拟网络集成不提供从虚拟网络对应用的入站专用访问。
由于虚拟网络集成流量的操作方式,它不会出现在 Azure 网络观察程序或网络安全组 (NSG) 流日志中。
应用服务未使用 NAT 网关公共 IP 地址连接出站
即使未启用虚拟网络集成,应用服务仍可出站连接到 Internet。 默认情况下,可直接通过 Internet 访问应用服务中托管的应用,并且这些应用只能访问 Internet 托管的终结点。 若要了解详细信息,请参阅应用服务网络功能。
如果注意到用于连接出站的 IP 地址不是 NAT 网关公共 IP 地址,请检查虚拟网络集成是否已启用。 确保将 NAT 网关配置为用于与应用程序集成的子网。
若要验证 Web 应用程序是否正在使用 NAT 网关公共 IP,请对 Web 应用上的虚拟机进行 ping 处理并通过网络捕获检查流量。
Azure Kubernetes 服务
如何使用 Azure Kubernetes 服务 (AKS) 群集部署 NAT 网关
可以使用 AKS 群集部署 NAT 网关,从而支持显式出站连接。 可通过两种不同的方法使用 AKS 群集部署 NAT 网关:
托管 NAT 网关:Azure 在创建 AKS 群集时部署 NAT 网关。 AKS 管理 NAT 网关。
用户分配的 NAT 网关:将 NAT 网关部署到 AKS 群集的现有虚拟网络。
若要了解详细信息,请参阅托管 NAT 网关。
通过 Internet 从 AKS 群集连接到 AKS API 服务器
若要管理 AKS 群集,请与其 API 服务器进行交互。 创建解析为 API 服务器完全限定域名 (FQDN) 的非专用群集时,默认为 API 服务器分配一个公共 IP 地址。 将 NAT 网关附加到 AKS 群集的子网后,NAT 网关将用于连接到 AKS API 服务器的公共 IP。 请参阅以下文档以获取更多信息和设计指导:
无法更新 AKS 群集的 NAT 网关 IP 或空闲超时计时器
只能使用用于托管 NAT 网关的 az aks update
命令更新 NAT 网关的公共 IP 地址和空闲超时计时器。
如果为 AKS 子网部署了用户分配的 NAT 网关,就无法使用 az aks update
命令更新公共 IP 地址或空闲超时计时器。 用户管理用户指定的 NAT 网关。 需要在 NAT 网关资源上手动更新这些配置。
使用以下步骤更新用户分配的 NAT 网关上的公共 IP 地址:
在资源组中,选择门户中的 NAT 网关资源。
在左侧导航栏的“设置”下,选择“出站 IP” 。
若要管理公共 IP 地址,请选择“更改”(显示为蓝色)。
从右侧滑入的“管理公共 IP 地址和前缀”配置中,请从下拉菜单中更新已分配的公共 IP,或选择“创建新的公共 IP 地址”。
完成 IP 配置更新后,请选择屏幕底部的“确定”按钮。
配置页面消失后,选择“保存”按钮可保存更改。
重复步骤 3-6,对公共 IP 前缀执行相同操作。
请使用以下步骤更新用户分配的 NAT 网关上的空闲超时计时器配置:
在资源组中,选择门户中的 NAT 网关资源。
在左侧导航栏的“设置”下,选择“配置” 。
在“TCP 空闲超时(分钟)”文本栏中,调整空闲超时计时器(计时器可配置为 4-120 分钟)。
完成后,选择“保存”按钮。
备注
如果将 TCP 空闲超时计时器增加到超过 4 分钟,可能会增加 SNAT 端口耗尽的风险。
Azure 防火墙
与 Azure 防火墙出站连接时源网络地址转换 (SNAT) 耗尽
Azure 防火墙可以提供到虚拟网络的出站互联网连接。 Azure 防火墙仅为每个公共 IP 地址提供 2,496 个 SNAT 端口。 虽然 Azure 防火墙最多可以与 250 个公共 IP 地址关联以处理出口流量,但进行出站连接可能需要较少的公共 IP 地址。 要求使用较少的公共 IP 地址进行出站连接是由于目标终结点的体系结构要求和允许列表限制。
若要为出站流量提供更大可伸缩性并降低 SNAT 端口耗尽风险,一种方法是在 Azure 防火墙所在的子网中使用 NAT 网关。 有关如何在 Azure 防火墙子网中设置 NAT 网关的更多信息,请参阅将 NAT 网关与 Azure 防火墙集成。 有关 NAT 网关如何与 Azure 防火墙协同工作的更多信息,请参阅使用 Azure NAT 网关扩展 SNAT 端口。
注意
vWAN 体系结构不支持 NAT 网关。 NAT 网关无法配置到 vWAN 中心内的 Azure 防火墙子网。
Azure Databricks
如何使用 NAT 网关从 Databricks 群集连接出站
创建 Databricks 工作区时,NAT 网关可用于从 Databricks 群集连接出站。 可通过下面两种方式之一将 NAT 网关部署到 Databricks 群集:
在 Azure Databricks 创建的默认虚拟网络上启用安全群集连接(无公共 IP)时,Azure Databricks 会自动部署 NAT 网关,以从工作区的子网出站连接到互联网。 Azure Databricks 在托管资源组内创建此 NAT 网关资源,不能修改此资源组或其中部署的任何其他资源。
在你自己的虚拟网络中部署 Azure Databricks 工作区后(通过虚拟网络注入),可将 NAT 网关部署到工作区的两个子网中并对其进行配置,以确保通过 NAT 网关进行出站连接。 可以使用 Azure 模板或通过门户来实现此解决方案。
后续步骤
我们一直在努力改善客户体验。
若要详细了解 NAT 网关,请参阅: