Registro de Depuración del Servidor DNS
¿De qué se trata esto?
Como su nombre indica, este artículo trata sobre las capacidades de registro de depuración del Servidor DNS de Windows. Así que, al leer este artículo, obtendrás información sobre cómo obtener información sobre los procesos de resolución de nombres en tu entorno. Esto puede ser muy útil para la solución de problemas y el análisis de problemas relacionados con DNS. Antes de entrar en los detalles, primero entendamos qué es el Registro de Depuración del Servidor DNS y por qué -a veces- es algo importante y un ayudante práctico.
En muchos casos, el Servidor DNS es un rol en el Controlador de Dominio en un entorno de Active Directory. En todos los casos, el Servidor DNS es un componente crítico de la infraestructura de red. La resolución de nombres está en todas partes y es una parte fundamental de cómo se comunican las computadoras en una red.
Pero, ¿qué sucede cuando algo sale mal, o si este componente crítico necesita ser tocado por alguna razón? Esto puede suceder por varias razones, tales como:
- Solución de problemas - Alguien informa problemas con la resolución de nombres. De vez en cuando, se devuelven direcciones IP incorrectas a un cliente y una aplicación deja de funcionar.
- Migración y Gestión de Cambios - Los servidores pueden necesitar ser migrados a otro lugar. Tal vez a un nuevo segmento de red, a un hiperescalador, o simplemente la organización decidió transferir DNS de Active Directory a dispositivos de red. En este punto, puede ser necesario reconfigurar los clientes para que apunten al nuevo servidor DNS.
- Estadísticas y Análisis (de Seguridad) - ¿Quién está pidiendo qué? ¿Qué tipo de patrones se pueden observar? ¿Qué tipo de solicitudes se están realizando? ¿Hay alguna actividad sospechosa?
En tales casos, tener información sobre los detalles de la resolución de nombres puede ser invaluable. Este artículo intenta cubrir algunas formas de obtener esos conocimientos. Solo para mencionar, al hablar de un “cliente DNS”, me refiero a cualquier dispositivo que esté pidiendo resolución de nombres, como una estación de trabajo, un servidor, una impresora, dispositivos de infraestructura de TI, o incluso un dispositivo IoT.
Capacidades para obtener información del Servidor DNS de Windows
Cuando se trata de la pregunta de “¿Cómo obtener la información del Servidor DNS?”, hay varias opciones disponibles.
Echemos un vistazo a las más comunes:
Capacidad - Captura de Paquetes de Red
Clásica y poderosa. Tal vez no sea la solución a largo plazo, pero para una solución rápida de problemas o análisis en tiempo real, es totalmente valiosa. Escribí sobre esto en mi último artículo Capturar Tráfico de Red en Windows, así que no entraré en detalles aquí.
Capacidad - Registro de Firewall
En caso de que tengas una segmentación de tu red en su lugar y tengas acceso a los registros del firewall, puedes obtener información sobre quién está comunicándose para DNS -y todos los demás servicios- desde allí. Esta no es la información más detallada, porque carece de granularidad y detalles específicos del servicio, pero puede ser útil y una victoria rápida si ya está en su lugar. Esto puede no ser una opción si tienes redes planas, probablemente no haya un firewall entre los Clientes DNS y el Servidor DNS. Puedes usar el Firewall de Windows local de todos modos, pero como verás en las siguientes secciones, hay mejores opciones en ese caso. Luego, desafortunadamente, existe el caso prohibitivo de “silos organizacionales” y “falta de comunicación” entre equipos, donde simplemente puede no ser factible obtener los registros del firewall, incluso si existen.
Capacidad - Registros de Eventos
Espero que tengas la configuración del Registro de Eventos para registrar Todos los Eventos en tu Servidor DNS. Si no, ahora es el momento de configurarlo, porque es un buen punto de partida para el registro operativo en tu servicio DNS de Windows.

Puede que no sea la información más detallada, pero produce conocimientos básicos en los Registros de Eventos clásicos de Windows.
Aparte de los Registros de Eventos clásicos de Windows, también hay algunos registros de aplicación específicos del Servidor DNS disponibles. Muchos conocen el registro “Servidor DNS” en la sección “Registros de Aplicación y Servicios” del Visor de Eventos, pero no son tan interesantes para obtener información real sobre el servicio.

