本文以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,计划类型为 高级计划,其他配置参数见下图:

注意计划类型,选择高级或者应用服务计划。

消耗计划不支持专用链接,可参照官网文档:

https://docs.microsoft.com/zh-cn/azure/azure-functions/functions-networking-options?WT.mc_id=AZ-MVP-5003757#private-endpoint-connections

 

 

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 主要优点:

https://docs.microsoft.com/zh-cn/azure/private-link/private-link-overview?toc=%2Fazure%2Fvirtual-network%2Ftoc.json&WT.mc_id=AZ-MVP-5003757#key-benefits

Private Link支持的服务:

https://docs.microsoft.com/zh-cn/azure/private-link/availability?WT.mc_id=AZ-MVP-5003757

 

 


本案例视频演示: