反向查找

在大多数 DNS 查找中,客户端通常执行前向查找,即基于地址 (A) RR 中存储的另一台计算机的 DNS 名称进行的搜索。 这种类型的查询需要 IP 地址作为应答响应的资源数据。

DNS 还提供反向查找过程,使客户端能够在名称查询期间使用已知的 IP 地址,并基于其地址查找计算机名称。 反向查找采用问题的形式,例如“你能告诉我使用 IP 地址 192.168.1.20 的计算机的 DNS 名称吗?

反向查找的工作原理

DNS 标准中定义了一个名为 in-addr.arpa 该域的特殊域。 此域保留在 Internet DNS 命名空间中,以提供一种实用且可靠的方法来执行反向查询。 若要创建反向命名空间,域中的 in-addr.arpa 子域使用 IP 地址的点小数表示法中的数字的反向顺序形成。

从左到右读取 IP 地址时,与 DNS 名称相比,它们将采用相反的方式解释。 每个八进制值的域的这种反向排序是必需的。 从左到右读取 IP 地址时,它以网络地址开头,以主机地址结尾。 因此,在生成 in-addr.arpa 域树时,必须反转 IP 地址八进制数的顺序。 DNS in-addr.arpa 树的 IP 地址可以委托给公司,因为它们在 Internet 定义的地址类中分配了一组特定的或有限的 IP 地址。

最后,DNS 内置的 in-addr.arpa 域树需要定义另一种 RR 类型,即指针 (PTR) RR。 此 RR 用于在反向查找区域中创建映射,该映射通常对应于前向查找区域中主机的 DNS 计算机名称的名为 RR 的主机 (A)。

in-addr.arpa 域适用于基于 Internet 协议版本 4(IPv4)寻址的所有 TCP/IP 网络。 新建区域向导会自动假定在创建新的反向查找区域时使用此域。

如果要为 Internet 协议版本 6 (IPv6) 网络配置反向查找区域,则可以使用“新建区域向导”指定确切的名称。 这样,便可以在 DNS 控制台中创建可用于支持 IPv6 网络的反向查找区域。 IPv6 区域使用不同的特殊域名(域 ip6.arpa )。

有关 IPv6 和 DNS 的信息,包括有关如何创建和使用 ip6.arpa 域名的示例,如 RFC 1886(“支持 IP 版本 6 的 DNS 扩展”),请参阅 DNS 参考信息

注释

通过反向查询标识主机的 PTR R 和反向查找区域的配置严格是 DNS 标准实现的可选部分。 你不需要使用反向查找区域,尽管对于某些网络应用程序,它们用于执行安全检查。

示例:IPv4 反向查询

下图显示了一个由 DNS 客户端(host-b)发起的反向查询示例,该查询旨在通过其 IP 地址 192.168.1.20 来识别另一台主机(host-a)的名称。

此图显示了由 DNS 客户端启动的反向查询,以基于其 IP 地址了解另一个主机的名称。

如下图所示的反向查询过程在以下步骤中出现:

  1. 客户端 host-b 向 DNS 服务器查询一个指针 (PTR) RR,该指针映射到 host-a 的 IP 地址 192.168.1.20。

    由于查询适用于 PTR 记录,解析程序将反转地址并将域追加 in-addr.arpa 到反向地址的末尾。 此查询形成要在反向查找区域中搜索的完全限定的域名 (20.1.168.192.in-addr.arpa.)。

  2. 记录找到后,20.1.168.192.in-addr.arpa 的权威 DNS 服务器可以用 PTR 记录信息进行响应。 此响应包括 DNS host-a域名,用于完成反向查找。

    如果查询的反向名称无法从 DNS 服务器应答,则常规 DNS 解析(递归或迭代)可用于查找具有反向查找区域的权威且包含查询名称的 DNS 服务器。 从这个意义上说,反向查找中使用的名称解析过程与正向查找的名称解析过程相同。