Efectivamente, hay dos Registros de Eventos más del Servidor DNS disponibles en la estructura de carpetas. El Registro de Auditoría que proporciona información operativa sobre qué tipo de operaciones están ocurriendo en el Servidor DNS:
Por otro lado, hay un Registro Analítico menos conocido que se puede activar bajo demanda. Proporciona información muy detallada sobre los procesos de resolución de nombres en curso, como qué tipo de consultas se están realizando, qué tipo de respuestas se están enviando, y así sucesivamente.
Este registro no está activo por defecto, pero se puede habilitar para fines de solución de problemas y análisis. Desafortunadamente, hasta donde sé, el registro “Analítico” no puede dividirse en varios archivos, por lo que puede ser complicado usarlo para un enfoque a largo plazo. Para la solución de problemas o análisis a corto plazo, puede ser una opción.
Capacidad - EventTracing
El Seguimiento de Eventos de Windows (ETW) es probablemente la opción más poderosa cuando deseas profundizar en los internos de Windows. Desafortunadamente, también es la más compleja y no es muy amigable para el usuario. Puedo cubrir ETW explícitamente en un futuro artículo, pero por ahora, no entraré en detalles aquí.
Capacidad - Archivo de Registro de Depuración
El Servidor DNS de Windows también tiene un registro de depuración basado en texto incorporado que se puede configurar fácilmente. Esta función te permite registrar los mismos detalles que el Registro de Eventos “Analítico”, pero escribe en archivos de texto y proporciona capacidades de rotación, por lo que se puede usar para un enfoque a largo plazo.

Puede ser un poco más amigable que ETW, porque proporciona texto legible sin necesidad de PerfMon y las otras herramientas de ETW. Sin embargo, el formato del archivo de registro no está perfectamente estructurado, pero aún es posible consumir la información con un poco de esfuerzo. de códigos de operación y banderas específicas de DNS.
Hay dos formas de habilitar el archivo de registro de depuración, ya sea a través de la GUI o mediante PowerShell.
La GUI es “clásica de Windows” y bastante sencilla, puedes encontrar la configuración en el Administrador de DNS bajo la sección “Registro de Depuración” de las propiedades del servidor.

Consejo práctico: Si tienes más de un servidor DNS (y supongo que lo tienes), es una muy buena idea usar las mismas configuraciones en todos los servidores, para obtener datos consistentes en tu entorno.
Además, recomiendo poner el nombre del servidor en el nombre del archivo de registro, para poder identificar fácilmente la fuente de los datos del registro.
Incluso si la GUI parece ser amigable y sencilla, tiene algunas desventajas y debilidades. De hecho, no proporciona toda la gama de opciones de configuración, y no es tan escalable si tienes más de un pequeño puñado de servidores. Por ejemplo, si deseas habilitar el archivo de registro de depuración en 10 o más servidores, necesitas estar muy concentrado para hacer las mismas configuraciones y escrituras correctas en todos los servidores una y otra vez. Cuando se trata de números superiores a cuatro, generalmente prefiero un enfoque de “Dev-Ops” sobre el método “Click-Ops”.
Mi experiencia con mi propia pereza humana y fallas en la precisión en tareas repetitivas me obligó a aprender: PowerShell es el camino a seguir
Así que, no es sorprendente que haya cmdlets de PowerShell disponibles para “Obtener” y “Establecer” las Configuraciones del Registro de Depuración para el Servidor DNS:
# Obtener la configuración del Registro de Depuración del Servidor DNS
Get-DnsServerDiagnostic
# Establecer la configuración del Registro de Depuración del Servidor DNS
Set-DnsServerDiagnostic
El comando Get devuelve todas las opciones de la GUI junto con algunas opciones adicionales que no están disponibles en la GUI, como la configuración de rollover para el registro y la capacidad de agregar más información operativa interna específica del servidor DNS en el registro de depuración.

