如果我在一台机器上配置了多个主机(啊啦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% 详尽。