Azure Function无法通过主机名连接私有Azure Database for PostgreSQL服务器
解决方案
问题核心为DNS解析异常:PostgreSQL主机名被解析到服务公网IP而非私有端点内网IP,触发公网访问拦截规则。你可按以下步骤修复:
1. 配置Vnet私有DNS规则
- 检查是否已创建私有DNS区域
privatelink.postgres.database.azure.com,若未创建则在同订阅下新建该区域 - 将上述私有DNS区域与Azure Function集成的目标Vnet完成关联
- 进入私有DNS区域的记录列表,确认已自动生成PostgreSQL实例对应的A记录:记录前缀为你的PostgreSQL服务器名称,记录值为该实例私有端点的内网IP,若不存在则手动添加
- 若你的Azure Function为消费/弹性Premium计划,需在Vnet集成配置页开启 所有流量路由到Vnet 选项,确保DNS请求通过Vnet链路解析
2. 验证Azure Function侧解析有效性
进入Azure Function的Kudu控制台,执行命令:nslookup <你的PostgreSQL实例名>.postgres.database.azure.com
确认返回的IP为私有端点内网IP,而非公网IP。
3. 修复点到站点VPN的DNS配置
- 进入目标Vnet的「DNS服务器」配置页,选择「自定义」,填写Azure内置递归解析器地址
168.63.129.16后保存 - 进入虚拟网络网关的点到站点配置页,重新生成VPN客户端配置包,下载后在本地重新安装配置
- 连接VPN后在本地终端执行上述nslookup命令,确认返回私有端点内网IP
4. 连通性验证
将PostgreSQL的「拒绝公共网络访问」改回Yes,分别在Azure Function、本地VPN环境下使用主机名连接数据库,确认连接正常无报错。
内容的提问来源于stack exchange,提问作者mahendra rathod
相关产品推荐
相关产品推荐

