问题描述
App Service访问的APIM已配置内部虚拟网络(Internal VNet)并拥有内网IP地址。App Service与APIM都在相同的虚拟网络(VNET)中。App Service如何通过内网访问APIM呢?是否需要在虚拟网络中添加自定义DNS服务进行域名解析呢?
问题答案
是的,由于APIM配置的是内部虚拟网络,它只能接收从虚拟网络内部发送的请求,而无法接受从公网(Internet)发送的请求。所以App Service需要访问APIM,需要走内部虚拟网络的链路。同时,由于APIM的访问是通过域名访问,所以也必须需要DNS服务器来解析内网IP地址。
在App Service端需要的配置为
- WEBSITE_VNET_ROUTE_ALL 设置为 1,让App Service所有的出站流量都可以被发送到 VNET中
在VNET中为APIM配置DNS记录
假设APIM的内部虚拟 IP 地址为 10.1.0.5,且APIM的名称为contosointernalvnet,则需要在DNS中配置以下指向的DNS A记录:
-
10.1.0.5 contosointernalvnet.azure-api.cn
-
10.1.0.5 contosointernalvnet.portal.azure-api.cn
-
10.1.0.5 contosointernalvnet.developer.azure-api.cn
-
10.1.0.5 contosointernalvnet.management.azure-api.cn
-
10.1.0.5 contosointernalvnet.scm.azure-api.cn
参考资料
将App Service应用与 Azure 虚拟网络集成:https://docs.azure.cn/zh-cn/app-service/web-sites-integrate-with-vnet#azure-dns-private-zones
在内部虚拟网络中使用 Azure API 管理服务:https://docs.azure.cn/zh-cn/api-management/api-management-using-with-internal-vnet
附录信息
区域 VNet 集成的工作原理
应用服务中的应用托管在辅助角色上。 基本和更高的定价计划是专用托管计划,其中不会有任何其他客户的工作负载在同一辅助角色上运行。 区域 VNet 集成通过使用委托子网中的地址装载虚拟接口实现。 发送地址位于 VNet 中,因此它可以像 VNet 中的 VM 那样,访问位于 VNet 中或通过 VNet 传输的大多数内容。 网络实现不同于在 VNet 中运行 VM。 这就是一些网络功能尚不可用于此功能的原因。
![]()
启用区域 VNet 集成后,应用通过往常所用的通道对 Internet 进行出站调用。 应用属性门户中列出的出站地址是应用仍然在使用的地址。 就应用而言,变化在于:对服务终结点保护服务的调用或者 RFC 1918 地址进入 VNet 中。 如果 WEBSITE_VNET_ROUTE_ALL 设置为 1,所有出站流量都可以被发送到 VNet 中。
DNS 配置
如果 API 管理采用外部虚拟网络模式,则 DNS 由 Azure 管理。 使用内部虚拟网络模式时,必须自行管理 DNS。
-
备注:API 管理服务不会侦听来自 IP 地址的请求, 它只响应到发往其服务终结点上配置的主机名的请求。 这些终结点包括网关、Azure 门户和开发人员门户、直接管理终结点和 Git。
基于默认主机名的访问权限
创建 API 管理服务(例如“contosointernalvnet”)时,将默认配置以下服务终结点:
-
网关或代理:contosointernalvnet.azure-api.net
-
开发人员门户:contosointernalvnet.portal.azure-api.cn
-
新开发人员门户:contosointernalvnet.developer.azure-api.cn
-
直接管理终结点:contosointernalvnet.management.azure-api.cn
-
Git:contosointernalvnet.scm.azure-api.net
若要访问这些 API 管理服务终结点,可以在连接到虚拟网络(其中部署了 API 管理)的子网中创建虚拟机。 假设服务的内部虚拟 IP 地址为 10.1.0.5,则可映射 hosts 文件 (%SystemDrive%\drivers\etc\hosts),如下所示:
-
10.1.0.5 contosointernalvnet.azure-api.cn
-
10.1.0.5 contosointernalvnet.portal.azure-api.cn
-
10.1.0.5 contosointernalvnet.developer.azure-api.cn
-
10.1.0.5 contosointernalvnet.management.azure-api.cn
-
10.1.0.5 contosointernalvnet.scm.azure-api.cn
然后即可从创建的虚拟机访问所有服务终结点。 如果在虚拟网络中使用自定义 DNS 服务器,则还可创建 DNS 记录并从虚拟网络中的任何位置访问这些终结点。
正在加载评论...