反向DNS后获取IPnetworking范围?

为了分析目的,我正在查看服务器日志文件中的大量IP地址。 我正在尝试执行反向DNS查询以了解stream量来自何处 – 例如,有多less比例的IP可以parsing为公司,学校,政府,国际组织等。

尽pipe进行了一系列优化 ,但是单独对每个IP地址进行反向DNS处理似乎仍然相当昂贵。 所以 –

有什么办法从反向DNS获得全部IP地址?

如果是的话,这可以大大减less实际的反向DNS查询的数量。

示例(数字轻微混淆):

  • 日志文件包含来自IP 128.151.162.17的请求
  • 反向DNSparsing为11.142.152.128.in-addr.arpa 21599 IN PTR alamo.ceas.rochester.edu
  • (所以这是来自罗切斯特大学的访客,rochester.edu)
  • 现在,假设至less所有来自128.151.162.* IP都可以parsing为128.151.162.* ,这是否安全?
  • 关于128.151.*.* ? 有没有办法获得确切的IP范围?

有没有办法从反向DNS获取整个IP地址范围?

不是真的,不是; 在极less数情况下,您可能可以执行DNS区域传输查询以获取区域中的所有logging(通常为整个/ 24),但是您所查询的名称服务器将很有可能对此进行响应请求。 预计每个地址反向DNS一个查询(对不起!)。

现在,假设至less所有来自128.151.162。*的IP都可以parsing为rochester.edu,这是否安全?

一般来说, 可能作为一所大学,他们很可能拥有整体/ 24。 但是,作为一般情况来说这不是一个好的规则。 一个规模较小的学校可能没有一个完整的/ 24,或可能没有在反向DNS。


反向DNS本身将会非常好用 – 在很多情况下,它只是在ISP的主机名下生成名称,或者根本没有任何logging。 为了获得更好的数据,我们将使事情变得更加昂贵 – 您还应该查看来自whois的数据。

例如, 这里是来自罗切斯特IP的信息 – 它显示了分配的大小(整个/ 16范围,所以在这种情况下适用于128.151.*.* )以及分配给它的组织。

whois信息应该为您想要的信息提供一个很好的事实来源,并且能够看到适用的范围。 不利的一面是,对于较小的分配,一个范围通常会显示为属于ISP而不是最终用户。 结合whois和反向DNS应该提供最好的信息(并且可笑地慢)。

您通常可以从whois(例如, whois 128.151.162.17引用CIDR: 128.151.0.0/16 )获得有关netblocks的信息,但是您可能会发现,根据涉及哪个registry,您的响应格式会有一些变化,而且whois服务器可能会限制您可以提出的请求数量。 另外请注意,netblocks通常嵌套在较大的内部,所以你可能会得到关于一个IP的多个netblock的信息。

一个DNS请求数据包可以包含多个请求,如果你需要解决大量的请求,这可能会加快速度,但是你需要的主要技术是对请求进行并行化,并caching响应。

关于这种algorithm的一般build议:

一般来说,您会发现数据几乎可以无限caching。 数据更改很less,以至于您不妨批量执行,并将数据保存到磁盘caching中,以便您的所有代码都使用该caching。 数据的TTL可能是1小时,但是当我在互联网地图项目上时,我们发现就域名的变化而言,数据稳定了一年多。

如果您正在进行大量DNS查询,则会限制您发送到任何特定DNS服务器的数量。 否则,最好是粗鲁的,最坏的是DoS攻击。

  • 如果您可以提前生成所有计划的DNS查询,那么它们将放入RAM或磁盘,生成列表,随机化它,然后按随机顺序进行查找。
  • 一个懒惰的方式,不需要事先枚举每个查询,就是在所有CIDR块之间分散查询。 也就是说,如果你正在做500个CIDR块,所有的地址都是.1地址,然后是.2地址,然后是.3地址等等。结果是你对个人的压力很小DNS服务器。 (如果你在数以百万计的CIDR块上进行数千次查找,这种方法效果特别好)

如果您正在按需查询,只需使用某种直写式caching,您应该可以。