Назад | Перейти на главную страницу

Получить диапазон IP-сети после обратного DNS?

В аналитических целях я просматриваю большие наборы IP-адресов в файлах журналов сервера. Я пытаюсь выполнить обратный поиск DNS, чтобы понять, откуда идет трафик, например какой процент IP адресов относится к корпорациям, школам, правительству, международным и т. д.

Несмотря на кучу оптимизациииндивидуальная обратная DNS-обработка каждого IP-адреса по-прежнему оказывается довольно дорогой. Так -

есть ли способ получить весь ассортимент IP из обратного DNS?

Если да, это может значительно сократить количество фактических обратных запросов DNS.

Пример (числа слегка запутаны):

Есть ли способ получить весь диапазон 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-атака.

  • Если вы можете заранее сгенерировать все DNS-запросы, которые планируете выполнить, и они поместятся в ОЗУ или на диск, сгенерируйте список, рандомизируйте его, а затем выполните поиск в случайном порядке.
  • Ленивый способ сделать это, не требующий предварительного перечисления каждого запроса, - это распределить запросы по всем блокам CIDR. То есть, если вы выполняете 500 блоков CIDR, укажите адрес .1 во всех из них, затем адрес .2 во всех из них, затем адрес .3 и т. Д. В результате вы уменьшите нагрузку на отдельного человека. DNS-серверы. (это особенно хорошо работает, если вы выполняете тысячи поисков по миллионам блоков CIDR)

Если вы выполняете поиск «по запросу», просто используйте какой-нибудь кеш со сквозной записью, и все будет в порядке.

Как правило, информацию о сетевых блоках можно получить из whois (например, whois 128.151.162.17 относится к CIDR: 128.151.0.0/16), но вы, вероятно, обнаружите, что есть некоторые различия в формате ответов, которые вы получаете, в зависимости от того, какой реестр задействован, а также то, что серверы whois могут ограничивать количество запросов, которые вы можете сделать. Также обратите внимание, что сетевые блоки обычно вложены с меньшими в большие, поэтому вы можете получить информацию о нескольких сетевых блоках для одного IP.

Пакет запроса DNS может содержать несколько запросов, что может ускорить работу, если вам нужно разрешить много запросов, но основные методы, которые вам нужны, - это параллелизация запросов и кеширование ответов.