Azure DNS 疑难解答指南

本文介绍有关 Azure DNS 常见问题的故障排除信息。

无法创建 DNS 区域

若要解决常见问题,请尝试下面的一个或多个步骤:

  1. 查看 Azure DNS 审核日志以确定失败原因。
  2. 每个 DNS 区域名称在其资源组中必须唯一。 即,一个资源组中不能具有名称相同的两个 DNS 区域。 请尝试使用不同的区域名称,或采用不同的资源组。
  3. 可能会显示一个错误“已达到或超过订阅 {订阅 id} 中的区域的最大数量。”请使用其他 Azure 订阅,删除一些区域,或者联系 Azure 支持部门以提高订阅限制。
  4. 可能会显示一个错误“区域‘{区域名称}’不可用。”此错误意味着 Azure DNS 无法为此 DNS 区域分配名称服务器。 请尝试使用不同的区域名称。 或者,如果你是该域名的所有者,可以联系 Azure 支持部门为你分配名称服务器。

无法创建 DNS 记录

若要解决常见问题,请尝试下面的一个或多个步骤:

  1. 查看 Azure DNS 审核日志以确定失败原因。
  2. 该记录集是否已存在? Azure DNS 使用记录集管理记录,记录集是具有相同名称和类型的记录的集合。 如果已存在名称和类型相同的记录,那么在添加另一此类记录时,应编辑现有记录集。
  3. 希望在 DNS 区域顶点处(该区域的“根”)尝试创建记录? 如果是这样,DNS 约定会使用“@”字符作为记录名称。 另请注意,DNS 标准不允许在区域顶点创建 CNAME 记录。
  4. 是否存在 CNAME 冲突? DNS 标准不允许创建与其他类型记录的名称相同的 CNAME 记录。 如果已存在 CNAME 记录,则无法创建具有相同名称的其他类型的记录。 同样,如果创建的 CNAME 记录与现有其他类型记录的名称相匹配,则无法创建 CNAME 记录。 可通过删除另一条记录或选用不同的记录名称来解决此冲突。
  5. 是否已达到 DNS 区域中允许的记录集数量上限? 在 Azure 门户中此区域的“属性”下,显示有当前记录集数和最大记录集数。 如果已达此限制,则可删除一些记录集或联系 Azure 支持来提高此区域的记录集上限,并重试。

无法解析 DNS 记录

DNS 名称解析是一个多步骤过程,该过程失败存在多种原因。 以下步骤有助于调查为何无法在 Azure DNS 托管的区域对 DNS 记录进行 DNS 解析。

  1. 确认已在 Azure DNS 中正确配置 DNS 记录。 在 Azure 门户中查看 DNS 记录,检查区域名称、记录名称和记录类型是否正确。
  2. 确保可在 Azure DNS 名称服务器上正确解析 DNS 记录。
    • 如果从本地电脑查询 DNS,可能会发现缓存结果未反映名称服务器当前的状态。 此外,企业网络通常使用 DNS 代理服务器,这些服务器会阻止 DNS 查询定向到特定名称服务器。 若要避免这些问题,请使用基于 Web 的名称解析服务,例如 digwebinterface
    • 请务必为 DNS 区域指定正确的名称服务器,如 Azure 门户中所示。
    • 检查 DNS 名称是否正确(必须指定完全限定的名称,包括区域名称),以及记录类型是否正确
  3. 确认已将 DNS 域名正确委托给 Azure DNS 名称服务器。 存在许多提供 DNS 委托验证的第三方网站。 这是区域委派测试,因此应只输入 DNS 区域名称,而不是完全限定的记录名称。
  4. 完成上述步骤后,现在应可以正确解析 DNS 记录。 若要进行验证,可再次使用 digwebinterface,这次请使用默认名称服务器设置。

DNS 区域状态和不正常的委派场景

DNS 区域状态指示区域的当前状态。 DNS 区域状态可以是“未知”、“可用”和“已降级” 。

Unknown

新创建资源时,这些新资源的运行状况信号不会立即可用。 最多可能需要 24 小时才能获得 DNS 区域的正确运行状况信号。 在此之前,DNS 区域的运行状况将显示为“未知”。

当资源运行状况检查超过 6 小时未收到有关 DNS 区域的信息时,这些区域将标记为“未知”。 尽管此状态不是资源状态的最终指示,但它是故障排除过程中一个重要的数据点。 一旦接收到信号,并且资源正在按预期方式运行,资源状态会在几分钟后更改为“可用”。

