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

如果我在一台机器上configuration了多个主机(apache的VirtualHosts),我该如何查询IP并find所有configuration好的名?

例如,我有几个Web和电子邮件域挂钩到我的服务器。 我如何find指向它的所有域?

这甚至有可能吗?

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

不是真的,不是。 这是关于正向和反向DNS查找的区别。

正向查找是标准名称 – > IP查找。 所以,你必须提前知道所有的名字。

你想要的是做一个IP->名称查找,但不知何故,得到所有你在Apacheconfiguration和DNS中应用的名称作为Alogging(或CNAMES或其他)。

你可能会发现,做一个反向查询(例如dig @nameserver $ ip -x)将返回拥有该netblock的用户给予该IP的主机名,这个用户可能是你的ISP。 它可能有一个像45-23-45-231.big-isp.com这样的名字,这对你来说并不重要。 关键的是,只有一个反向logging,但可能有许多前向logging。

我想可以归结为这个问题 – 反向区域如何知道前方区域的任何logging? 在大多数设置中,向前区域可供客户进行更改,但反向区域由networking块的所有者维护。 这两个系统不需要知道任何关于彼此的任何function。

使用DNS协议本身是不可能的,因为通常每个IP地址只有一个PTRlogging,即使可能有许多Alogging指向该IP地址。

然而,一些公司(例如http://www.ip-adress.com/ )通过存储整个DNS查询负载的结果,然后提供一个反向查询到他们自己的数据库。

这些数据库虽然不能确定,但​​他们不能保证知道可能发生的指向该IP的每个可能的域 – 他们只能logging他们实际查找的域名的DNS详细信息。

要做到这一点的唯一方法就是拥有你想要检查的域名的内容数据。

通过这个内容,你可以开发一个recursion脚本来search与你的IP相关的主机名(由于最终的CNAME检查而recursion)。

要获取某些域名合作伙伴的数据,您可以要求使用dig -t axfr来获得数据。

我想你是从错误的方向来的。 除了a)查询每个可能的域名的每个DNS服务器,然后存储结果或b)从您感兴趣的DNS服务器获取区域传输,则无法使用DNS执行此操作。

那么,如果你正在运行基于Apache名称的虚拟主机,你已经有一个将到达你的服务器的域列表。 除了默认的虚拟主机,基于名称的虚拟主机只会回答它的名字。 所以如果我把foobar.com指向我的箱子,并且没有foobar.com虚拟主机,它将被默认提供服务,或者没有得到应答(如果你没有默认服务器的话)。

Apache有一些非常强大的日志function。 使用所需的请求行来定义自定义日志格式应该不成问题。 此外,总是有引荐领域。

邮件,另一方面,是多一点痛苦。 关于我能想到的最好的事情是从服务器日志中select你可以做的,如果你真的需要知道的话 ,为SMTP设置一个数据包捕获。

你应该检查RobTex不是最好的网页devise,但非常有用! 你可以找出所有与IP相关的DNS。

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

使用DNS协议本身是不可能的

这意味着这个网站只是大多数DNS / IP服务器的庞大数据库。 这是相当有效的,但不是100%详尽。