Azure SQL配置ADF私有端点后白名单VNet虚拟机无法连接问题排查
配置问题根因
你遇到的冲突核心是DNS解析规则被Private Endpoint修改,和SQL数据库本身的网络访问开关配置无关:
- 当你为Azure SQL Database创建任意Private Endpoint后,Azure默认DNS服务会自动将SQL Server的FQDN(格式如
xxx.database.windows.net)的解析结果从原先的公共IP,重定向到Private Endpoint对应的私有IP - 你当前的虚拟机使用的是Azure默认DNS,访问SQL时会解析到私有IP,而非你预期的公共IP,因此你原先配置的公共端点IP/VNet防火墙规则完全不会生效
- 如果你为SQL创建的Private Endpoint所在的VNet,和虚拟机所在VNet没有做对等连接、且你也没有给虚拟机所在子网开放访问SQL Private Endpoint的权限,就会出现虚拟机连接失败的问题
可行解决方案
你可以根据自己的安全要求任选一种实现ADF和虚拟机同时访问SQL的需求:
方案1:修改虚拟机所在VNet的DNS解析规则,强制SQL FQDN解析为公共IP
- 在虚拟机所在VNet的自定义DNS配置中,新增一条DNS记录,将你的SQL Server FQDN指向其公共IP
- 或者在每台需要通过公共端点访问SQL的虚拟机本地hosts文件中,添加解析记录:
[SQL公共IP] [你的SQL Server FQDN] - 该方案不需要修改现有网络架构,改完后虚拟机走公共端点访问SQL、ADF走私有端点访问SQL,两者互不影响
方案2:打通虚拟机到SQL Private Endpoint的网络链路
- 为虚拟机所在VNet和SQL Private Endpoint所在VNet配置VNet对等连接
- 在SQL Private Endpoint的网络安全组中,允许虚拟机所在子网的IP段访问1433端口
- 该方案下虚拟机和ADF都走私有链路访问SQL,安全性更高,不需要保留SQL的公共端点防火墙规则
方案3:为ADF使用托管VNet + 托管私有端点
- 不用在你自己的VNet中创建SQL的Private Endpoint,而是在ADF的托管VNet中创建指向SQL的托管私有端点
- 此时SQL的FQDN解析仅在ADF托管VNet内部被重定向为私有IP,不会影响你自有VNet中虚拟机的DNS解析结果,虚拟机依然可以通过公共端点正常访问SQL
- 该方案是微软官方推荐的ADF访问受限Azure资源的最优方案,不需要修改你现有VNet的任何配置
内容的提问来源于stack exchange,提问作者AngiSen
相关产品推荐
相关产品推荐