IMPORTANTE: Aunque la propiedad “MaxMBFileSize” puede sugerir que el tamaño del archivo se define en MB, en realidad se define en bytes. Así que, si deseas establecer un tamaño de archivo de 10MB, necesitas establecer el valor en 10485760 (10 * 1024 * 1024).
También presta atención al carácter final del nombre para “LogFilePath”!
Porque quiero tener nombres de archivos bonitos y la propiedad “EnableLogFileRollover” habilitada, el nombre del archivo de registro termina con un guion bajo. El servidor agrega una marca de tiempo como sufijo al nombre de archivo proporcionado cuando crea el registro. Con este enfoque, tengo una clara separación entre el nombre del servidor y la marca de tiempo.
La siguiente imagen muestra el comportamiento diferente de la propiedad “EnableLogFileRollover” en el nombre del archivo:

IMPORTANTE: También es MUY IMPORTANTE entender el comportamiento del proceso de rollover. ¡No hay configuraciones de tamaño de registro generales! Eso significa que, si el rollover está habilitado, el servidor crea un nuevo archivo cada vez que se alcanza el MaxMBFileSize especificado, pero no hay límite en el número de archivos que se pueden crear.
Eso significa, ¡NECESITAS CUIDAR DE LOS ARCHIVOS DE REGISTRO y DEL ESPACIO LIBRE EN TU SERVIDOR!
Si habilitas el archivo de registro de depuración con un enfoque de “configurar y olvidar”, y tienes carga productiva en tu servidor, puedes llenar tu disco. Dependiendo de la cantidad de consultas y el nivel de detalles, esto puede ser de hasta varios gigabytes por día si tienes muchos clientes DNS.
NUEVAMENTE, NO HAGAS CONFIGURAR Y OLVIDAR AQUÍ!
Necesitas tener tu propia estrategia para cuidar los archivos de registro. No hay limpieza automática.
Aquí tienes un ejemplo de cómo puedes habilitar el archivo de registro de depuración a través de PowerShell:
# Especificar los parámetros deseados para el Registro de Depuración del Servidor DNS
$dnsDebugLogParameter = @{
"Queries" = $true
"Answers" = $true
"Notifications" = $true
"Update" = $true
"QuestionTransactions" = $true
"UnmatchedResponse" = $true
"SendPackets" = $true
"ReceivePackets" = $true
"TcpPackets" = $true
"UdpPackets" = $true
"FullPackets" = $false
"FilterIPAddressList" = $null
"EventLogLevel" = 4
"UseSystemEventLog" = $false
"EnableLoggingToFile" = $true
"EnableLogFileRollover" = $true
"LogFilePath" = "C:\Administration\Logs\DNSServer\DnsDebugLog_$($env:COMPUTERNAME).$((Get-CimInstance -ClassName "win32_computersystem").Domain)_.log"
"MaxMBFileSize" = (10 * 1mb)
"SaveLogsToPersistentStorage" = $false
"WriteThrough" = $false
"EnableLoggingForLocalLookupEvent" = $false
"EnableLoggingForPluginDllEvent" = $false
"EnableLoggingForRecursiveLookupEvent" = $false
"EnableLoggingForRemoteServerEvent" = $false
"EnableLoggingForServerStartStopEvent" = $false
"EnableLoggingForTombstoneEvent" = $false
"EnableLoggingForZoneDataWriteEvent" = $false
"EnableLoggingForZoneLoadingEvent" = $false
}
# Aplicar la configuración definida
Set-DnsServerDiagnostics @dnsDebugLogParameter
En el próximo capítulo, echaremos un vistazo a mis ideas sobre “cómo consumir la información de los registros de depuración generados”. En él, hago referencia a mi propio módulo de PowerShell DNSServer.DebugLogParser para analizar archivos de registro de depuración creados por el servicio de Windows.
El módulo está disponible en la PowerShell Gallery, y en mi cuenta de GitHub. El repositorio de GitHub también contiene documentación adicional con una guía de uso en un entorno de dominio. Allí puedes encontrar scripts que probablemente se apliquen en tus servidores.
En cuanto al enfoque del artículo, no entraré en más detalles sobre los aspectos operativos en un entorno de producción probable. Espero haber dejado claro arriba que necesitas cuidar de estrategias adicionales antes de habilitar tales registros.con ello.
Podemos mostrarlo, exportarlo o hacer un análisis en vivo con PowerShell sobre él.
Aquí hay algunos ejemplos:
# Mostrar los datos
$dataRecords | Format-Table
$dataRecords | Out-GridView
$dataRecords | Select-Object -First 1 | Format-List
El Format-Table en bruto puede no ser tan valioso, porque la consola envolverá la salida. El Out-GridView es un poco más amigable para el usuario, porque proporciona una tabla desplazable y ordenable. Con Format-List, puedes obtener un vistazo de los detalles de un solo registro, lo que te da la información sobre qué propiedad buscar y agrupar en un análisis posterior.
# Exportar los datos para usarlos en otras herramientas como Excel, PowerBI, o lo que prefieras
$dataRecords | Export-Csv -Path "DNSServer-Analytics.csv" -Delimiter ";" -Encoding UTF8 -NoTypeInformation
Exportar a CSV y llevarlo a Excel parece ser la opción típica en muchos casos, porque esto te da el poder de otras herramientas para analizar y segmentar los datos.
Por otro lado, si deseas hacer un análisis rápido y sucio directamente en PowerShell mientras estás en la llamada de solución de problemas, esto también se puede hacer. Aquí hay algunas ideas:
# Segmenta y analiza... obtén información de los datos directamente en PowerShell con agrupaciones básicas
$dataRecords | Group-Object TaskDisplayName
$dataRecords | Group-Object QNAME
$dataRecords | Group-Object InterfaceIP
$dataRecords | Group-Object Source
# Algunos ejemplos de agrupación más avanzados
$dataRecords | Group-Object { "Source '$($_.Source)' on Interface '$($_.InterfaceIP)'" } | Format-Table Count, Name
$dataRecords | Group-Object { "Source '$($_.Source)' on Interface '$($_.InterfaceIP)' with '$($_.QNAME)'" } | Sort-Object Name | Format-Table Count, Name
$dataRecords | Group-Object { "'$($_.QNAME)' - Source '$($_.Source)' ($($_.TaskDisplayName))" } | Sort-Object Name | Format-Table Count, Name
$dataRecords | Group-Object { "'$($_.QNAME)' - Source '$($_.Source)' on Interface '$($_.InterfaceIP)' ($($_.TaskDisplayName))" } | Sort-Object Name | Format-Table Count, Name
# Agrupación combinada con filtrado
$dataRecords | Where-Object TaskDisplayName -like "LOOK_UP" | Group-Object { "Source '$($_.Source)' - '$($_.QNAME)'" } | Sort-Object Name | Format-Table Count, Name
# Después de explorar los posibles valores de la agrupación básica, podemos filtrar y listar los registros con sus detalles
$dataRecords | Where-Object TaskDisplayName -like "LOOK_UP" | Where-Object Source | Sort-Object TimeCreated | Format-Table MachineName, TimeCreated, Source, InterfaceIP, QNAME, QTYPE
$dataRecords | Where-Object TaskDisplayName -like "LOOK_UP" | Where-Object Source -like "10.1.1.1" | Sort-Object QNAME | Format-Table MachineName, TimeCreated, Source, InterfaceIP, QNAME, QTYPE
Al mostrar esto, espero darte algunas ideas sobre cómo obtener información de los datos y cómo usar PowerShell para ello.
Por supuesto, hay muchas más opciones disponibles y esto puede no escalar para conjuntos de datos muy grandes o durante largos períodos de tiempo. Por lo tanto, echemos un vistazo al siguiente capítulo…
DebugLogFile
Echar un vistazo a la opción del archivo de registro de depuración de DNS ofrece una solución para lidiar con el enfoque no atendido y a largo plazo. También puede escalar mejor en conjuntos de datos grandes dentro de entornos más grandes. El archivo en sí es basado en texto, por lo que se puede leer abriéndolo en Notepad.

Desafortunadamente, el formato no está perfectamente estructurado, por lo que es necesario realizar algún procesamiento de datos para obtener los datos en un formato más utilizable. Así que, como hicimos con los registros de eventos antes, vamos a PowerShell para hacer un poco de magia de análisis.

Mientras hacía algunas investigaciones y trabajos de IA sobre el formato del archivo DebugLogFile, curiosamente, la IA se quejó de que el formato no está perfectamente estructurado para un análisis fácil. 🤪
Para enfrentar este desafío, he creado un módulo de PowerShell llamado DNSServer.DebugLogParser.
El módulo proporciona una lógica de análisis integral dentro de un solo cmdlet. Es básicamente un “todo en uno” para convertir el “archivo de registro que no es tan analizables” en un archivo CSV válido y fácil de usar. El módulo se encarga de todos los pasos necesarios.
Dentro de la carpeta de activos en el repositorio de GitHub del módulo, puedes encontrar algunos archivos de registro de ejemplo y sus CSV convertidos para revisar. Obviamente, puedes y debes usar tus propios archivos de tu entorno también!
Así que, para darte un ejemplo rápido sobre el proceso de conversión, aquí hay un ejemplo simple de cómo usar el módulo para convertir un archivo DebugLogFile en un archivo CSV:
# Importar el módulo (asegúrate de instalarlo antes)
Import-Module DNSServer.DebugLogParser
# Analizar el DebugLogFile y exportar a CSV
Convert-DNSDebugLogFile "DnsDebugLog_DC01.log"
Al hacer esto con todas las configuraciones predeterminadas del comando, obtienes 3 archivos CSV como salida del proceso de conversión.
| Archivo | Descripción |
|---|---|
| DnsDebugLog_DC01.csv | Este es el archivo de registro convertido con sus detalles en un formato estilo CSV |
| DnsDebugLog_DC01_Statistic.csv | Un CSV con una estadística que resume todos los tipos de registros en el registro por día |
| DnsDebugLog_DC01_PacketStatistic.csv | Un CSV con una estadística para el tipo “Paquete” y un resumen de todos los clientes por día |
Como ya se mencionó en las secciones anteriores, los CSV se pueden usar para un análisis posterior en Excel, PowerBI, o lo que prefieras. La intención de producir múltiples archivos es enfrentar los desafíos de big data en entornos más grandes.
Dependiendo de tu caso de uso, probablemente solo quieras tener estadísticas de uso. Con este enfoque, no necesitas inspeccionar todos los detalles en el registro completo. Puede reducir drásticamente la cantidad de almacenamiento, porque ya resume los datos e ignora todos los detalles ruidosos.
En caso de que quieras profundizar en la búsqueda y análisis de detalles, es posible que desees usar el registro completo e ignorar las estadísticas, porque no proporcionan suficientes detalles.
Pero, ¿no sería bonito tener un parámetro para especificar cuál de los archivos de salida deseas tener?
¡Saluda al parámetro -OutputType!
Convert-DNSDebugLogFile -InputFile "DnsDebugLog_DC01.log" -OutputType Statistic
Con esto, puedes especificar si deseas tener solo el registro, solo las estadísticas o ambos. Esto te brinda más flexibilidad y potencialmente te ahorra mucho espacio de almacenamiento.
Al inspeccionar los archivos CSV generados, es posible que te des cuenta de que hay una columna vacía llamada “ComputerName” en los CSV.

Esto se debe a que el registro de depuración de DNS no contiene el nombre del servidor. 🤷♂️
Puedes darle vida a esta columna pasando el nombre del servidor al parámetro -ComputerName en el comando.
# Especificar manualmente el nombre de la computadora
Convert-DNSDebugLogFile -InputFile "DnsDebugLog_DC01.log" -ComputerName "DC01"
¿Recuerdas mi consejo en la sección Configurar el DebugLogFile sobre poner el nombre del servidor en el nombre de los archivos de registro? Con práctica, puedes poner el nombre del servidor en el archivo CSV sobre la marcha dividiendo el nombre del archivo.
# Extraer automáticamente el nombre de la computadora del nombre del archivo
$files = Get-ChildItem c:\logs\*.log
foreach($file in $files) {
Convert-DNSDebugLogFile -InputFile $file.FullName -ComputerName $file.BaseName.split("_")[1]
}
Esto es especialmente útil si tienes múltiples servidores y deseas tener el nombre del servidor en el CSV para una mejor identificación y análisis.
Otra cosa de la que probablemente quieras ocuparte es el formato de fecha en el CSV generado. Por defecto, se utiliza el formato del archivo de registro subyacente.
Eso puede resultar en desafíos cuando tienes un entorno internacional con servidores localizados. Probablemente, el formato de fecha puede variar de un servidor a otro. Eso creará desafíos cuando quieras hacer algún análisis sobre la fecha en herramientas como Excel o PowerBI, porque pueden no reconocer el formato de fecha correctamente. Para enfrentar esto, puedes hacer uso de otro parámetro en el comando… ¡bienvenido al parámetro -OutputCulture!
Mi preferencia personal sobre el formato de fecha es el formato ISO, así que generalmente configuro la cultura de salida sueca ("sv-SE"), porque utiliza el formato ISO para la fecha y la hora. Con esto, puedo asegurar que el formato de fecha en el CSV generado sea consistente, ordenable y fácilmente reconocible, independientemente de la configuración regional.
Convert-DNSDebugLogFile -InputFile "DnsDebugLog_DC01.log" -OutputCulture "sv-SE"
Como nota al margen, también hay un parámetro -InputCulture si eres consciente del formato utilizado explícitamente en el servidor de origen. Este parámetro se comporta de la misma manera que el parámetro -OutputCulture, pero se utiliza para especificar la cultura para analizar la fecha del archivo de registro de origen.
Por último, pero no menos importante, dos consejos prácticos para el uso en producción:
Después de la conversión del archivo de registro original escrito en el CSV, es posible que desees eliminarlo para ahorrar espacio de almacenamiento. El CSV debería contener toda la información en un formato más utilizable. Con el parámetro -RemoveSourceFile, puedes hacer esto sin esfuerzo adicional.
Y dado que los archivos de registro son texto plano y pueden ser bastante grandes, es posible que desees comprimirlos después de la conversión. Con el parámetro -CompressOutput, también puedes hacer esto sobre la marcha.
Convert-DNSDebugLogFile -InputFile "DnsDebugLog_DC01.log" -OutputCulture "sv-SE" -RemoveSourceFile -CompressOutput
Combinando todo lo anterior, puedes tener una herramienta bastante poderosa y flexible para obtener datos para un análisis posterior de los registros de depuración de DNS, mientras también te ocupas de espacio de almacenamiento y gestión de archivos. Como último ejemplo, quiero presentar un ejemplo más completo que puedes usar en un entorno de producción:
# obtener los archivos de registro completamente escritos (cambiados) de la carpeta de registros
$files = Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" | Sort-Object lastwritetime, Name -Descending | Select-Object -Skip 1
# Pasando los archivos a conversión con todos los parámetros prácticos para un uso en producción
foreach($file in $files) {
$file | Convert-DNSDebugLogFile -ComputerName $file.BaseName.split("_")[1] -Delimiter ';' -OutputType 'Both' -ContextFilter Packet -OutputCulture sv-SE -CompressOutput -RemoveSourceFile
}
Este ejemplo, especialmente con el filtrado en el proceso de selección de archivos, está destinado a ejecutarse directamente en los servidores DNS. Pero también está bien ejecutarlo en una máquina dedicada para ahorrar recursos en los servidores DNS. Si se ejecuta en una máquina dedicada, no necesitas usar Select-Object -Skip 1 en el proceso de selección de archivos.

