Azure Web App连接Azure SQL数据库失败求助:已配置私有端点与防火墙规则仍无法建立连接
我来帮你梳理下几个常见的问题点,都是在Azure环境中配置私有端点+Web App时容易踩的坑:
DNS解析失败(最常见)
Azure SQL的私有端点依赖Azure Private DNS Zone(通常是privatelink.database.windows.net)来将SQL Server的FQDN解析到私有IP。如果你的Web App所在的VNet没有关联这个私有DNS区域,Web App会默认解析到SQL Server的公网IP,而此时如果你的SQL Server防火墙限制了公网访问,或者私有端点的流量路径未生效,就会连接失败。
另外,如果你的Web App是多租户模式(不是App Service Environment),必须配置VNet Integration才能访问VNet内的私有资源,否则哪怕防火墙规则配置正确,Web App也无法触及私有端点的网络。Web App VNet Integration配置不全
如果用了Regional VNet Integration,要确保:- 集成的子网和私有端点所在的VNet处于同一区域(跨区域不支持);
- 开启了Route All选项——默认情况下,只有RFC 1918的私有地址流量会走VNet,如果你没有开启这个选项,Web App访问SQL的公网FQDN时可能还是走公网出口,而非私有端点;
如果是Gateway Required VNet Integration,还要检查虚拟网络网关是否正常运行,路由表有没有正确指向私有端点的子网。
私有端点未被批准
检查私有端点的状态是否为Approved。如果创建私有端点时选择了手动批准模式,而SQL Server的管理员没有批准这个端点请求,那么私有端点是无法正常工作的,连接自然失败。NSG规则限制了端口访问
检查以下几处的NSG规则:- 私有端点所在子网的NSG:需要允许来自Web App集成子网的**1433端口(或你自定义的SQL端口)**的入站流量;
- Web App集成子网的NSG:需要允许到私有端点子网的1433端口的出站流量;
- 如果SQL Server所在的子网有NSG,也要确认没有阻止1433端口的入站请求。
防火墙规则优先级与冲突
Azure SQL的防火墙规则中,私有端点的流量是绕过公网防火墙的,但如果你同时启用了公共访问,可能出现解析冲突:如果Web App解析到公网IP,此时“允许Azure服务访问”的规则是否真的生效?另外,要确认你添加的VNet防火墙规则是Web App集成的子网,而非私有端点所在的子网——因为发起请求的是Web App所在的集成子网,而不是私有端点的子网。tcpping命令的局限性
注意tcpping只能测试TCP端口的连通性,但无法验证SQL协议层面的问题。不过如果tcpping都失败,那肯定是网络层面的问题。另外,Web App控制台的环境可能有特殊的网络限制,你可以尝试在Web App中部署一个简单的测试脚本(比如C#/Python的SQL连接代码)来验证,比tcpping更贴近实际业务场景。
内容的提问来源于stack exchange,提问作者itye1970

