1

我们的基础架构团队一直在努力在我们的 Azure 订阅和我们的本地防火墙之间配置一个站点到站点的 Azure VPN 连接,基本上遵循这些步骤。为了测试这一点,我们创建了一个简单的 Azure Web 应用程序,该应用程序对位于防火墙后面的本地 SQL Server 进行查询。

这个网络应用程序在本地运行没有问题。此外,当编译为控制台应用程序并在 Azure 虚拟机上运行时,相同的代码和连接字符串也可以正常工作。但是当部署到 Azure 中的 Web 应用程序时,与 SQL Server 的连接失败:

[Win32Exception (0x80004005): 等待操作超时]

[SqlException (0x80131904):建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者:TCP 提供者,错误:0 - 等待操作超时。)]

Azure VM 和 Web 应用程序都配置为指向 Azure VNet。似乎有什么东西阻止了 Web 应用程序在其默认端口 (1433) 上与 SQL Server 通信。如果我打开 Web 应用程序的调试控制台并tcpping使用默认端口 (80) 在 SQL Server 上执行操作,它会成功返回。但是tcpping到端口 1433 超时。

Azure 网络安全组似乎没有阻止该端口:

在此处输入图像描述

我发现与我们的特定设置相关的唯一解决方案基本上可以归结为“改用 Azure 混合连接”,这不是我们的首选。

4

1 回答 1

2

在 Microsoft 的支持下,进行了以下更改,现在 VNet 集成正在运行。对于其中一些缺乏细节,我深表歉意,但我们的基础架构团队完成了大部分故障排除。希望其中一些项目能帮助其他人为他们的设置指明解决方案的方向:

  • 最初,连接是通过公共互联网而不是 VNET 集成和 VPN 建立的。我们发现由于使用了隧道类型,VNET 集成失败。Azure 应用服务要求隧道类型为 SSTP。一旦我们更改它并同步网络,我们就可以tcpping通过其私有 IP 访问 SQL Server。
  • 我们注意到它必须在本地网络上允许点对点地址池。作为一种解决方法,我们决定使用新的 VNET 集成(预览版)。我们创建了一个空子网并且能够使用这个新功能。
  • 我们注意到应用服务没有使用自定义 DNS。为了解决这个问题,我们在虚拟网络以及 Web 应用的应用设置(“WEBSITE_DNS_SERVER”)中添加了 DNS。
于 2019-02-05T21:03:30.580 回答