Доброе утро,
Мне передали домен с записями DNS c.150k, всего 100k машин. Все записи DNS находятся в одной зоне прямого просмотра в одном домене, и для удобства здесь нет зоны обратного просмотра.
Поскольку очистка и старение не подходят (просто мне повезло!), Мне нужно найти простой способ избавиться от кучи устаревших записей.
Простейшей отправной точкой для меня было удаление всех записей с отметкой времени старше года (примерно 2700 записей), но некоторые из них все еще отвечают на пинг.
Скорее всего, это связано с тем, что мы используем DHCP, и с тех пор IP-адреса были предоставлены новым хостам.
Обычно zoen обратного просмотра действительно пригодился бы сейчас, чтобы я мог искать несколько регистраций для IP, но, как я сказал ранее, его нет.
Кто-нибудь знает, что такое простой способ поиска дубликатов? Я подумал о полном экспорте в CSV из DNS и начал сортировку и фильтрацию, но для более 2k записей я надеялся на что-то более простое.
Кроме того, из-за дрянной природы некоторых комплектов, которые мы запускаем, просто удалить записи и разрешить повторную регистрацию не вариант!
Мысли?
РЕДАКТИРОВАТЬ: не все машины присоединены к AD, поэтому о сравнении AD / DNS не может быть и речи.
РЕДАКТИРОВАТЬ 2: Голосование за все, здесь есть действительно хорошие предложения! Я уже начал работу над экспортом и сравнением в Excel, имел пинг для каждого IP / хоста в процессе записи в тестовый файл, чтобы узнать, что является, а что нет, и я жду утверждения изменений для захвата пакетов, чтобы начать мониторинг в реальном времени. Эти скрипты также полезны, и хотя я не собираюсь использовать их в их текущем формате, они дали мне хорошую основу для написания моих собственных материалов. Спасибо всем!
Если вы можете экспортировать как CSV, а затем импортировать в Excel, тогда вы можете использовать условное форматирование для создания списка дубликатов?
http://www.tech-recipes.com/rx/35290/excel-2013-find-duplicate-data-using-conditional-formatting/
Я бы использовал nmap для проверки всех ваших живых хостов, которые должны очистить для вас остальные мертвые записи. С этого момента я настоятельно рекомендую заняться мусором. Хотя звучит весело :)
Вот два скрипта (которые почти идентичны) - один для поиска повторяющихся 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
Ноты:
Некоторым системам (например, балансировке нагрузки) для правильной работы требуются некоторые повторяющиеся записи.
Вы можете добавить имя компьютера и IP-адрес с помощью WMI, тем самым проверив запись.
Записи с отметкой времени 0 статичны, то есть были добавлены вручную (и, скорее всего, важны).
Возможно, вы сможете регистрировать все реальные DNS-запросы в течение достаточно длительного периода времени (на самом деле это может быть несколько месяцев, если вы хотите поймать этот скрипт статистики один раз в квартал query-all-printer-page-statistics). Затем удалите все записи, которые никогда не запрашивались.