Azure 应用服务中的入站和出站 IP 地址

Azure 应用服务是一个多租户服务(应用服务环境除外)。 不在应用服务环境中(不在隔离层中)的应用与其他应用共享网络基础结构。 因此,应用的入站和出站 IP 地址可能不同,在某些情况下甚至可能会更改。

应用服务环境使用专用网络基础结构,因此,应用服务环境中运行的应用将获取静态专用 IP 地址用于入站和出站连接。

IP 地址在应用服务中的工作原理

应用服务应用在应用服务计划中运行,而应用服务计划部署到 Azure 基础结构中的一个部署单元(内部称为 Web 空间)。 为每个部署单元分配一组虚拟 IP 地址,其中包含 1 个公共入站 IP 地址和一组出站 IP 地址。 同一部署单元中的所有应用服务计划和在其中运行的应用实例共享同一组虚拟 IP 地址。 对于应用服务环境(隔离层中的应用服务计划),应用服务计划是部署单元本身,因此虚拟 IP 地址专用的。

由于不允许在部署单元之间移动应用服务计划,因此分配给应用的虚拟 IP 地址通常保持不变,但也有例外。

入站 IP 更改时

不管横向扩展的实例数如何,每个应用只有一个入站 IP 地址。 执行以下操作之一时,入站 IP 地址可能会更改:

  • 删除应用,然后在其他资源组中重新创建它(部署单元可能会更改)。
  • 删除资源组和区域组合中的最后一个应用,然后重新创建它(部署单元可能会更改)。

找到入站 IP

只需在本地终端中运行以下命令:

nslookup <app-name>.chinacloudsites.cn

获取静态入站 IP

有时,你可能需要对应用使用专用静态 IP 地址。 若要获取静态入站 IP 地址,需要使用基于 IP 的证书绑定来保护自定义 DNS 名称。 如果并不真正需要使用 TLS 功能来保护应用,甚至可以上传一个自签名证书来实现此绑定。 在基于 IP 的 TLS 绑定中,证书绑定到 IP 地址本身。因此,应用服务会创建一个静态 IP 地址来实现此目的。

出站 IP 更改时

不管横向扩展的实例数如何,每个应用在任意给定时间具有指定数目的出站 IP 地址。 从应用服务应用发起的任何出站连接(例如,与后端数据库的连接)使用某个出站 IP 地址作为源 IP 地址。 要使用的 IP 地址是在运行时随机选择的,因此后端服务必须对应用的所有出站 IP 地址打开其防火墙。

执行以下操作之一时,应用的出站 IP 地址集将更改:

  • 删除应用,然后在其他资源组中重新创建它(部署单元可能会更改)。
  • 删除资源组和区域组合中的最后一个应用,然后重新创建它(部署单元可能会更改)。
  • 在较低层(基本层、标准层和高级层)和 PremiumV2 层之间缩放应用。

无论是哪个定价层,你都可以通过查找 possibleOutboundIpAddresses 属性或者在 Azure 门户的“属性”页面的“其他出站 IP 地址”字段中查找你的应用可以使用的所有可能的出站 IP 地址。 请参阅查找出站 IP

查找出站 IP

若要在 Azure 门户中查找应用当前使用的出站 IP 地址,请选择应用左侧导航中的“属性”。 这些 IP 地址会列在“出站 IP 地址”字段中。

在 Azure CLI 中运行以下命令也可以找到相同的信息。

az webapp show --resource-group <group_name> --name <app_name> --query outboundIpAddresses --output tsv
(Get-AzWebApp -ResourceGroup <group_name> -name <app_name>).OutboundIpAddresses

若要查找你的应用可能使用的所有出站 IP 地址(无论是哪个定价层),请在应用的左侧导航栏中选择“属性”。 它们列出在“其他出站 IP 地址”字段中。

在 Azure CLI 中运行以下命令也可以找到相同的信息。

az webapp show --resource-group <group_name> --name <app_name> --query possibleOutboundIpAddresses --output tsv
(Get-AzWebApp -ResourceGroup <group_name> -name <app_name>).PossibleOutboundIpAddresses

对于函数应用,请参阅函数应用出站 IP 地址

获取静态出站 IP

你可以通过将虚拟网络集成与虚拟网络 NAT 网关一起使用来将流量定向通过静态公共 IP 地址,以此来控制来自应用的出站流量的 IP 地址。 虚拟网络集成基本标准高级PremiumV2 应用服务计划中提供。 若要详细了解此设置,请参阅 NAT 网关集成

服务标记

通过使用 AppService 服务标记,可以定义 Azure 应用服务服务的网络访问,而无需指定单个 IP 地址。 服务标记是一组 IP 地址前缀,用于最大程度地降低创建安全规则的复杂性。 使用服务标记时,Azure 会在服务更改时自动更新 IP 地址。 但是,服务标记不是安全控制机制。 服务标记只是一个 IP 地址列表。

AppService 服务标记仅包括多租户应用的入站 IP 地址。 不包括在隔离(应用服务环境)中部署的应用和使用基于 IP 的 TLS 绑定的应用的入站 IP 地址。 此外,多租户和隔离中使用的所有出站 IP 地址都不包括在该标记中。

该标记可用于允许网络安全组 (NSG) 中的出站流量流向应用。 如果应用使用的是基于 IP 的 TLS,或者应用是在隔离模式下部署的,则必须改用专用 IP 地址。

注意

服务标记有助于定义网络访问,但不应将其视为适当的网络安全措施的替代项,因为它不提供对单个 IP 地址的精细控制。

后续步骤