本文以Azure Functions为例,介绍如下内容:
1. Azure PaaS服务的专用链接创建;
2.虚拟网络互联的VNET B的虚拟机如何访问互联VNET A 的专用终结点;
当我们创建了一个默认的Azure Functions时,是可以通过域名在公网进行访问的,例如 通过https://myfunc01.azurewebsites.net访问,可以看到如下页面:
但有些场景下,我们只希望云端的虚拟机可以访问Function,而公网的其他计算机无法访问这个Function。
此时,我们就可以为Paas服务(本例中的Azure Functions )配置专用网络链接以实现这个效果。
Private Link(专用终结点连接) 是Azure较新的功能。
通过Private Link,PaaS资源加入到Virtual Network里,并在Virtual Network上获得一个专用的Private IP地址。
虚拟机的流量不会离开Virtual Network,直接访问到PaaS资源的Private IP。
具体如下:
通过配置private link,可以实现如下效果:
1. 公网的计算机,例如图中的 your laptop 无法通过域名访问 Azure Functions;
2. 虚拟网络VNET-001里的vm-in-vnet-001可以通过域名访问Azure Functions;
3. 对等虚拟网络VNET-002中的虚拟机vm-in-vnet-002可以通过域名访问Azure Functions;
准备工作:
1. 创建两个资源组,分别为rg-001和rg-002;
2. 在rg-001下创建虚拟网络VNET-001,地址空间为 10.1.0.0/16,默认子网default,地址空间为10.1.0.0/24;
3. 在rg-002下创建虚拟网络VENT-002,地址空间为10.2.0.0/16,默认子网default,地址空间为10.2.0.0/24;
4. 创建虚拟网络对等互联:
5. 在rg-001中创建Azure Functions,计划类型为 高级计划,其他配置参数见下图:
注意计划类型,选择高级或者应用服务计划。
消耗计划不支持专用链接,可参照官网文档:
6. 为Azure Functions 配置专用链接Private Link
在Azure Functions 的网络 页面中,可以看到专用终结点状态为 关,点击专用终结点,进入下一个页面
点击添加按钮,开始为Azure Functions 添加专用终结点
输入终结点名称,在下拉列表中选择 VNET-001,这样,系统就可以为Azure Functions分配一个连接到VNET-001的 专用IP(内网IP)
此处子网可以选择default子网,专用链接不需要创建单独的子网。
与专用DNS区域集成选择“是”选项,此选项会检查是否存在privatelink.azurewebsites.net的专用DNS区域,如果没有则创建一个,然后在该DNS区域中自动配置
一个绑定到Azure Functions的 专有IP的 A记录。
当然此处也可以不配置专用DNS(不推荐),那么后续要完成Functions 到专有IP的解析则需要自行配置一个DNS或者 通过修改虚拟机的HOST文件来实现。
保存生效后,可以看到如下图所示的专用终结点链接。
刷新Functions 网络页面,可以看到 专用终结点已经配置成功,为“开”的状态。
此时,在你的笔记本或者公网上访问Azure Functions ,则显示 403 错误。
7. 在VNET-002 下创建vm-in-vnet-002并验证对Azure Functions的访问结果
vm创建信息如下:
资源组rg-002,VNET:VNET-002
待虚拟机创建完成,登录虚拟机中尝试通过域名 https://myfunc001.azurewebsites.net 访问Azure Functions
结果如下:仍然无法访问。
8.排查对等互联VNET中虚拟机无法访问Priviate Link 的问题
观察专用DNS中的记录,发现Function的 A记录已经配置正确,
如下解析得出,访问域名仍然解析到了Functions的公网IP 13.75.34.175上,
那么则可能是 虚拟机 vm-in-vnet-002中的DNS解析错误导致的。
检查虚拟网络链接,果然只有到VNET-001的链接,故而VNET-002的虚拟机无法使用 专用 DNS区域进行解析。
增加虚拟网络VNET-002 和 专用DNS区域的绑定关系:
增加如下配置:
待生效后,重新测试成功:
如下图,Azure Functions可以正常访问,同时vm-in-vnet-002解析的IP地址也变成了10.0.0.4 的专用IP地址。
总结Private Link的主要支持场景:
- 允许通过VPN或ExpressRoute从本地DC访问云端的PaaS服务的Private IP;
- 通过同一个Virtual Network里的Azure VM访问Azure SQL/Functions/Cosmos DB 等,同时公网VM无法通过域名访问PaaS;
- 通过VNet Peering的VNet进行访问,比如VNet A里的VM,访问Peering VNet B里的Functions 服务;
相关阅读:
Azure Private Link 主要优点:
Private Link支持的服务:
https://docs.microsoft.com/zh-cn/azure/private-link/availability?WT.mc_id=AZ-MVP-5003757
本案例视频演示: