我最近更改了特定域的IP地址,将其称为example.com
。 我知道DNS更改需要时间来传播,而且传播还不够完备。
我注意到,运行一个ANY查询给出了运行Alogging查询的不同结果。 例如 …
% host -ta example.com example.com has address THE.OLD.IP.ADDRESS % host -t any example.com example.com has address THE.NEW.IP.ADDRESS
我知道最终,DNS将完全传播,然后Alogging查询将返回THE.NEW.IP.ADDRESS。 但是我想知道是否有人可以解释为什么ANY查询返回新的IP地址,而Alogging查询仍然返回旧的IP地址,直到传播完成。
这对我来说很重要,因为parsing域名的应用软件似乎做了Alogging查询而不是ANY查询,因此,这些应用程序仍将IP地址parsing为旧值,直到DNS传播完成。
我只是在寻找解释为什么任何结果似乎比A-record结果更快传播…这是为了我自己的理解和启发。
非常感谢你。
看起来,“ANY”logging查询正在通过具有新IP的权威DNS服务器进行响应,而“A”logging查询由其他recursionDNS服务器响应,其中新的IP地址传播仍在等待中,因此返回旧的IP地址,因为这是它的caching中的信息。
dig的输出有助于这样的情况,因为我们错过了其他细节,例如与两个查询相关的TTL。
我发现ANY
不太可能导致不同的行为。 无论使用哪种查询types,caching中的单个logging都将具有与它们相关的不同TTL,并且两个查询之间没有差异,这将提示服务器更新其caching的值。 如果有的话, ANY
通常会得到特定loggingtypes的答案,如果它们当前不在caching中,则被省略 。 (即过期)
您的查询很可能是针对负载均衡的DNS群集,并且您的某些查询将login到旧回答中TTL已过期的服务器上,而其他一些则正在login到仍然具有cachinglogging的服务器上。 在将来validation这个简单的方法是注意远程服务器返回的TTL。 如果它不是以真实世界时间为单位持续递增递增,则会看到来自不同服务器的TTL值。
dig
不host
进行debugging。 并且总是明确指定您查询的是哪个名称服务器