En cualquier caso, necesitas encargarte de recopilar los archivos, independientemente de si son los archivos procesados finalmente o los archivos de registro originales. Con el ejemplo mostrado, la ventaja es que solo transportarás archivos ZIP ya comprimidos. Ese puede ser un buen enfoque para ahorrar ancho de banda de red, especialmente si tienes servidores ampliamente distribuidos con muchos datos de registro.
Crear Informes
Después de la configuración y recopilación de los datos, probablemente querrás utilizarlos para crear información valiosa e informes. Dependiendo de tu caso de uso, hay diferentes herramientas disponibles para hacer esto. Echemos un vistazo a algunas de las opciones.
Soy plenamente consciente de que hay muchas más herramientas y enfoques disponibles, así que trata las siguientes secciones solo como ejemplos básicos para tener una idea de las posibilidades.
PowerShell - el disparo rápido
Como ya se mencionó en la sección Consumo de datos - EventLogs, puedes hacer un análisis rápido directamente en PowerShell importando los datos. Esto puede ser útil en sesiones de solución de problemas rápidas, donde solo deseas captar información básica rápidamente. Por supuesto, esta no es la solución de primera clase para análisis complejos o informes a largo plazo, pero es posible.
No entraré en muchos detalles aquí, porque ya cubrimos las opciones básicas de agrupamiento y filtrado en la sección Consumo de datos - EventLogs. Solo como otro ejemplo, el mismo enfoque con Group-Object se puede aplicar a los archivos CSV del DebugLogFile también:
# Importar los datos del archivo CSV generado
$dataRecords = Get-ChildItem C:\Administration\Logs\DNSServer\*_PacketStatistic.csv -File -Recurse | Import-Csv -Delimiter ";" -Encoding utf8
# Resumir cuántas consultas DNS se realizaron
$dataRecords | Measure-Object Count -Sum
# Qué servidores están en los datos
$dataRecords | Group-Object ComputerName -NoElement
# Qué tipo de consultas DNS se recopilaron
$dataRecords | Group-Object QuestionType -NoElement
# Qué IPs de clientes DNS están en contacto con el/los servidor(es)
$dataRecords | Group-Object ClientIP -NoElement
# Qué clientes DNS están hablando con qué servidor de manera distinta
$dataRecords | Group-Object { "$($_.ClientIP) --> $($_.ComputerName)" } | Format-Table Name -AutoSize
Especialmente el último ejemplo sobre agrupamiento por ClientIP puede ser muy útil para construir una tabla de correlación para la IP y el respectivo nombre del sistema. Esto requiere una infraestructura DNS adecuada con todos los dispositivos registrados, por supuesto. Aquí te mostramos cómo puedes hacerlo con PowerShell:
# Obtener la lista de IPs de clientes únicas de los registros de datos
$clientIPList = $dataRecords | Group-Object ClientIP -NoElement | Select-Object -ExpandProperty Name
# Resolver las IPs de clientes a nombres de host y crear una tabla de mapeo
$clientMapping = foreach ($clientIP in $clientIPList) {
if ($clientIP -in ("127.0.0.1", "0.0.0.0", "::1", ".")) {
[pscustomobject]@{
ClientIP = $clientIP
Name = "Localhost en el servidor DNS"
}
} else {
$result = Resolve-DnsName -Name $clientIP -Type PTR -QuickTimeout -ErrorAction SilentlyContinue
if (([array]$result).count -ge 1) {
[pscustomobject]@{
ClientIP = $clientIP
Name = (($result.NameHost | Sort-Object) -join "; ")
}
} else {
[pscustomobject]@{
ClientIP = $clientIP
Name = "<nombre no resolvible por DNS>"
}
}
}
}
# Salida de la tabla de mapeo de clientes
$clientMapping | Format-Table -AutoSize
# Exportar el mapeo de clientes a un archivo CSV para su uso posterior
$clientMapping | Export-Csv -Path "ClientIP_Mapping.csv" -Delimiter ";" -Encoding UTF8 -NoTypeInformation
Tal mapeo de clientes puede ser útil y beneficioso. Los resultados pueden verse así:

