为虚拟网络设计名称解析

已完成

DNS 分为两类:公用 DNS,以及可通过自己的内部网络访问资源的专用 DNS。

公用 DNS 服务

公用 DNS 服务为可通过 Internet(如 Web 服务器)访问的资源和服务解析名称和 IP 地址。 Azure DNS 是 DNS 域的一项托管服务,使用 Microsoft Azure 基础结构提供名称解析。 Azure DNS 中的 DNS 域托管在 DNS 名称服务器的 Azure 全球网络上。 Azure DNS 使用任意广播网络。 每个 DNS 查询都会指向最近的可用 DNS 服务器。

在 Azure DNS 中,可以在相关区域中手动创建地址记录。 最常使用的记录如下:

  • 主机记录:A/AAAA (IPv4/IPv6)
  • 别名记录:CNAME

Azure DNS 提供可靠的安全 DNS 服务来管理和解析虚拟网络中的域名,无需添加自定义 DNS 解决方案。

DNS 区域用于托管域的 DNS 记录。 因此,若要开始在 Azure DNS 中托管域,需要为该域名创建一个 DNS 区域。 随后会在此 DNS 区域内为每个 DNS 记录创建域。

注意事项

  • 在资源组中,区域名称必须是唯一的,不能存在该域。
  • 可在不同资源组或不同 Azure 订阅中重复使用同一区域名称。
  • 当多个区域共享相同的名称时,将为每个实例分配不同的名称服务器地址。
  • 根/父域在注册机构注册并指向 Azure NS。
  • 子域直接在 Azure DNS 中注册。

注意

不必拥有域名即可在 Azure DNS 中以该域名创建 DNS 区域。 但是,肯定需要拥有域才能配置域。

委派 DNS 域

使用 Azure DNS 可以托管 DNS 区域,以及管理 Azure 中域的 DNS 记录。 要使域的 DNS 查询才能抵达 Azure DNS,必须将该域从其父域委托给 Azure DNS。 请记住,Azure DNS 不是域注册机构。

若要将域委托给 Azure DNS,首先需要知道区域的名称服务器名称。 每次创建 DNS 区域时,Azure DNS 会从池中分配名称服务器。 分配名称服务器后,Azure DNS 会自动在区域中创建权威 NS 记录。

创建 DNS 区域且有了名称服务器后,需更新父域。 每个注册机构都有自身的 DNS 管理工具,可以更改域的名称服务器记录。 在注册机构的 DNS 管理页中,可以编辑 NS 记录并将 NS 记录替换为 Azure DNS 创建的记录。

注意

将域委托给 Azure DNS 时,必须使用 Azure DNS 提供的名称服务器名称。 无论域名是什么,都始终应该使用名称服务器的所有四个名称。

子域

如果想要设置独立的子区域,可以在 Azure DNS 中委托子域。 例如,在 Azure DNS 中配置 contoso.com 后,可以为 partners.contoso.com 配置单独的子区域。

设置子域的过程与典型委派相同。 唯一的差别是,必须在 Azure DNS 的父区域“contoso.com”中创建 NS 记录,而不是在域注册机构创建。

注意

父区域和子区域可以在相同或不同的资源组中。 请注意,父区域中的记录集名称与子区域名称一致,在本例中为“partners”。

请务必了解 DNS 记录集与单独的 DNS 记录之间的差异。 记录集是区域中具有相同名称和相同类型的记录的集合。

“添加记录集”页面的屏幕截图。

记录集不能包含两个相同的记录。 可以创建空记录集(无记录),但它不会出现在 Azure DNS 名称服务器中。 CNAME 类型的记录集最多可以包含一条记录。

“添加记录集”页因所选的记录类型而异。 对于 A 记录,需要 TTL(生存时间)和 IP 地址。 生存时间(或 TTL)指定每个记录的缓存时长。

“添加记录”页的屏幕截图。

专用 DNS 服务

专用 DNS 服务为资源和服务解析名称和 IP 地址

当部署在虚拟网络中的资源需要将域名解析到内部 IP 地址时,它们可以使用三种方法之一:

  • Azure DNS 专用区域
  • Azure 提供的名称解析
  • 使用自己的 DNS 服务器的名称解析

使用的名称解析类型取决于资源需要以怎样的方式进行相互通信。

Azure 提供的功能可能无法满足名称解析的需求。 例如,可能需要使用 Microsoft Windows Server Active Directory 域来解析虚拟网络之间的 DNS 名称。 考虑到这些情况,Azure 提供了使用自己的 DNS 服务器的功能。

虚拟网络中的 DNS 服务器可将 DNS 查询转发到 Azure 的递归解析程序。 例如,在 Azure 中运行的域控制器 (DC) 可以响应自身域的 DNS 查询,而将所有其他查询转发到 Azure。 转发查询,VM 就可以(通过 DC)查看本地资源以及(通过转发器)查看 Azure 提供的主机名。 可以通过虚拟 IP 168.63.129.16 访问 Azure 中的递归解析程序。

