跳到主要内容

5. DNS 服务器和客户端 (DNS Servers and Clients)

本节定义用于充当 DNS 客户端, DNS 服务器或二者兼具的系统的术语.

Resolver: 一个程序, "响应客户端请求, 从名称服务器提取信息." (引自 [RFC1034] 第 2.4 节.) "解析器位于请求解析器服务的程序所在的同一台机器上, 但它可能需要咨询其他主机上的名称服务器." (引自 [RFC1034] 第 5.1 节.) Resolver 针对名称, 类型和类执行查询并接收应答. 这一逻辑功能称为 "resolution". 实践中, 该术语通常指某种特定类型的 resolver (其中一些定义如下), 对该术语用法的理解取决于上下文.

Stub resolver: 无法自行完成所有 resolution 的 resolver. Stub resolver 通常依赖 recursive resolver 执行实际的 resolution 功能. [RFC1034] 第 5.3.1 节讨论了 stub resolver, 但没有完整定义. [RFC1123] 第 6.1.3.1 节对其作了完整定义.

Iterative mode: 服务器的一种 resolution 模式, 接收 DNS 查询并以指向另一台服务器的 referral 响应. [RFC1034] 第 2.3 节将其描述为 "服务器将客户端转介给另一台服务器, 并让客户端继续追踪查询". 以 iterative mode 工作的 resolver 有时称为 "iterative resolver".

Recursive mode: 服务器的一种 resolution 模式, 接收 DNS 查询后, 要么从本地缓存响应这些查询, 要么向其他服务器发送查询以取得原始查询的最终答案. [RFC1034] 第 2.3 节将其描述为 "第一台服务器代表客户端在另一台服务器处追踪查询". 以 recursive mode 运行的服务器可被视为具有名称服务器侧 (负责回答查询) 和 resolver 侧 (执行 resolution 功能). 以这种模式运行的系统通常称为 "recursive servers". 有时也称为 "recursive resolvers". 严格来说, 二者的差异在于其中一个会向另一台 recursive server 发送查询而另一个不会, 但实践中不可能预先知道被查询的服务器是否也会执行递归; 因此可以看到这两个术语互换使用.

Full resolver: [RFC1035] 使用了该术语, 但没有定义. RFC 1123 定义了 "full-service resolver", 它可能是也可能不是 [RFC1035] 中 "full resolver" 所指的概念. 任何 RFC 都没有恰当地定义该术语.

Full-service resolver: [RFC1123] 第 6.1.3.1 节将该术语定义为以 recursive mode 运行, 带有缓存 (并满足其他要求) 的 resolver.

Priming: Resolver 在缓存中尚无任何内容之前, 用于确定应向哪里发送查询的机制. Priming 最常通过配置项完成, 该配置项包含根区域权威服务器列表.

Negative caching: "存储某事物不存在, 不能给出答案或未给出答案这一认知." (引自 [RFC2308] 第 1 节)

Authoritative server: "通过本地知识了解某个 DNS 区域内容, 因而无需查询其他服务器即可回答关于该区域查询的服务器." (引自 [RFC2182] 第 2 节.) 这是一个系统, 它以有关某些区域的信息响应 DNS 查询, 并且已配置为在响应头部中将 AA flag 设置为 1. 它是对一个或多个 DNS 区域拥有权威的服务器. 注意, 即使父区域没有向某台 authoritative server 委派权威, 该服务器也可能响应查询. Authoritative server 还提供 "referrals", 通常指向从其委派出去的子区域; 这些 referral 的 AA bit 设置为 0, 并在 Authority 节和 (必要时) Additional 节中带有 referral 数据.

Authoritative-only server: 只服务权威数据并忽略递归请求的名称服务器. 它 "通常不会自行生成任何查询. 相反, 它回答来自 iterative resolver 的非递归查询, 这些查询查找其服务区域中的信息." (引自 [RFC4697] 第 2.4 节)

Zone transfer: 客户端请求某个区域副本, authoritative server 发送所需信息的行为. (关于区域的描述见第 6 节.) 执行 zone transfer 有两种常见标准方式: AXFR ("Authoritative Transfer") 机制用于复制完整区域 (见 [RFC5936]), IXFR ("Incremental Transfer") 机制仅复制区域中发生变化的部分 (见 [RFC1995]). 许多系统使用 DNS 协议之外的非标准方法进行 zone transfer.

Secondary server: "使用 zone transfer 检索区域的 authoritative server" (引自 [RFC1996] 第 2.1 节). [RFC2182] 详细描述了 secondary server. 虽然 [RFC1996] 等早期 DNS RFC 将其称为 "slave", 但当前常见用法已转向称为 "secondary". [RFC1034] 也讨论了 secondary server.

