Azure - 私有 Link 虚拟网络之间

Azure - Private Link Between Virtual Networks

我有两个虚拟网络:public 和专用网络。在 public vnet 上有一个应用程序服务。在私有 vnet 上有一个 azure sql 数据库。天蓝色的 sql 数据库已 public 访问被阻止并公开了私有 link。这两个 vnet 是对等的。私有 link 的私有 dns 区域有两个 vnet linked.

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

SqlException: Reason: An instance-specific error occurred while establishing a connection to SQL Server. Connection was denied since Deny Public Network Access is set to Yes (https://docs.microsoft.com/azure/azure-sql/database/connectivity-settings#deny-public-network-access). To connect to this server, use the Private Endpoint from inside your virtual network (https://docs.microsoft.com/azure/sql-database/sql-database-private-endpoint-overview#how-to-set-up-private-link-for-azure-sql-database).

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

我如何设置 azure 应用程序服务以通过私有 link 跨 vnet 连接?

更新:我的应用服务正在使用 Docker。我通过 ssh 进入它,看到 dns 名称正在解析为 public IP 地址。我临时在hosts文件中添加了IP(私有IP),还是报同样的错误

这更像是网络或 DNS 问题,而不是 Azure SQL 数据库上的私有 Link 所特有的问题。

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

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

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

WEBSITE_DNS_SERVER 值为 168.63.129.16 WEBSITE_VNET_ROUTE_ALL 值为 1