0

我有两个虚拟网络:公共和私有。在公共 vnet 上有一个应用服务。在私有 vnet 上有一个 azure sql 数据库。azure sql 数据库已阻止公共访问,并且正在公开私有链接。这两个 vnet 是对等的。专用链接的专用 dns 区域已链接两个 vnet。

当我 VPN 到私有 vnet 时,我可以连接到私有链接没问题。当我尝试通过应用服务连接时,出现错误:

SqlException:原因:与 SQL Server 建立连接时发生特定于实例的错误。由于拒绝公共网络访问设置为是 ( https://docs.microsoft.com/azure/azure-sql/database/connectivity-settings#deny-public-network-access ),连接被拒绝。要连接到此服务器,请使用虚拟网络内部的专用终结点 ( https://docs.microsoft.com/azure/sql-database/sql-database-private-endpoint-overview#how-to-set-up-用于 azure-sql-database 的私有链接)。

似乎应用程序服务正在使用公共 IP 地址(因此出现错误),而不是查看私有 IP 地址(通过私有 dns 区域)。

如何设置 azure 应用服务以通过跨 vnet 的专用链接进行连接?

更新:我的应用服务正在使用 Docker。我 ssh 进入它,看到 dns 名称正在解析为公共 IP 地址。我暂时将 IP 添加到主机文件(私有 IP)中,但仍然出现相同的错误。

4

2 回答 2

0

这听起来更像是网络或 DNS 问题,而不是特定于 Azure SQL DB 上的专用链接。

由于您可以通过 SSH 连接到您的 App 容器,您是否可以从那里尝试一些网络测试,例如 TRACERT,以查看它是否正确解析了私有 IP,以及在虚拟网络之间是否有合适的路由。

您是否还检查了每个虚拟网络上的 NSG 以确保端口 1433 被分配在它们之间传递?

于 2020-12-16T05:22:37.820 回答
0

在您的应用服务的配置页面上,您需要添加以下应用设置:

WEBSITE_DNS_SERVER 值为 168.63.129.16 WEBSITE_VNET_ROUTE_ALL 值为 1

于 2020-12-16T05:26:21.803 回答