Slave server: 参见 secondary server.

Primary server: "任何被配置为一个或多个 [secondary] server 的 zone transfer 来源的 authoritative server" (引自 [RFC1996] 第 2.1 节), 或更具体地说, "被配置为一个或多个 [secondary] server 的 AXFR 或 IXFR 数据来源的 authoritative server" (引自 [RFC2136]). 虽然 [RFC1996] 等早期 DNS RFC 将其称为 "master", 但当前常见用法已转向 "primary". [RFC1034] 也讨论了 primary server.

Master server: 参见 primary server.

Primary master: "primary master 在区域的 SOA MNAME 字段中命名, 也可由 NS RR 命名". (引自 [RFC1996] 第 2.1 节). [RFC2136] 将 "primary master" 定义为 "AXFR/IXFR 依赖图根部的 master server. primary master 在区域的 SOA MNAME 字段中命名, 也可由 NS RR 命名. 按定义, 每个区域只有一台 primary master server." Primary master 这一概念只由 [RFC2136] 使用, 在 DNS 的其他部分被认为已经过时.

Stealth server: 它 "类似 slave server, 但没有列在该区域的 NS RR 中." (引自 [RFC1996] 第 2.1 节)

Hidden master: 作为 zone transfer 的 master 的 stealth server. "在这种安排中, 处理更新的 master name server 对 Internet 上的一般主机不可用; 它没有列在 NS RRset 中." (引自 [RFC6781] 第 3.4.3 节.) 较早的 RFC [RFC4641] 说 hidden master 的名称出现在 SOA RR 的 MNAME 字段中, 但在某些设置中, 该名称根本不出现在公共 DNS 中. Hidden master 可以是 secondary, 也可以是 primary master.

Forwarding: 一台服务器向另一台服务器发送 RD bit 设置为 1 的 DNS 查询, 以解析该查询的过程. Forwarding 是 DNS resolver 的功能; 它不同于简单盲目地中继查询.

[RFC5625] 没有给出 forwarding 的具体定义, 但详细描述了执行 forwarding 的系统需要支持哪些功能. 执行 forwarding 的系统有时称为 "DNS proxies", 但该术语尚未被定义 (即使在 [RFC5625] 中也没有).

Forwarder: [RFC2308] 第 1 节将 forwarder 描述为 "用于解析查询, 而不是直接使用权威名称服务器链的名称服务器". [RFC2308] 进一步说 "forwarder 通常要么具有更好的 Internet 访问能力, 要么维护一个可由许多 resolver 共享的更大缓存." 该定义似乎暗示 forwarder 通常只查询权威服务器. 但在当前用法中, forwarder 经常位于 stub resolver 和 recursive server 之间. [RFC2308] 没有说明 forwarder 是只能迭代, 还是可以是 full-service resolver.

Policy-implementing resolver: 以 recursive mode 运行, 并根据策略条件改变其返回的部分答案的 resolver, 例如阻止访问恶意软件站点或令人反感的内容. 通常, stub resolver 不知道上游 resolver 是否实现了此类策略; 即使实现了, 也不知道会进行哪些具体变更. 在某些情况下, stub resolver 的用户明确选择 policy-implementing resolver, 意图使用它来实施这些策略. 在其他情况下, 策略是在未告知 stub resolver 用户的情况下强加的.

Open resolver: 接受并处理来自任何 (或几乎任何) stub resolver 查询的 full-service resolver. 这有时也称为 "public resolver", 不过与大量可能因配置错误而开放的 open resolver 相比, "public resolver" 一词更多用于本意就是开放的 open resolver.

View: DNS 服务器的一种配置, 允许它根据查询属性提供不同答案. 通常, view 按查询的源 IP 地址区分, 但也可以基于目的 IP 地址, 查询类型 (例如 AXFR), 是否递归等因素. View 常用于向来自受保护网络 "inside" 的查询提供比来自该网络 "outside" 的查询更多的名称或不同地址. View 不是 DNS 的标准化组成部分, 但已在服务器软件中广泛实现.

Passive DNS: 通过存储来自服务器的 DNS 响应来收集大量 DNS 数据的机制. 其中一些系统还收集与响应相关联的 DNS 查询; 这可能引发隐私问题. Passive DNS 数据库可用于回答有关 DNS 区域的历史问题, 例如过去某些时间有哪些记录可用. Passive DNS 数据库允许按名称以外的键搜索所存储的记录, 例如 "查找所有具有某个特定值的 A 记录的名称".

Anycast: "使某个特定服务地址在多个离散的自治位置可用的实践, 从而发送到该地址的数据报会被路由到多个可用位置之一." (引自 [RFC4786] 第 2 节)