我在 Azure 中有这样的设置:
- 地址空间为 172.16.0.0/16 的虚拟网络
- 名为 WebAppSubnet 且地址为 172.16.1.0/24 的子网,委托给 Microsoft.Web/serverFarms
- 名为 GatewaySubnet 的子网,其地址为 172.16.255.0/24
- 地址空间为 172.18.96.76/32 的本地网关
- 与网关关联的公共 IP
- 使用自定义配置的连接
- 采用 AES256、SHA256 和 DHG 1 的 IKE 第 1 阶段
- IKE 第 2 阶段 (IPSec),采用 AES256、SHA256 且无 PF 组
- IPsec SA 生存期(以千字节为单位)设置为 102400000
- IPsec SA 生存期(秒)设置为 28800
- 已禁用流量选择器
- DPD 超时设置为 45
- BGP 和 Azure 专用 IP 已禁用
- IKE 协议为 IKEv2
- 虚拟网关,配置到 GatewaySubnet 中,与本地网关和连接相连
- 未启用指向站点功能
所有资源均位于西欧且属于同一资源组。
该连接报告“已连接”,并且本地 IT 人员也可以看到它已连接。
我想将一个 webapp 连接到 VNET,以便它可以连接到位于 172.18.96.76 的本地 SQL 服务器。因此,我检查 webapp 是否已正确添加到 VNET:
这很完美。它起作用了:Web 应用程序位于 VNET 中。现在我想将我的连接字符串指向 onprem SQL。我使用此连接字符串
服务器=172.18.96.76;数据库=AutodesktopMirror;用户 ID=myuser;密码=mypass;
但我收到一个错误告诉我:
Win32Exception:访问被拒绝。
未知位置
SqlException:与 SQL Server 建立连接时发生与网络相关或特定于实例的错误。未找到或无法访问服务器。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供程序:命名管道提供程序,错误:40 - 无法打开与 SQL Server 的连接)
因此,它找不到本地 SQL 服务器,这就是我变得有点棘手的地方,因为:
- 我无法 ping 通网关
- 我无法从 webapp 执行 tracert
我还没有将 WEBSITE_VNET_ROUTE_ALL 添加到 webapp 设置中。我测试过是否使用此功能,结果都一样:访问被拒绝,位置未知。
所以基本上我真的不知道我的流量是否被正确路由。我只知道所有 RFC1918 流量都被路由到 VNET。我的 webapp 在 VNET 中,我的网关在 VNET 中。我可以看到,如果我查看网络图,没有流量到达网关:
我已经将健康探测器设置为每两分钟 ping 一次 SQL 服务器 + 我尝试了各种调用。我还尝试对 VPN 网关上的连接进行故障排除,它告诉我:
我已经在 Google 上搜索了好久,但“经典 VNET/点对点 vs 无点对点”的混合让我很困惑。serverfault 上的某个人甚至表示它应该可以正常工作:https://serverfault.com/a/1046325/133202,因为当我的 webapp 位于具有网关的 VNET 上时,它应该能够调用 onprem 数据库。
我的设置中是否缺少了什么?我没有指向站点,我应该有吗?如果我能确认我的 Azure 设置是否正确,包括 VNET、网关和 IP 范围,我会很高兴,因为这样我想我会更深入地了解本地是如何连接的。也许他们需要更新他们那边的一些东西。
我不是网络管理员,因此对于 VPN 设置我有点不太了解。
所有这些都由 ARM 提供。
更新
客户端VPN:Fortigate FortiOS 6.2
解决方案
- 如果 VNET 和 Web 应用位于同一区域,则不需要站点到站点。如果网关位于 VNET 中,并且连接正常,则所有流量都将通过此网关引导
- 请记住,只有所有 RFC1918 流量才会默认路由到 VNET
- 您需要按照此处的说明设置网关:https://docs.microsoft.com/en-us/azure/network-watcher/network-watcher-diagnose-on-residential-connectivity#scenario
- 检查你的防火墙规则:)然后再次检查
- 如果您设置了 VNET、GatewaySubnet 和 WebAppSubnet,并将本地网关正确映射到本地网关中配置的本地地址空间,则此方法有效。您不需要:网关上的指向站点,或 webapp 配置中的 WEBSITE_VNET_ROUTE_ALL(如果您遵循 RFC1918 地址间距)
非常感谢 Massimo,https://serverfault.com/users/6352/massimo!!
答案1
“地址空间为 172.18.96.76/32 的本地网关”完全是错误的。
本地网络网关描述您的 LAN 到 Azure;它应该包含您的完整内部地址空间,而不是单个 IP 地址。
您应该将其更改为 172.18.96.0/24 或 172.18.0.0/16 或您的 LAN 地址空间。