모두 아침,
총 100k 대의 컴퓨터에 c.150k DNS 레코드가있는 도메인을 받았습니다. DNS 레코드는 모두 동일한 도메인의 단일 정방향 조회 영역에 있으며 도움을주기 위해 역방향 조회 영역이 없습니다.
청소와 노화는 옵션이 아니기 때문에 (나의 운이 좋다!) 부실한 기록을 없애는 쉬운 방법을 찾아야한다.
가장 간단한 출발점은 1 년보다 오래된 타임 스탬프 (대략 2700 개의 레코드)가있는 모든 레코드를 삭제하는 것이지만 일부는 여전히 핑에 응답합니다.
우리가 DHCP를 사용하고 IP가 새 호스트에 부여 되었기 때문입니다.
일반적으로 역방향 조회 영역은 IP에 대한 여러 등록을 찾을 수 있도록 지금은 실제로 편리하게 사용할 수 있지만 이전에 말했듯이 하나도 없습니다.
아무도 당신의 머리 꼭대기에서 중복을 찾는 간단한 방법을 알고 있습니까? DNS에서 CSV로 전체 내보내기를 고려하고 정렬 및 필터링을 시작했지만 2k 개가 넘는 레코드의 경우 조금 더 쉬운 것을 원했습니다.
또한 우리가 실행하는 일부 키트의 엉뚱한 특성으로 인해 레코드를 삭제하고 재 등록을 허용하는 것은 옵션이 아닙니다!
생각?
편집 : 모든 컴퓨터가 AD에 가입 된 것은 아니므로 AD / DNS 비교는 의문의 여지가 없습니다.
편집 2 : 모든 라운드를 찬성, 여기에 정말 좋은 제안! 이미 Excel에서 내보내기 및 COMPARES 작업을 시작했으며 진행중인 각 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
노트:
-
로드 밸런싱과 같은 일부 시스템은 제대로 작동하려면 일부 중복 레코드가 필요합니다.
-
WMI를 사용하여 컴퓨터 이름과 IP를 추가하여 레코드를 확인할 수 있습니다.
-
타임 스탬프가 0 인 레코드는 정적이므로 수동으로 추가되었으며 중요 할 가능성이 높습니다.
답변
어쩌면 모든 실제 DNS 요청을 충분히 오랜 시간 동안 기록 할 수 있습니다 (쿼터 당 한 번-쿼리-모든-프린터-페이지-통계 스크립트를 잡으려면 실제로 몇 개월이 걸릴 수 있습니다). 그런 다음 요청하지 않은 모든 레코드를 삭제하십시오.