如何通过私有 DNS 名称从虚拟网络中的应用服务访问 Azure VM?
Posted
技术标签:
【中文标题】如何通过私有 DNS 名称从虚拟网络中的应用服务访问 Azure VM?【英文标题】:How to access Azure VM from App Service in virtual network by private DNS name? 【发布时间】:2019-11-02 00:14:34 【问题描述】: VM 和应用服务位于同一个虚拟网络中。 通过 VNet 集成将应用服务添加到 VM(预览版) VM 在私有 DNS 区域中自动注册,例如名称myvm1
。以及全名myvm1.priv.zone
私有 DNS 区域已链接到虚拟网络。
虚拟网络 - DNS 服务器设置为默认值。
VM 和应用服务在配置后重新启动。
问题是我无法通过nameresolver.exe
从应用服务控制台解决myvm1
和myvm1.priv.zone
更新: 实际上,问题更大。应用服务无法通过其专用 IP (10.1.x.x) 向虚拟网络中的虚拟机发送请求,即使虚拟机的子网允许所有内容。如果将相同的请求发送到 VM 的公共 IP,则没有问题。
【问题讨论】:
【参考方案1】:作为现有答案,对于这个DOC中的场景Name resolution from App Service Web Apps to VMs in the same virtual network.
,您需要部署自己的DNS服务器来帮助进行名称解析。
以下是步骤:
-
在VNet中的Azure VM上,添加一个服务器角色
DNS server
,安装后配置DNS服务器,在我的例子中添加区域名称如qaz.lab
。您还可以在此区域中为您的 Azure VM 手动添加 A
记录。
在 Azure VNet 的自定义 DNS 服务器中添加 DNS 服务器专用 IP 地址。然后重启 Azure VM 使其生效。
Configure VNet Integration with your app,在这种情况下,选择新的 VNet 集成。之后,刷新您的 VNet 集成。您将在您的应用服务计划中看到 DNS 服务器更新 --- 网络。
导航您的应用服务,运行 nameresolver FQDN
以验证 DNS 解析。目前,它仅支持 FQDN 解析。
如果您有任何问题,请告诉我。
【讨论】:
Azure DNS 是 DNS 域的托管服务。这意味着您可以使用 Azure DNS 来托管您的记录文件,而不是使用自定义 DNS 服务器。但是当你使用 Azure DNS 时,它仍应使用 Azure 提供的 DNS 解析。如果我验证这一点,我会更新我的回复。 这是否意味着 Azure 应用服务与 Azure 私有 DNS 区域不兼容? VN 确实使用默认 DNS 服务器并从私有 DNS 区域链接。 是的,我想是的,正如文档所说,在Web应用程序集成场景中,它目前仅支持使用自己的DNS服务器。对于同一 VNet 中的 VM,您可以使用专用 dns 区域,但对于同一 VNet 中的 Web 应用程序,您不应该。 基本上,应用服务的虚拟网络只是在浪费时间。它无法访问同一 VNet 中的 VM。它无法解析私有名称。 借助 VNet 集成,您可以从同一 VNet 中的 Web 应用程序(tcpping IP 端口)访问 VM,但除非使用自定义 DNS 服务器,否则无法解析 DNS 名称。【参考方案2】:从今天开始,您需要使用 DNS 代理或转发器来满足您的要求。在场景表中记录了here。
对于方案“从应用服务 Web 应用到同一虚拟网络中的 VM 的名称解析”,解决方案是“客户管理的 DNS 服务器在虚拟网络之间转发查询以供 Azure(DNS 代理)解析。”
关于如何执行“使用您自己的 DNS 进行名称解析”检查here,其中描述了您的方案。
【讨论】:
文档看起来已经过时了。没有“虚拟网络集成”,它是“VNet 集成”。那里没有 VNet 列表。没有任何内容可供选择以获取“同步网络”按钮。 哦,这不是应用服务网络,而是应用服务计划网络。那里有“同步网络”,但处于非活动状态。尽管 DNS 区域已链接到 VN,但它显示“此 VNet 上未配置 DNS 服务器。”以上是关于如何通过私有 DNS 名称从虚拟网络中的应用服务访问 Azure VM?的主要内容,如果未能解决你的问题,请参考以下文章
将点到站点与 Azure *** 网关一起使用时的私有 DNS 方法?