我们的基础架构团队一直在努力在我们的 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 混合连接”,这不是我们的首选。