为了分析目的,我正在查看服务器日志文件中的大量IP地址。 我正在尝试执行反向DNS查询以了解stream量来自何处 – 例如,有多less比例的IP可以parsing为公司,学校,政府,国际组织等。
尽pipe进行了一系列优化 ,但是单独对每个IP地址进行反向DNS处理似乎仍然相当昂贵。 所以 –
有什么办法从反向DNS获得全部IP地址?
如果是的话,这可以大大减less实际的反向DNS查询的数量。
示例(数字轻微混淆):
128.151.162.17
的请求 11.142.152.128.in-addr.arpa 21599 IN PTR alamo.ceas.rochester.edu
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攻击。
如果您正在按需查询,只需使用某种直写式caching,您应该可以。