В аналитических целях я просматриваю большие наборы IP-адресов в файлах журналов сервера. Я пытаюсь выполнить обратный поиск DNS, чтобы понять, откуда идет трафик, например какой процент IP адресов относится к корпорациям, школам, правительству, международным и т. д.
Несмотря на кучу оптимизациииндивидуальная обратная DNS-обработка каждого IP-адреса по-прежнему оказывается довольно дорогой. Так -
есть ли способ получить весь ассортимент IP из обратного DNS?
Если да, это может значительно сократить количество фактических обратных запросов DNS.
Пример (числа слегка запутаны):
128.151.162.17
11.142.152.128.in-addr.arpa 21599 IN PTR alamo.ceas.rochester.edu
128.151.162.*
также разрешит rochester.edu?128.151.*.*
? Есть ли способ узнать точный диапазон IP-адресов?Есть ли способ получить весь диапазон IP-адресов из обратного DNS?
Не на самом деле нет; в очень редких случаях вы можете выполнить запрос передачи зоны DNS, чтобы получить все записи в зоне (как правило, все / 24), но вероятность того, что запрашиваемый вами сервер имен ответит на это, очень мала. запрос. Ожидайте одного запроса на адрес для обратного DNS (извините!).
Можно ли предположить, что все IP-адреса из 128.151.162. *, По крайней мере, все будут разрешены в rochester.edu?
Вообще говоря, наверное, как университет, они, скорее всего, будут владеть всеми / 24. Однако в общем случае это правило не подходит; в меньшей школе может не быть всего / 24 или может не быть в обратном DNS.
Сам обратный DNS будет довольно случайным - во многих случаях это будут просто сгенерированные имена под именами хостов провайдера или вообще без записей. Для получения лучших данных мы собираемся сделать их еще более дорогостоящими - вам также следует посмотреть данные из whois.
Например, вот информация с этого Рочестерского IP - показывает размер выделения (весь диапазон / 16, поэтому в данном случае это относится к 128.151.*.*
) и организации, которой он назначен.
Информация whois должна служить отличным источником правды для той информации, которую вы хотите, и иметь возможность увидеть, к какому диапазону она относится. Обратной стороной является то, что для небольших распределений диапазон часто будет отображаться как принадлежащий интернет-провайдеру, а не конечному потребителю. Сочетание whois и обратного DNS должно предоставить наилучшую информацию (и быть смехотворно медленным).
Общие советы по поводу такого алгоритма:
Как правило, вы обнаружите, что данные практически бесконечно кэшируются. Данные меняются так редко, что вы можете делать это пакетно и сохранять данные в кеш-памяти на диске, который использует весь ваш код. TTL для данных может составлять 1 час, но когда я был в проекте интернет-картографирования, мы обнаружили, что при изменении доменов данные были стабильными более года.
Если вы выполняете много DNS-запросов, ограничьте скорость отправки на любой конкретный DNS-сервер. В противном случае это в лучшем случае грубо, а в худшем - DoS-атака.
Если вы выполняете поиск «по запросу», просто используйте какой-нибудь кеш со сквозной записью, и все будет в порядке.
Как правило, информацию о сетевых блоках можно получить из whois (например, whois 128.151.162.17
относится к CIDR: 128.151.0.0/16
), но вы, вероятно, обнаружите, что есть некоторые различия в формате ответов, которые вы получаете, в зависимости от того, какой реестр задействован, а также то, что серверы whois могут ограничивать количество запросов, которые вы можете сделать. Также обратите внимание, что сетевые блоки обычно вложены с меньшими в большие, поэтому вы можете получить информацию о нескольких сетевых блоках для одного IP.
Пакет запроса DNS может содержать несколько запросов, что может ускорить работу, если вам нужно разрешить много запросов, но основные методы, которые вам нужны, - это параллелизация запросов и кеширование ответов.