DNS客户端可以区分他们收到的答案是基于通配符logging还是特定的匹配?

我在我们的一个区域有一个*logging,我改变了它。 但是当我在公共DNS服务器上查询某个区域的随机名时,我仍然收到旧的IP地址。

这对我来说没有意义。 我查询的服务器无法知道名称的正确IP地址,除非他们知道有通配符logging。 否则,他们将不得不问我们的名字服务器。

当我查询我们自己的名称服务器相同的名称,他们会返回新的IP地址。

发生什么了?

我快速查看了所有权威的域名服务器是否已经同步。

 $ dig +nssearch fm.mg SOA ns1.hartwig-at.de. hostmaster.hartwig-at.de. 2015022400 86400 10800 2419200 3600 from server 217.70.177.40 in 8 ms. SOA ns1.hartwig-at.de. hostmaster.hartwig-at.de. 2015060502 86400 10800 2419200 3600 from server 2a00:1158:3::b6 in 25 ms. SOA ns1.hartwig-at.de. hostmaster.hartwig-at.de. 2015060502 86400 10800 2419200 3600 from server 134.119.4.37 in 26 ms. SOA ns1.hartwig-at.de. hostmaster.hartwig-at.de. 2015060502 86400 10800 2419200 3600 from server 37.200.99.108 in 28 ms. SOA ns1.hartwig-at.de. hostmaster.hartwig-at.de. 2015060502 86400 10800 2419200 3600 from server 2a00:1158:3::87 in 28 ms. $ 

看起来217.70.177.40正在服务该区域的旧版本,这可能解释了结果的变化。

如果您不使用DNSSEC,则客户没有明确的方式来查看是否由区域中的*logging生成回复,或通过完全匹配来回复。

客户可以通过比较通过查找所需姓名产生的答案与通过查找随机string产生的答案来使用启发式。 如果答案是相同的,它可能是*logging,如果答案不同,它可能不是*logging。

如果该区域使用DNSSEC进行脱机签名,则客户端可能会查看是否使用了*logging。 这是因为签名中使用的名称实际上包含一个文字*字符,这将certificate答案是使用*logging生成的。 此外,NSEC3可以提供一个签名,表明在不使用*logging的情况下,请求的名字不能被回答。