以下屏幕截图是资源运行状况检查消息的示例。

Screenshot of unknown status.

可用

“可用”状态指示资源运行状况检查未检测到 DNS 区域的委派问题。 此状态意味着 NS 委派记录在主要区域中得到了适当维护,而用于子区域的记录不存在于主要区域中。

以下屏幕截图是资源运行状况检查消息的示例。

Screenshot of available status.

已降级

“已降级”状态指示资源运行状况检查检测到 DNS 区域存在委派问题。 请更正委派配置并等待 24 小时直到状态更改为“可用”。

以下屏幕截图是资源运行状况检查消息的示例。

Screenshot of degraded status.

如果在更正配置 24 小时后 DNS 区域仍处于降级状态,请联系支持人员。

配置错误方案

以下场景演示了配置错误导致 DNS 区域不正常状态的情况。

不正常的委派

主要区域包含 NS 委派记录,这些记录帮助将流量从主要区域委托给子区域。 如果父区域中存在任何 NS 委派记录,则 DNS 服务器应屏蔽 NS 委派记录下的所有其他记录(粘性记录除外),并根据用户查询将流量定向到相应的子区域。 如果父区域包含用于 NS 委派记录下子区域(委派区域)的其他记录,则该区域将标记为运行不正常,并且其状态为“已降级”

什么是粘附记录? - 这些记录是委派记录下的记录,可帮助使用其 IP 地址将流量定向到委派/子区域,并按如下所示进行配置。

设置
区域 contoso.com
委派记录 子 NS
ns1.child.contoso.com
粘性记录 ns1.child A 1.1.1.1

不正常区域的示例

以下是包含 NS 委派下记录的区域的示例。

  • 区域名称:contoso.com
名称 类型 TTL
@ NS 3600 ns1-04.azure-dns.cn.
@ SOA 3600 SOA 值
* A 3600 255.255.255.255
child NS 3600 ns1-08.azure-dns.cn(NS 委托记录)
foo.child A 3600 10.10.10.10
txt.child TXT 3600 “文本记录”
abc.test A 3600 5.5.5.5

在前面的示例中,child 是 NS 委派记录。 记录 foo.child 和 txt.child 应该只出现在子区域 child.contoso.com 中。 如果不从父区域 contoso.com 中删除这些记录,可能会导致不一致。 这些不一致会导致区域被视为不正常,并且状态为“已降级”。

当区域被视为正常或不正常时的示例

示例 状态
区域不包含 NS 委派记录、粘性记录和其他记录。 Healthy
区域仅包含 NS 委派记录。 Healthy
区域仅包含 NS 委托记录和粘性记录。 Healthy
区域包含 NS 委派记录和委派记录下的其他记录(粘性记录除外),这些记录应存在于子区域中。 不正常
区域包含 NS 委派记录、粘性记录和其他记录(粘性记录除外)。 不正常

如何修复此问题? - 若要解决此问题,请在父区域中找到并删除 NS 委派记录下除粘性记录之外的所有记录。

如何查找不正常委派记录? - 已提供用于在区域中查找不正常委派记录的脚本。 此脚本将报告不正常的记录。

  1. 保存位于以下位置的脚本:在 Azure DNS 中查找不正常的 DNS 记录 - PowerShell 脚本示例

  2. 执行脚本编辑器中所述的脚本。 可以按你的需求编辑脚本。

历史信息 - 可在资源运行状况的“运行状况历史记录”部分访问最多 14 天的运行状况历史记录。 该部分还包含资源运行状况报告的停机问题的停机原因(如果有)。 目前,Azure 以 24 小时的粒度显示 DNS 区域资源的停机时间。

如何为 SRV 记录指定“服务”和“协议”?

Azure DNS 以记录集方式管理记录,记录集是具有相同名称和类型的记录的集合。 对于 SRV 记录集,需将“服务”和“协议”指定为记录集名称的一部分。 对于记录集中的每条记录,需单独指定其他 SRV 参数(“priority”、“weight”、“port”和“target”)。

示例 SRV 记录名称 (service name 'sip', protocol 'tcp'):

  • _sip._tcp(在区域顶点创建一个记录集)
  • _sip._tcp.sipservice(创建名为“sipservice”的记录集)

后续步骤