Búsqueda inversa de DNS

13

Buenos días a todos,

Me han entregado un dominio con registros DNS de c.150k para un total de 100k máquinas. Todos los registros DNS están en una única zona de búsqueda directa en el mismo dominio y, para ser útil, no hay una zona de búsqueda inversa.

Dado que Scavenging and Aging no es una opción (¡solo mi suerte!), Necesito encontrar una manera fácil de matar una carga de registros obsoletos.

El punto de partida más simple para mí fue buscar eliminar todos los registros que tienen una marca de tiempo anterior a un año (aproximadamente 2700 registros), pero algunos de ellos todavía están respondiendo al ping.

Lo más probable es que esto se deba a que usamos DHCP y las direcciones IP se han dado a nuevos hosts.

Normalmente, una búsqueda inversa de zoen sería realmente útil ahora para poder buscar registros múltiples para una IP, pero como dije antes, no hay ninguno.

¿Alguien sabe de la parte superior de sus cabezas una forma simple de buscar duplicados? He considerado una exportación completa a CSV desde DNS y comencé a ordenar y filtrar, pero para más de 2k registros, esperaba algo un poco más fácil.

Además, debido a la mala naturaleza de algunos de los kits que ejecutamos, ¡eliminar los registros y permitir que se vuelva a registrar no es una opción!

Pensamientos?

EDITAR: no todas las máquinas están unidas por AD, por lo que una comparación AD / DNS está fuera de discusión.

EDIT 2: ¡Votos a favor en general, algunas sugerencias realmente buenas aquí! Ya comencé a trabajar en exportaciones y comapres en Excel, tengo un ping para cada IP / Host en progreso ingresando a un archivo de prueba para ver qué es y qué no es real y estoy esperando la aprobación del cambio para una captura de paquetes para comenzar la supervisión en tiempo real. Esos scripts también son útiles, y aunque no los voy a usar en su formato actual, me han dado una buena base para desarrollar mis propias cosas. ¡Gracias a todos!

Fazer87
fuente

Respuestas:

8

Si puede exportar como CSV y luego importar a Excel, ¿puede usar el formato condicional para generar una lista de duplicados?

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

Rhys Evans
fuente
44
Por favor no use enlaces para soluciones. Proporcionar la solución en la respuesta mantiene la respuesta mejor porque los enlaces pueden ir mal.
Paul
3
Para que quede claro lo que dice @Paul, por supuesto que se desean enlaces, pero no solo enlaces. Así que mantenga el enlace en la respuesta, pero agregue lo que está escrito en su destino.
glglgl
¡Lo suficientemente justo! Lo haré en el futuro.
Rhys Evans
6

Usaría nmap para verificar todos tus hosts vivos que deberían eliminar el resto de los registros muertos para ti. Sin embargo, recomendaría encarecidamente eliminar de aquí en adelante. Suena divertido :)

Optichip
fuente
Esto funcionaría si los hosts están siempre encendidos. Si las máquinas también son portátiles, algunas (o muchas, dependiendo de la actividad) pueden perderse.
WoJ 01 de
4

Aquí hay dos scripts (que son casi idénticos): uno para encontrar IP duplicados y otro para encontrar nombres duplicados.

#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

Notas:

  1. Algunos sistemas (como el equilibrio de carga) requieren algunos registros duplicados para funcionar correctamente.

  2. Puede agregar el nombre de la computadora y la IP usando WMI, verificando así el registro.

  3. Los registros con marca de tiempo 0 son estáticos, lo que significa que se agregaron manualmente (y es más probable que sean importantes).

EliadTech
fuente
2

Tal vez pueda registrar todas las solicitudes de DNS de la vida real durante un período de tiempo suficientemente largo (de hecho, esto puede ser varios meses si desea capturar ese script de estadísticas de consulta una vez por trimestre, todas las impresoras). Luego elimine todos los registros que nunca solicitó.

Hagen von Eitzen
fuente