这里有许多活动部件,因此我将尝试列出设置要点(PS:以下所有域名和 IP 地址均为虚构)。
Azure 经典版
- 我有一个用于“mydomain.com”的 Azure AD 域服务。
- 在该域服务的属性页中,IP 地址为 1.2.3.4 和 1.2.3.5
- 这是经典 VNET (ClassicVNET) 内部 - 地址空间 1.2.3.0/24
蔚蓝 RM
- 在 AzureRM 中,我有一个 VNET(VNET1)
- 在该 VNET 上,DNS 服务器设置为我上面的 Azure 域服务 (1.2.3.4 和 1.2.3.5)。我没有使用“默认 - Azure 提供的”DNS 选项。
- 该 ARM VNET(VNET1)与上面的经典 VNET(ClassicVNET)对等。
虚拟机 (SQL)
- 我有 3 台运行 SQL Server 的虚拟机。这三台虚拟机均位于 VNET1 网络中,因此它们的 DNS 服务器为 1.2.3.4 和 1.2.3.5。
- 所有 3 台 VM 都加入了 AD 域 (mydomain.com)。
- 我使用 Windows 管理“DNS 工具”为 mydomain.com (xymydomain.com 和 abmydomain.com) 创建了一些“A”记录。
- 如果我
nslookup
在任何虚拟机上对这些“A”记录执行操作,它们都能正确解析。 - 由于对我的“mydomain.com”域的 DNS 查询在 VM 中有效,因此我假设两个 VNET(ARM 和经典 VNET)之间的网络连接是正确的。
Azure 应用服务
- 我还有一个应用服务(AppService1)。
- 在此应用服务的网络属性中,我已设置与 ARM VNET(VNET1)的 VNET 连接。
- 如果我单击“单击此处进行配置”进行 VNET 集成,我可以看到 DNS 服务器是从 VNET 中选取的(1.2.3.4 和 1.2.3.5)
- 我有一个引用“xymydomain.com”的应用服务连接字符串,但在尝试使用它时出现超时。
- 如果我进入 Kudu 控制台,跳转到 powershell 提示符并输入,
nameresolver x.y.mydomain.com
我会得到 DNS 超时。
我不明白为什么应用服务(及其 VNET 集成)无法访问 DNS 服务器,而 VM 却可以(并且 VM 和应用服务都访问同一个 VNET)。是的,如果我使用“A”记录指向的 IP 地址,一切都会正常工作(所以我知道应用服务与 ARM VNET 和该网络上的 SQL 服务器具有正确的连接)。
有任何想法吗?
答案1
我不明白为什么应用服务(及其 VNET 集成)无法访问 DNS 服务器但 VM 可以(并且 VM 和应用服务都访问同一个 VNET)。
由于应用服务和虚拟机不是在同一个Vnet中。
当您尝试建立与我的 ARM VNE(VNET1)的 VNET 连接时,应用服务和 Vnet 通过以下方式连接VPN:
如果目标虚拟网络已存在,则必须先启用点到站点 VPN 并使用动态路由网关,然后才能将其连接到应用。如果网关配置了静态路由,则无法启用点到站点虚拟专用网络 (VPN)。
因此,您的经典 AAD DS 通过 连接您的 Vnet1 site-to-site VPN
,并且您的 Vnet1 和您的应用服务通过 连接point-to-site VPN
,但应用服务无法连接到 AAD DS。
S2S VPN p2s vpn
AAD DS <-------------> Vnet1 <----------> App service
| |
-------------------Can't connect-------------
作为一种解决方法,也许你可以使用AAD DS(ARM),这样,您可以使用 ARM vnet 创建 AAD DS,然后您的应用可以使用点到站点 VPN 连接到此 Vnet。
希望这可以帮助。