假设test.example.com
不存在,并且NXDOMAIN
在运行时给出dig
,但我知道subdomain.test.example.com
存在,并且NOERROR
在执行相同操作时给出,是否有办法检查深层子域是否存在,即使中间子域可能不一定存在。具体来说,我在探测或查询时寻找subdomain.test.example.com
指向深层子域存在的提示?
答案1
假设 test.example.com 不存在,并且在运行 dig 时给出 NXDOMAIN,但我知道 subdomain.test.example.com 存在
根据 DNS 规范,这是不可能的。或者换句话说:这意味着该区域的权威名称服务器已损坏。
当迭代缓存 DNS 解析器收到 NXDOMAIN 响应时,它应将其存储在其缓存中,然后该节点或该节点下的所有名称和资源记录集 (RRset) 都应被视为无法访问。对此类名称的后续查询应引发 NXDOMAIN 响应。
答案2
我同意帕特里克的观点,但我想更清楚地说明一下实际的期望是什么:
如果在 处有记录subdomain.test.example.com
但在 处没有记录test.example.com
,这并不意味着test.example.com
“不存在”,这种空节点类型的术语是空的非终结符(有时是耳鼻喉科)。
当你查询某个空的非终端名称时,正确的响应类型是不是 NXDOMAIN
(这意味着“没有这个名字”)而是NODATA
(这意味着“没有所请求类型的记录”,在 ENT 情况下,无论您要求哪种类型)。
为了清楚起见,在部分中,NODATA
响应类型是:响应代码。NOERROR
SOA
AUTHORITY
有迹象表明可以存在进一步的子域的原因是,您收到的响应不是NXDOMAIN
。如果您还确定此名称下没有记录(即,它是一个空的非终端),则一定有一些子域(向下一个或多个级别)实际上有某些东西。
另一个方面,即问题所暗示和 Patrick 所讨论的,是一些名称服务器实现存在错误,NXDOMAIN
甚至在响应不适当的情况下也会发送。
这种实现缺陷会导致提供不一致的数据,其中本应是树形结构的东西实际上被分解成不相连的部分。这种行为在任何依赖于先前观察到的响应的解析器看来尤其失败,因为NXDOMAIN
这些响应实际上意味着什么,并且无法在 DNSSEC 中表示出来。