DNS 转发还可用于在虚拟网络之间进行 DNS 解析,可以通过本地计算机来解析 Azure 提供的主机名。 若要解析 VM 的主机名,DNS 服务器 VM 必须驻留在同一虚拟网络中,并且必须配置为将主机名查询转发到 Azure。 由于 DNS 后缀在每个虚拟网络中是不同的,因此可使用条件性转发规则将 DNS 查询发送到正确的虚拟网络进行解析。

Azure 提供的 DNS

Azure 提供自己的免费默认内部 DNS。 Azure 提供的名称解析仅提供基本的权威 DNS 功能。 如果使用此选项,则 DNS 区域名称和记录由 Azure 自动管理。 你无法控制 DNS 区域名称或 DNS 记录的生命周期。

内部 DNS 按如下所示定义命名空间:.internal.cloudapp.net.

在 VNet 中创建的任何 VM 都在内部 DNS 区域中进行注册,并获取 DNS 域名,如 myVM.internal.cloudapp.net。 请务必认识到,它是已注册的 Azure 资源名称,而不是 VM 上来宾 OS 的名称。

内部 DNS 的限制

  • 不能在不同的 VNet 之间进行解析。
  • 注册资源名称,而不是来宾 OS 名称。
  • 不允许手动创建记录。

Azure 专用 DNS 区域

Azure 中的专用 DNS 区域仅适用于内部资源。 它们遍布全球,因此你可以从任何区域、任何订阅、任何 VNet 和任何租户访问它们。 如果你拥有读取区域的权限,可以使用它进行名称解析。 专用 DNS 区域具有很高的复原能力,可复制到全球所有区域。 它们不适用于 Internet 上的资源。

对于需要比内部 DNS 允许的灵活性更高的场景,可以创建自己的专用 DNS 区域。 这些区域使你能够:

  • 为区域配置特定的 DNS 名称。
  • 在必要时手动创建记录。
  • 在不同的区域之间解析名称和 IP 地址。
  • 在不同的 VNet 之间解析名称和 IP 地址。

使用门户创建专用 DNS 区域

可以使用 Azure 门户、Azure PowerShell 或 Azure CLI 创建专用 DNS 区域。 专用 DNS 区域搜索的屏幕截图。

在部署新的 DNS 区域时,可以手动创建资源记录,或者使用自动注册。 自动注册基于 Azure 资源名称创建资源记录。

专用 DNS 区域支持各种记录,包括指针、MX、SOA、服务和文本记录。

在 Azure 中,VNet 表示由一个或多个子网组成的组,由 CIDR 范围定义。 VM 等资源将被添加到子网。

在 VNet 级别,默认 DNS 配置是 Azure 进行的 DHCP 分配的一部分,指定特殊地址 168.63.129.16 以使用 Azure DNS 服务。

如有必要,可以通过在 VM NIC 上配置备用 DNS 服务器来替代默认配置。

DNS 默认配置的屏幕截图。

将 VNet 链接到专用区域的两种方法:

  • 注册:每个 VNet 可以链接到一个专用 DNS 区域进行注册。 但是,最多可将 100 个 VNet 链接到同一专用 DNS 区域进行注册。
  • 解析:对于不同的命名空间,可能有许多其他专用 DNS 区域。 可以将 VNet 链接到每个区域进行名称解析。 每个 VNet 最多可以链接到 1000 个专用 DNS 区域进行名称解析。

专用 DNS 解析区域的屏幕截图。

将本地 DNS 与 Azure VNet 集成

如果你有外部 DNS 服务器(例如本地服务器),可以使用 VNet 上的自定义 DNS 配置来集成这两者。

外部 DNS 可以在任何 DNS 服务器上运行:UNIX 上的 BIND、Active Directory 域服务 DNS 等。 如果要使用外部 DNS 服务器(而不是默认 Azure DNS 服务),必须配置所需的 DNS 服务器。

组织通常使用内部 Azure 专用 DNS 区域进行自动注册,然后使用自定义配置从外部 DNS 服务器将查询转发到外部区域。

转发采用两种形式:

  • 转发 - 指定另一个 DNS 服务器(区域的 SOA)以解析查询(如果初始服务器无法执行此操作)。
  • 条件转发 - 为命名区域指定一个 DNS 服务器,使该区域的所有查询都被路由到指定的 DNS 服务器。

注意

如果 DNS 服务器位于 Azure 外部,则它无法访问 168.63.129.16 上的 Azure DNS。 在这种情况下,需要在 VNet 内设置一个 DNS 解析程序,将查询转发到该解析程序,然后使它将查询转发到 168.63.129.16 (Azure DNS)。 实质上,你使用的是转发形式,因为 168.63.129.16 不可路由,因此外部客户端无法访问它。

条件转发工作原理图。

请为问题选择最佳答案。