Dns 挖掘是如何工作的?

Dns 挖掘是如何工作的?,dns,resolver,dig,dnspython,Dns,Resolver,Dig,Dnspython,我的一般问题是“挖掘”是如何工作的 特别是,我想将dig的使用与多个等效请求(a、txt、mx等)的简单发送进行比较 是否发送单个DNS查询?挖掘的使用效率更高吗 它是否保证获得与发送多个等效请求(a、txt、mx等)相同的结果 如果它们不相等,我应该在什么时候使用每种方法 最后,如果有人用Python(首选Python3)实现了dig(而不是通过使用子进程等运行它),我会很高兴得到一个参考。一个ANY查询是一个非常普通的查询,它要求编号为255的记录类型,通常被称为ANY类型,原因相当明显。不

我的一般问题是“挖掘”是如何工作的

特别是,我想将dig的使用与多个等效请求(a、txt、mx等)的简单发送进行比较

是否发送单个DNS查询?挖掘的使用效率更高吗

它是否保证获得与发送多个等效请求(a、txt、mx等)相同的结果

如果它们不相等,我应该在什么时候使用每种方法


最后,如果有人用Python(首选Python3)实现了dig(而不是通过使用子进程等运行它),我会很高兴得到一个参考。

一个
ANY
查询是一个非常普通的查询,它要求编号为255的记录类型,通常被称为
ANY
类型,原因相当明显。不管哪个工具发送查询(程序
dig
,或者您编写的代码,或者其他什么),反正是同一个查询

不能保证一个
ANY
查询将给出与许多不同类型的多个查询相同的结果,这完全取决于生成响应的服务器

除了调试和诊断,几乎没有理由发送
ANY
查询


Python有大量DNS库。我相信现在其他人可以告诉你哪一种是首选的。

你能详细说明结果不一致的原因和案例吗?例如,任何时候都有你没有想到的记录。或者当名称服务器根据查询以编程方式生成响应时。或者,如果名称服务器试图优化
任何
响应的大小。对
CNAME
DNAME
和/或DNSSEC的额外处理也会带来差异。我最近正在处理一个站点,其中权威名称服务器上的IP已更改,但TTL尚未过期。在谷歌DNS上“挖掘任何”将返回所有记录的完整列表,包括新的A记录。但仅对A记录进行一次普通的“挖掘”就可以返回旧IP,而旧IP仍有剩余时间。