Обратный поиск DNS

13

Всем утро,

Мне передали домен с DNS-записями c.150k в общей сложности на 100k машин. Все записи DNS находятся в одной зоне прямого просмотра в одном и том же домене, и для удобства не существует зоны обратного просмотра.

Так как Scavenging and Aging не вариант (только моя удача!), Мне нужно найти простой способ убить кучу устаревших записей.

Простейшей отправной точкой для меня было поискать все записи, которые имеют временную метку старше года (примерно 2700 записей), но некоторые из них все еще реагируют на пинг.

Скорее всего, это потому, что мы используем DHCP, и с тех пор IP-адреса были переданы новым хостам.

Обычно обратный поиск zoen очень пригодился бы сейчас, чтобы я мог искать несколько регистраций для IP, но, как я уже говорил, его нет.

Кто-нибудь знает из головы простой способ поиска дубликатов? Я рассмотрел полный экспорт в CSV из DNS и начал сортировку и фильтрацию, но для более чем 2 тыс. Записей я надеялся на что-то более простое.

Кроме того, из-за дурацкого характера некоторых комплектов, которые мы запускаем, простое удаление записей и повторная регистрация невозможны!

Мысли?

РЕДАКТИРОВАТЬ: не все машины подключены AD, поэтому сравнение AD / DNS не может быть и речи.

РЕДАКТИРОВАТЬ 2: Upvotes повсюду, некоторые действительно хорошие предложения здесь! Я уже начал работу над экспортом и сопоставлением в Excel, у меня есть пинг для каждого выполняемого IP / хоста, который регистрирует тестовый файл, чтобы увидеть, что реально, а что нет, и жду подтверждения изменения для захвата пакета, чтобы начать мониторинг в реальном времени. Эти сценарии также полезны, и хотя я не собираюсь использовать их в их текущем формате, они дали мне хорошую основу для написания моих собственных материалов. Спасибо всем!

Fazer87
источник

Ответы:

8

Если вы можете экспортировать как CSV, а затем импортировать в Excel, то вы можете использовать условное форматирование для создания списка дубликатов?

http://www.tech-recipes.com/rx/35290/excel-2013-find-duplicate-data-using-conditional-formatting/

Рис Эванс
источник
4
Пожалуйста, не используйте ссылки для решений. Предоставление решения в ответе поддерживает ответ лучше, потому что ссылки могут испортиться.
Пол
3
Чтобы понять, что говорит @Paul, конечно нужны ссылки, а не только ссылки. Так что держите ссылку в ответе, но добавьте то, что написано на ее цели.
glglgl
Справедливо! Сделаю в будущем.
Рис Эванс
6

Я бы использовал nmap, чтобы проверить все ваши живые хосты, которые должны очистить остальные мертвые записи для вас. Я настоятельно рекомендую очистить с этого момента, хотя. Звучит как весело, хотя :)

Optichip
источник
Это будет работать, если хосты всегда включены. Если машины также являются ноутбуками, то некоторые (или многое, зависит от активности) могут потеряться.
WoJ
4

Вот два скрипта (которые почти идентичны) - один для поиска дубликатов IP и один для поиска дубликатов имен.

#region Find duplicate name in dns records
$DupNames = Get-WmiObject -ComputerName 'dc2008' `
   -Namespace 'root\MicrosoftDNS' `
   -Class MicrosoftDNS_AType `
   -Filter "ContainerName='yadsarah.org.il'" | Select-Object RecordData, TimeStamp, OwnerName | `
Group-Object OwnerName | Where-Object {$_.Count -gt 1}

$DupNamesArr = @()
foreach ($RecordGroup in $DupNames) {
    foreach ($Record in $RecordGroup.Group) {
        $RecordObj = New-Object System.Object
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'Name' -Value $Record.OwnerName
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'IPAddress' -Value $Record.RecordData
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'TimeStamp' -Value $Record.TimeStamp
        $DupNamesArr += $RecordObj
    }
}
#endregion

#region Find duplicate IP in dns records
$DupIPs = Get-WmiObject -ComputerName 'dc2008' `
   -Namespace 'root\MicrosoftDNS' `
   -Class MicrosoftDNS_AType `
   -Filter "ContainerName='yadsarah.org.il'" | Select-Object RecordData, TimeStamp, OwnerName | `
Group-Object RecordData | ?{$_.Count -gt 1}

$DupIPArr = @()
foreach ($RecordGroup in $DupIPs) {
    foreach ($Record in $RecordGroup.Group) {

        $RecordObj = New-Object System.Object
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'Name' -Value $Record.OwnerName
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'IPAddress' -Value $Record.RecordData
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'TimeStamp' -Value $Record.TimeStamp
        $DupIPArr += $RecordObj
    }
}
#endregion

Примечания:

  1. Некоторые системы (например, балансировка нагрузки) требуют некоторых дублирующих записей для правильной работы.

  2. Вы можете добавить имя компьютера и IP-адрес с помощью WMI, тем самым проверяя запись.

  3. Записи с отметкой времени 0 являются статическими, то есть они были добавлены вручную (и, скорее всего, будут важны).

EliadTech
источник
2

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

Хаген фон Айцен
источник