nslookup只为你提供A记录您配置的 DNS 具有的记录。例如,如果您使用的是美国 DNS 并执行查找duckduckgo.com,您将获得解析为该名称的美国服务器的 IP 地址。但如果您使用的是德国的 DNS 提供商,您将获得解析为该名称的爱尔兰服务器的 IP 地址。您将获得与最接近您地理位置的服务器相对应的 IP 地址。
有没有办法获取所有解析为单个名称的 A 记录,而不管您当前的 DNS 提供商是谁?或者唯一的方法是获取世界上所有公共 DNS 提供商的列表并逐一查询它们?
答案1
不可以。除非你询问域名所有者,并且该所有者愿意告诉你这些信息,否则你问的问题是不可能的。即使是世界上所有开放 DNS 提供商的列表也不会告诉你这些信息,尤其是因为其中许多提供商对不同的 IP 的响应不同。
答案2
首先,您需要将协议(DNS)与特定工具(nslookup
)分开。
您可以使用多种不同的工具进行 DNS 查询,例如,dig
它比 更受欢迎,nslookup
因为它具有更多功能并且更接近真正的 DNS 解析器。您还需要记住,这A
只是一种默认类型,当然不是唯一的类型,事实上,真正的现代互联网AAAA
现在应该依靠记录运行,但这是另一个讨论。
现在关于“您将返回与您的地理位置最近的服务器对应的 IP 地址。“,这不是 DNS 协议本身的属性。只是一些域名出于故障转移和负载平衡的原因(以及令人满意的结果),DNS查询尝试使用与查询者“最接近”的IP进行回答。
因此,首先您的问题仅限于某些特定域,并且由于每个域都可以以特定的方式设置,因此对您的问题的唯一通用回答是否定的,您无法找到所有此类 IP(但无论如何,您为什么要这样做?)。
现在,就像 Abu Zaid 所说的那样,您可以使用各种在线工具从世界任何地方进行 DNS 查询并收集所有回复。您可以使用以下工具自己做同样的事情RIPE 探针,并进行一些编程。
此类域名的一些所有者也会在其网站上的某个地方在线发布其所有 IP,因为其他人可能需要它来创建适当的访问控制列表等。然而,这非常特定于域名。
所以简而言之,一般的答案是否定的,但针对您的情况的具体答案取决于您为什么需要这样做(因为它会影响频率,例如 IP 地址可能会改变)以及每个特定的域名(每个域名都是一个情况)。
答案3
dnschecker.org 是一个可以解析来自世界各地许多 DNS 服务器的 fqdn 的网站。
答案4
如果在权威名称服务器上对区域进行配置有误,从而允许区域传输/查询到任何主机,则可以使用以下命令提取整个区域的信息
dig -t axfr example.com
但是,就像我说的,这是一个相当糟糕的配置——区域传输只应该允许到相关域/区域的辅助/从属名称服务器。
最接近的办法可能是检查 SOA 记录。这至少会列出域/区域的所有名称服务器、邮件服务器(MX 记录)、TXT 记录等,如果不是所有 A 和 CNAME 记录
host -a example.com
或者
dig any example.com
您可以使用其中任一方法来提取域/区域的所有名称服务器列表,然后逐个查询每个服务器以获取您想要 A/CNAME 记录列表的主机名。