de manera regular y son fácilmente accesibles por múltiples usuarios sin necesidad de saber cómo manejar los datos subyacentes.
Si aún deseas echar un vistazo al archivo de PowerBI con los ejemplos, aquí está el archivo de PowerBI con los datos y los ejemplos.
Conclusión
Con todo esto, ahora estás bien equipado para adentrarte en el mundo del registro de depuración del servidor DNS.

Tienes el conocimiento para habilitar y configurar el registro de depuración, así como para consumir y analizar los datos generados. Ya sea que elijas hacer un análisis rápido en PowerShell o crear informes detallados en Excel o PowerBI, la elección es tuya. Solo recuerda, con gran poder viene una gran responsabilidad, así que ten cuidado con la cantidad de datos que estás recopilando y cómo los estás utilizando.
🚀 ¡Feliz registro y análisis! 🚀
Enlaces relacionados
- Microsoft Docs: Registro de depuración en el servidor DNS - Documentación oficial sobre cómo habilitar y usar el registro de depuración en el servidor DNS.
- PowerShell Gallery: DNSServer.DebugLogParser - Módulo de PowerShell para analizar archivos de registro de depuración del servidor DNS.
- GitHub Repository: DNSServer.DebugLogParser - Repositorio de GitHub para el módulo DNSServer.DebugLogParser, que incluye documentación y scripts de ejemplo.
- Documentación de PowerQuery - Documentación oficial para PowerQuery, una poderosa herramienta de transformación y análisis de datos que se puede usar con Excel y PowerBI.
- Documentación de PowerBI - Documentación oficial para PowerBI, una poderosa herramienta de análisis empresarial que se puede usar para crear informes y paneles interactivos.
Otros enlaces
Memes de makeameme.org
