如何在 DNS 中查找连接到一个 IP 的所有主机名?

如何在 DNS 中查找连接到一个 IP 的所有主机名?

如果我在一台机器上配置了多个主机(啊啦Apache 的 VirtualHosts),我如何查找 IP 并找到配置为访问该 IP 的所有域?

例如,我的服务器挂载了多个网站和电子邮件域名。如何找到指向该服务器的所有域名?

这可能吗?

我有我拥有的所有域名的 DNS A 条目,而且我知道一些朋友的域名指向我的服务器。我希望看到我的朋友是否知道的也指向那里。(或者如果有人将他们的域名重新指向其他地方,我可以从我的服务器上删除他们的“旧”网站。)

答案1

不是的。这都是关于正向和反向 DNS 查找之间的区别。

正向查找是标准的名称->IP 查找。因此,您必须提前知道所有名称。

您想要的是执行 IP->名称查找,但以某种方式获取您在 Apache 配置和 DNS 中应用的所有名称作为 A 记录(或 CNAMES 或其他)。

您可能会发现,执行反向查找(例如 dig @nameserver $ip -x)将返回拥有该网络块的人(可能是您的 ISP)为该 IP 指定的主机名。它可能有一个像 45-23-45-231.big-isp.com 这样的名字,这对您来说意义不大。而且至关重要的是,只有一条反向记录,但可能有很多正向记录。

我想这可以归结为一个问题 - 反向区域如何知道正向区域中的任何记录?在大多数设置中,正向区域可供客户进行更改,但反向区域由网络块的所有者维护。这两个系统不需要知道对方的任何信息即可运行。

答案2

使用 DNS 协议本身来做到这一点是不可能的,因为通常每个 IP 地址只有一条PTR记录,即使可能有许多A记录指向该 IP 地址。

然而有些公司(例如http://www.ip-adress.com/) 通过存储大量 DNS 查找的结果,然后在自己的数据库中提供反向查询,成功地编译出了包含您所需内容的数据库。

但这些数据库并不准确,它们无法保证了解所有可能的域名可能恰好指向该 IP - 他们只能记录他们实际查找过的域名的 DNS 详细信息。

答案3

唯一的方法是拥有您想要检查的域名的内容数据。

利用此内容,您可以开发一个递归脚本来搜索相对于您的 IP 的主机名(由于最终需要检查 CNAME,因此是递归的)。

要获取某些域名合作伙伴的数据,您可以要求成为辅助合作伙伴并使用 dig -t axfr 获取数据。

答案4

你应该检查罗布特克斯 虽然不是最好的网页设计,但非常有用!您可以找出与 IP 关联的所有 DNS。

当然,正如 Alnitak 解释的那样,

DNS 协议本身无法做到这一点

这意味着该网站只是大多数 DNS/IP 服务器的庞大数据库。它非常高效,但并非 100% 详尽。

相关内容