Sql server 从Azure web app(通过Azure S2S VPN)查询本地SQL Server失败

Sql server 从Azure web app(通过Azure S2S VPN)查询本地SQL Server失败,sql-server,azure,azure-web-app-service,azure-virtual-network,azure-vpn,Sql Server,Azure,Azure Web App Service,Azure Virtual Network,Azure Vpn,我们的基础架构团队已经在Azure订阅和on-prem防火墙之间配置了一个站点到站点的Azure VPN连接,基本上如下所示。为了测试这一点,我们创建了一个简单的Azure web应用程序,它可以对位于防火墙后面的prem上的SQL Server进行查询 此web应用在本地工作,没有任何问题。此外,当编译为控制台应用程序并在Azure虚拟机上运行时,相同的代码和连接字符串也能正常工作。但部署到Azure中的web应用程序时,与SQL Server的连接失败: [Win32Exception(0x

我们的基础架构团队已经在Azure订阅和on-prem防火墙之间配置了一个站点到站点的Azure VPN连接,基本上如下所示。为了测试这一点,我们创建了一个简单的Azure web应用程序,它可以对位于防火墙后面的prem上的SQL Server进行查询

此web应用在本地工作,没有任何问题。此外,当编译为控制台应用程序并在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应用程序的调试控制台,并使用默认端口(80)在SQL Server上执行
tcping
,它将成功返回。但是,
tcping
到端口1433超时

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


我发现的唯一与我们的特定设置相关的解决方案基本上归结为“”,这不是我们的第一选择。

在与Microsoft的支持合作后,进行了以下更改,VNet集成现在开始工作。对于其中一些问题,我很抱歉没有提供详细信息,但我们的基础架构团队完成了大部分故障排除工作。希望其中一些项目能帮助其他人为他们的设置指明解决方案的方向:

  • 最初,连接是通过公共互联网进行的,而不是VNET集成和VPN。我们发现,由于使用了隧道类型,VNET集成失败。Azure应用程序服务要求隧道类型为SSTP。一旦我们更改了它并同步了网络,我们就能够通过其专用IP
    tcping
    SQL Server
  • 我们注意到它必须允许在本地网络上使用点到点地址池。作为一种解决方法,我们决定使用新的VNET集成(预览)。我们创建了一个空子网,并且能够使用这个新功能
  • 我们注意到应用程序服务没有使用自定义DNS。为了解决这个问题,我们在虚拟网络上以及web应用的应用设置(“网站\u DNS\u服务器”)中添加了DNS

“网络安全组”实际上是每个网络组件之间的防火墙。你检查过所有的网络安全组了吗?PS出色的故障排除-您已经完成了这里90%以上的海报。我只能找到一个配置的NSG。我将把入站/出站规则粘贴到我的帖子中。它是由我们的基础设施团队配置的,所以我不知道它们与默认设置的偏差有多大。它似乎只与我在文章中提到的测试虚拟机相关,而与web应用程序无关。