【发布时间】:2018-07-17 21:43:36
【问题描述】:
我想检索 google.com 等域的所有记录类型。我在下面的代码中使用了 PHP 的 dns_get_record 函数。
$result = dns_get_record("google.com",DNS_ANY);
这很好用。它返回所有类型为 A、AAAA、MX 和 TXT 的记录。但是dns_get_record 函数不支持自定义名称服务器。我发现 PEAR 包 Net_DNS2 确实支持自定义名称服务器,所以我安装了它并尝试查找所有记录类型。但是Net_DNS2_Resolver 类似乎不支持DNS_ANY 类型。这意味着我需要按顺序查询所有类型,并且需要更多时间并且更难以编码。
Net_DNS2_Resolver 类是否支持通配符类型?如果不是,query 命令是否支持类型数组?文档说没有,但可能已经过时了。
PHP 函数dns_get_record 是如何工作的?它是在后台对所有类型进行多次请求,还是真的有办法一次请求所有类型?如果它是第一个,那么我只需要创建自己的代码来请求所有记录类型。
【问题讨论】:
-
不要使用
ANY(伪)记录类型。它不会做你认为它做的事情,而且它正在被淘汰,确切的原因是它没有被适当地使用。实际上,您应该自己对所需的特定记录类型进行循环。这将始终正常工作,唯一的问题是如果您查询权威名称服务器或一些递归...... -
您是否有任何来源证明
ANY记录类型将被废弃?现在我的问题已经被 mdeora 回答了,但是如果这个查询方法是未来的证明,我现在非常希望。 -
请参阅 CloudFlare 的这篇博客文章:blog.cloudflare.com/what-happened-next-the-deprecation-of-any 他们写了一份互联网草案,还有一个建议让解析器只回复
CNAME、MX、A和 @ 987654335@ 记录到ANY查询,这基本上意味着 ANY ≠ ALL 了(因为查询 ANY 基本上可以为您提供标签解析器缓存的内容,但缓存可能根本不完整! 这一点经常被遗忘)