什么 RFC 鼓励 DNS 服务器回复 REFUSED 对未知域的查询?

Quu*_*one 5 domain-name-system bind dns-zone

这个问题与要求 DNS 服务器响应未知域请求的 RFC非常相似,但我认为我应该将其作为一个新问题提出。

似乎权威 DNS 服务器的标准做法是使用 rcode 响应REFUSED对该服务器不具有权威性的域名的任何查询。例如:

$ dig @ns1.google.com yahoo.com A | grep status
;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 53533
Run Code Online (Sandbox Code Playgroud)

有一些替代行为在这里可能有意义,先验地:

  • 完全黑化查询
  • 返回非权威NXDOMAIN响应
  • 返回一个非权威的NOERROR响应(这很愚蠢,但我提到它是为了完整性)
  • 向根域名服务器返回一个预制的引用(这更愚蠢)

是否有 RFC 或类似的文件说“REFUSED在这种情况下你应该返回”?

我希望在RFC 1034 部分 4.3.1 和 4.3.2 中看到一些关于这种情况的讨论,但我没有。

use*_*517 5

其实很简单,RFC1035 Section 4.1.1 RCODE 5

Refused - The name server refuses to perform the specified operation 
for policy reasons.  For example, a name server may not wish to
provide the information to the particular requester, or a name server 
may not wish to perform a particular operation (e.g., zone transfer) 
for particular data.
Run Code Online (Sandbox Code Playgroud)

系统管理员已决定将他们的系统配置为返回 REFUSED 响应,而不是执行任何其他操作。


Håk*_*ist 5

我认为标准文档(至少不是原始 DNS RFC)中没有关于如何处理这种特定情况的明确声明。
也就是说,多年来,共识或多或少已成为REFUSED我们可用工具中的最佳选择。

我将概述对以下一些不同选项的一些想法:

问题中列出的选项

完全黑化查询

这对权威服务器的运营商来说是不利的,因为这种方法会使服务器看起来已经关闭,从而导致递归服务器反复观察到它不回答他们的查询并完全放弃它的情况,无论QNAME.

从客户端的角度来看,这也很糟糕,因为它可能会导致等待超时到期,而不是很快出现错误。

(我认为这是最糟糕的选择。)

返回非权威NXDOMAIN响应

这与NXDOMAIN否则如何使用不符。NXDOMAIN用于表示您知道某个名称不存在,而不是表示您对该名称一无所知

返回一个非权威的NOERROR响应(这很愚蠢,但我提到它是为了完整性)

首先,我会注意到“引用根”替代方案是这种情况的一个特例。

反对的论点也NXDOMAIN适用于NODATANOERROR+ SOAin authority 部分),只需稍作调整;这是一种状态,用于表明您知道没有这样的 RRset,而不是您缺乏知识
此外,NODATA建议您知道该名称以某种形状或形式存在(例如,它可能具有其他类型的记录,或者它可能是一个空的非终结符)。

NOERROR表示该查询被认为是有效且可回答的,因此应该有某种形式的回答。如果这是一个无法回答的查询,NOERROR似乎不太合适。

向根域名服务器返回一个预制的引用(这更愚蠢)

这是过去非常常见的处理方式。答案的内容本身并无用处,但它是一个有效形成的推荐响应,至少清楚地表明被查询的服务器不知道该名称。

(我认为这可能是NOERROR在这种情况下最不愚蠢的使用形式。)

其他选项

地位 REFUSED

REFUSED通常被认为是最好的方法,表明服务器被配置为不回答这个查询。总体来说很合适,无论是否明确规定必须在这种特殊情况下使用它。

地位 SERVFAIL

也被一些服务器实现使用。
不太清楚REFUSED,因为它没有清楚地表明不回答是故意的;SERVFAIL通常用于处理有效查询时遇到的意外错误。