本文介绍使用 Azure DNS 专用解析程序简化混合递归域名系统 (DNS) 解析的解决方案。 可以将 DNS 专用解析程序用于本地工作负载和 Azure 工作负载。 DNS 专用解析程序简化了从本地到 Azure 专用 DNS 服务的专用 DNS 解析,反之亦然。
体系结构
以下部分介绍了混合递归 DNS 解析的替代方法。 第一部分讨论使用 DNS 转发器虚拟机 (VM) 的解决方案。 后续部分介绍如何使用 DNS 专用解析程序。
使用 DNS 转发器 VM
在 DNS 专用解析程序可用之前就已部署了 DNS 转发器 VM,以便本地服务器可以解析发往 Azure 专用 DNS 服务的请求。 下图说明了此名称解析的详细信息。 本地 DNS 服务器上的条件转发器将请求转发到 Azure,专用 DNS 区域链接到虚拟网络。 然后,向 Azure 服务发出的请求解析为相应的专用 IP 地址。
在此解决方案中,无法使用 Azure 公共 DNS 服务解析本地域名。
下载此体系结构的 PowerPoint 文件。
工作流
客户端 VM 将 azsql1.database.windows.net 的名称解析请求发送到本地内部 DNS 服务器。
条件转发器在内部 DNS 服务器上进行配置。 它将
database.windows.net
的 DNS 查询转发到 10.5.0.254,这是 DNS 转发器 VM 的地址。DNS 转发器 VM 将该请求发送到 Azure 内部 DNS 服务器的 IP 地址 168.63.129.16。
Azure DNS 服务器将 azsql1.database.windows.net 的名称解析请求发送到 Azure 递归解析器。 解析程序使用规范名称 (CNAME) azsql1.privatelink.database.windows.net 进行响应。
Azure DNS 服务器将 azsql1.privatelink.database.windows.net 的名称解析请求发送到专用 DNS 区域
privatelink.database.windows.net
。 专用 DNS 区域使用专用 IP 地址 10.5.0.5 进行响应。将 CNAME azsql1.privatelink.database.windows.net 与记录 10.5.0.5 关联的响应到达 DNS 转发器。
响应到达本地内部 DNS 服务器。
响应到达客户端 VM。
客户端 VM 与专用终结点建立专用连接,IP地址为 10.5.0.5。 专用终结点为客户端 VM 提供与 Azure 数据库的安全连接。
有关详细信息,请参阅 Azure 专用终结点 DNS 配置。
使用 DNS 专用解析程序
使用 DNS 专用解析程序时,不需要 DNS 转发器 VM,Azure DNS 能够解析本地域名。
以下解决方案在中心辐射型网络拓扑中使用 DNS 专用解析程序。 作为最佳做法,Azure 登陆区域设计模式建议使用这种类型的拓扑。 使用 Azure ExpressRoute 和 Azure 防火墙建立混合网络连接。 此设置提供安全的混合网络。 DNS Private Resolver 部署到辐射型网络中(在本文的图表中表示为共享服务网络)。
下载此体系结构的 PowerPoint 文件。
DNS 专用解析程序解决方案组件
使用 DNS 专用解析程序的解决方案包含以下组件:
- 本地网络。 此客户数据中心网络通过 ExpressRoute 或站点到站点 Azure VPN 网关连接连接到 Azure。 网络组件包括两个本地 DNS 服务器。 其中一个使用 IP 地址 192.168.0.1。 另一个使用 192.168.0.2。 这两个服务器都充当本地网络内所有计算机的解析程序或转发器。
管理员在这些服务器上创建所有本地 DNS 记录和 Azure 终结点转发器。 在这些服务器上为 Azure Blob 存储和 Azure API 管理服务配置了条件转发器。 这些转发器向 DNS 专用解析程序入站连接发送请求。 入站终结点使用 IP 地址 10.0.0.8,并托管在共享服务虚拟网络(子网 10.0.0.0/28)中。
下表列出了本地服务器上的记录。
域名 | IP 地址 | 记录类型 |
---|---|---|
App1.onprem.company.com |
192.168.0.8 | 地址映射 |
App2.onprem.company.com |
192.168.0.9 | 地址映射 |
blob.core.windows.net |
10.0.0.8 | DNS 转发器 |
azure-api.net |
10.0.0.8 | DNS 转发器 |
中心网络。
- VPN 网关或 ExpressRoute 连接用于与 Azure 的混合连接。
- Azure 防火墙提供托管防火墙即服务。 防火墙实例驻留在其自己的子网中。
共享服务网络。
- DNS Private Resolver 部署在自己的虚拟网络中(与部署 ExpressRoute 网关的集线器网络分离)。 下表列出了为 DNS 专用解析程序配置的参数。 对于 App1 和 App2 DNS 名称,配置了 DNS 转发规则集。
参数 IP 地址 虚拟网络 10.0.0.0/24 入站终结点子网 10.0.0.0/28 入站终结点 IP 地址 10.0.0.8 出站终结点子网 10.0.0.16/28 出站终结点 IP 地址 10.0.0.19 - 共享服务虚拟网络 (10.0.0.0/24) 链接到 Blob 存储和 API 服务的专用 DNS 区域。
辐射型网络。
- VM 托管在所有辐射型网络中,用于测试和验证 DNS 解析。
- 所有 Azure 分支虚拟网络都使用 IP 地址为 168.63.129.16 的默认 Azure DNS 服务器。 并且所有辐射型虚拟网络都与集线器虚拟网络对等。 所有流量(包括往返于 DNS 专用解析程序的流量)都通过集线器进行路由。
- 辐射型虚拟网络链接到专用 DNS 区域。 通过此配置,可以解析专用终结点链接服务的名称,例如
privatelink.blob.core.windows.net
。
本地 DNS 查询的流量流
下图显示了本地服务器发出 DNS 请求时产生的流量流。
下载此体系结构的 PowerPoint 文件。
本地服务器查询 Azure 专用 DNS 服务记录,例如
blob.core.windows.net
。 请求发送到 IP 地址为 192.168.0.1 或 192.168.0.2 的本地 DNS 服务器。 所有本地计算机都指向本地 DNS 服务器。blob.core.windows.net
在本地 DNS 服务器上的条件转发器将请求转发到 IP 地址为 10.0.0.8 的 DNS 解析器。DNS 解析程序会查询 Azure DNS,并接收有关 Azure 专用 DNS 服务虚拟网络链接的信息。
Azure 专用 DNS 服务会解析通过 Azure 公共 DNS 服务发送到 DNS 解析程序入站终结点的 DNS 查询。
VM DNS 查询的流量流
下图显示了 VM 1 发出 DNS 请求时产生的流量。 在本例中,Spoke 1 辐射型虚拟网络尝试解析请求。
下载此体系结构的 PowerPoint 文件。
VM 1 查询 DNS 记录。 辐射型虚拟网络配置为使用 Azure 提供的名称解析。 因此,Azure DNS 用于解析 DNS 查询。
如果查询尝试解析专用名称,则会联系 Azure 专用 DNS 服务。
如果查询与链接到虚拟网络的专用 DNS 区域不匹配,Azure DNS 将连接到 DNS 专用解析程序。 Spoke 1 虚拟网络具有虚拟网络链接。 DNS Private Resolver 检查与分支 1 虚拟网络关联的 DNS 转发规则集。
如果在 DNS 转发规则集中找到匹配项,则 DNS 查询将通过出站终结点转发到规则集中指定的 IP 地址。
如果 Azure 专用 DNS 服务 (2) 和 DNS 专用解析程序 (3) 找不到匹配的记录,则会使用 Azure DNS (5) 来解析查询。
每条 DNS 转发规则指定一个或多个目标 DNS 服务器用于条件转发。 指定的信息包括域名、目标 IP 地址和端口。
通过 DNS 专用解析程序进行 VM DNS 查询的流量流
下图显示了 VM 1 通过 DNS 专用解析程序入站终结点发出 DNS 请求时产生的流量流。 在本例中,Spoke 1 辐射型虚拟网络尝试解析请求。
下载此体系结构的 PowerPoint 文件。
VM 1 查询 DNS 记录。 辐射型虚拟网络配置为使用 10.0.0.8 作为名称解析 DNS 服务器。 因此,DNS 专用解析程序用于解析 DNS 查询。
如果查询尝试解析专用名称,则会联系 Azure 专用 DNS 服务。
如果查询与链接到虚拟网络的专用 DNS 区域不匹配,Azure DNS 将连接到 DNS 专用解析程序。 Spoke 1 虚拟网络具有虚拟网络链接。 DNS Private Resolver 检查与分支 1 虚拟网络关联的 DNS 转发规则集。
如果在 DNS 转发规则集中找到匹配项,则 DNS 查询将通过出站终结点转发到规则集中指定的 IP 地址。
如果 Azure 专用 DNS 服务 (2) 和 DNS 专用解析程序 (3) 找不到匹配的记录,则会使用 Azure DNS (5) 来解析查询。
每条 DNS 转发规则指定一个或多个目标 DNS 服务器用于条件转发。 指定的信息包括域名、目标 IP 地址和端口。
通过本地 DNS 服务器进行 VM DNS 查询的流量流
下图显示了 VM 1 通过本地 DNS 服务器发出 DNS 请求时产生的流量流。 在本例中,Spoke 1 辐射型虚拟网络尝试解析请求。
下载此体系结构的 PowerPoint 文件。
VM 1 查询 DNS 记录。 辐射型虚拟网络配置为使用 192.168.0.1/2 作为名称解析 DNS 服务器。 结果是,本地 DNS 服务器被用来解析 DNS 查询。
请求发送到 IP 地址为 192.168.0.1 或 192.168.0.2 的本地 DNS 服务器。
blob.core.windows.net
在本地 DNS 服务器上的条件转发器将请求转发到 IP 地址为 10.0.0.8 的 DNS 解析器。DNS 解析程序会查询 Azure DNS,并接收有关 Azure 专用 DNS 服务虚拟网络链接的信息。
Azure 专用 DNS 服务会解析通过 Azure 公共 DNS 服务发送到 DNS 专用解析程序入站终结点的 DNS 查询。
组件
VPN 网关是一个虚拟网络网关,可以使用该网关:
- 通过公共 Internet 在 Azure 虚拟网络与本地位置之间发送加密流量。
- 通过 Azure 主干网络在 Azure 虚拟网络之间发送加密流量。
ExpressRoute 将本地网络扩展到 Microsoft 云。 通过使用连接提供商,ExpressRoute 与云组件(如 Azure 服务和 Microsoft 365)建立专用连接。
Azure 虚拟网络是 Azure 中专用网络的基本构建基块。 借助虚拟网络,Azure 资源(如 VM)能够以安全方式相互通信,也可以与 Internet 和本地网络通信。
Azure 防火墙强制实施应用程序和网络连接策略。 此网络安全服务集中管理多个虚拟网络和订阅中的策略。
DNS 专用解析程序是一种将本地 DNS 与 Azure DNS 桥接的服务。 使用此服务,无需部署基于 VM 的 DNS 服务器即可从本地环境查询 Azure DNS 专用区域,反之亦然。
Azure DNS 是 DNS 域的托管服务。 Azure DNS 使用 Azure 基础结构提供名称解析。
Azure 专用 DNS 服务会管理和解析虚拟网络和连接的虚拟网络中的域名。 使用此服务时,无需配置自定义 DNS 解决方案。 使用专用 DNS 区域时,可以在部署期间使用自定义域名,而不是 Azure 提供的名称。
DNS 转发器是将查询转发到网络外部服务器的 DNS 服务器。 DNS 转发器仅转发其无法解析的名称的查询。
方案详细信息
Azure 提供各种 DNS 解决方案:
- Azure DNS 是 DNS 域的托管服务。 默认情况下,Azure 虚拟网络使用 Azure DNS 进行 DNS 解析。 Microsoft 管理和维护 Azure DNS。
- Azure 流量管理器充当基于 DNS 的负载均衡服务。 它提供了一种将流量跨 Azure 区域分发到面向公众的应用程序的方法。
- Azure 专用 DNS 服务为虚拟网络提供 DNS 服务。 可以使用 Azure 专用 DNS 服务区域解析你自己的域名和 VM 名称,而无需配置自定义解决方案,也无需修改自己的配置。 在部署期间,如果使用专用 DNS 区域,则可以使用自定义域名而不是 Azure 提供的名称。
- DNS 专用解析程序是一项云原生、高度可用的 DevOps 友好服务。 它提供简单、零维护、可靠且安全的 DNS 服务。 可以使用此服务从本地网络解析托管在 Azure DNS 专用区域中的 DNS 名称。 还可以使用此服务对你自己的域名进行 DNS 查询。
在 DNS 专用解析程序可用之前,必须使用自定义 DNS 服务器进行从本地系统到 Azure 的 DNS 解析,反之亦然。 自定义 DNS 解决方案有许多缺点:
- 为多个虚拟网络管理多个自定义 DNS 服务器涉及高昂的基础结构和许可成本。
- 必须处理安装、配置和维护 DNS 服务器的各个方面。
- 诸如监视和修补这些服务器之类的开销任务很复杂并且容易出现故障。
- 没有 DevOps 支持管理 DNS 记录和转发规则。
- 实现可缩放的 DNS 服务器解决方案的成本很高。
DNS 专用解析程序通过提供以下功能和关键优势来克服这些障碍:
- 具有内置高可用性和区域冗余的完全托管 Microsoft 服务。
- 适用于 DevOps 的可缩放解决方案。
- 与基于传统基础结构即服务 (IaaS) 的自定义解决方案相比,可节省成本。
- Azure DNS 到本地服务器的条件转发。 出站终结点提供这种功能,这在过去不可用。 Azure 中的工作负载不再需要直接连接到本地 DNS 服务器。 相反,Azure 工作负载会连接到 DNS 专用解析程序的出站 IP 地址。
可能的用例
此解决方案简化了混合网络中专用 DNS 解析。 它适用于许多方案:
- 在较长时间内逐步迁移到完全的云原生解决方案的过渡策略
- 在本地和云环境之间复制数据和服务的灾难恢复和容错解决方案
- 在 Azure 中托管组件以减少本地数据中心和远程位置之间的延迟的解决方案
注意事项
这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改进工作负载质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架。
我们建议不要将 DNS 专用解析程序部署到包含 ExpressRoute 网关的虚拟网络中。 有关更多信息,请参阅关于 ExpressRoute 虚拟网关。
可靠性
可靠性可确保应用程序符合你对客户的承诺。 有关详细信息,请参阅可靠性设计评审核对清单。
DNS Private Resolver 是一种高度可用且对 DevOps 友好的云原生服务。 它提供了一个可靠、安全的 DNS 解决方案,同时为用户保持简单性和零维护。
区域可用性
有关 DNS 专用解析程序可用区域的列表,请参阅区域可用性。
DNS 解析程序只能引用与 DNS 解析程序位于同一区域中的虚拟网络。
安全性
安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅可靠性设计审查检查表。
Azure DNS 支持适用于文本 (TXT) 记录集的扩展 ASCII 编码集。 有关详细信息,请参阅 Azure DNS 常见问题解答。
Azure DNS 当前不支持 DNS 安全扩展 (DNSSEC)。 但用户正在请求此功能。
成本优化
成本优化是关于寻找减少不必要的费用和提高运营效率的方法。 有关详细信息,请参阅成本优化设计评审核对清单。
作为解决方案,DNS 专用解析程序在很大程度上具有成本效益。 DNS 专用解析程序的主要优势之一是它是完全托管的,这消除了专用服务器的需求。
要计算 DNS 专用解析程序的成本,请使用 Azure 定价计算器。 有关 DNS 专用解析程序定价模型,请参阅 Azure DNS 定价。
定价还包括可用性和可伸缩性功能。
ExpressRoute 支持两种计费模型:
- 计量数据,对出站数据传输按每千兆字节收费。
- 无限数据,每月向你收取固定的端口费,包括所有入站和出站数据传输。
有关详细信息,请参阅 ExpressRoute 定价。
如果使用 VPN 网关而不是 ExpressRoute,则费用因产品而异,并按小时收费。 有关详细信息,请参阅 VPN 网关定价。
性能效率
性能效率是指工作负荷能够以高效的方式扩展以满足用户对它的需求。 有关详细信息,请参阅性能效率设计评审核对清单。
DNS 专用解析程序是一项完全托管的 Microsoft 服务,可以处理数百万个请求。 使用 /28 和 /24 之间的子网地址空间。 对于大多数用户,/26 效果最佳。 有关详细信息,请参阅子网限制。
网络
以下资源提供有关创建 DNS 专用解析程序的详细信息:
反向 DNS 支持
传统上,DNS 记录将 DNS 名称映射到 IP 地址。 例如,www.contoso.com
解析为 42.3.10.170。 使用反向 DNS 时,映射方向相反。 IP 地址将映射回名称。 例如,IP 地址 42.3.10.170 解析为 www.contoso.com
。
有关 Azure 对反向 DNS 的支持以及反向 DNS 工作原理的详细信息,请参阅 Azure 中的反向 DNS 和支持概述。
限制
DNS 专用解析程序具有以下限制:
- DNS 专用解析程序规则集只能链接与解析程序位于同一地理区域内的虚拟网络。
- 虚拟网络不能包含多个 DNS 专用解析程序。
- 你需要为每个入站和出站终结点分配专用子网。
有关详细信息,请参阅虚拟网络限制。
作者
本文由 Microsoft 维护, 最初由以下参与者撰写。
主要作者:
- Moorthy Annadurai | 云解决方案架构师
要查看非公开领英个人资料,请登录领英。