Vue d'ensemble

Ce que fait DNSServer.DebugLogParser, à quoi ressemble un journal de débogage DNS Windows, et quand il vaut la peine de le convertir en CSV.

For AI agents: a documentation index is available at /llms.txt; a markdown version of this page is available at /fr/docs/01-overview/index.md.

Le serveur DNS Windows peut écrire un journal de débogage. C’est un fichier texte brut, destiné à être lu par un humain, et qui peut grossir de plusieurs centaines de mégaoctets par jour sur un contrôleur de domaine très sollicité. Cette combinaison le rend presque inutilisable dès que vous voulez répondre à une question comme « quel client a demandé ce domaine 40 000 fois la nuit dernière ? »

DNSServer.DebugLogParser transforme ce fichier texte en tableau CSV. Une ligne de journal devient une ligne avec des colonnes nommées, que vous pouvez ouvrir dans Excel, charger dans Power BI, insérer en masse dans SQL Server, ou envoyer à votre SIEM.

Le module contient une seule commande :

Convert-DNSDebugLogFile -InputFile "C:\Windows\System32\dns\dns.log"

C’est tout le point d’entrée. Tout le reste sur ce site concerne comment le faire à grande échelle, selon un planning, et sur plusieurs serveurs.

À quoi ressemble un journal de débogage DNS

Une entrée brute est une ligne unique avec des champs positionnels, certains entre crochets :

2026-01-20 23:00:16 0FE0 PACKET 000002C53117D990 UDP Rcv 10.0.0.2 c049 Q [0001 D NOERROR] A (3)odc(9)officeapps(4)live(3)com(0)

Après conversion, le même événement devient une ligne CSV que vous pouvez filtrer et trier :

DateTime;ThreadId;Context;PacketId;Protocol;Direction;ClientIP;Xid;Type;Opcode;FlagsHex;FlagsChar;ResponseCode;QuestionType;QuestionName;Information;Details;ComputerName
2026-01-20 23:00:16;0FE0;Packet;000002C53117D990;UDP;Rcv;10.0.0.2;c049;Query;Standard;0001;RecursionDesired;NOERROR;A;"odc.officeapps.live.com";"";"";dc01

Notez deux choses que le format brut rend difficiles et que le parseur gère pour vous :

  • Le nom interrogé est stocké en notation DNS wire, (3)odc(9)officeapps(4)live(3)com(0), et devient un FQDN normal.
  • Un événement unique n’est pas toujours une ligne unique. Les blocs de détails PACKET et les messages d’événement continuent sur des lignes suivantes indentées. Le parseur les rattache à l’enregistrement auquel ils appartiennent au lieu de les ignorer ou de créer des lignes orphelines.

Chaque entrée contient jusqu’à 16 champs natifs — horodatage, protocole, direction, IP client, type de requête, nom interrogé, code de réponse, flags, et plus. La liste complète des colonnes est décrite dans Formats de sortie.

Pourquoi convertir

Dépannage

  • Comprendre pourquoi un nom ne se résout pas, et si la requête a même atteint le serveur
  • Identifier les clients ou applications mal configurés qui saturent le serveur
  • Tracer l’origine réelle d’une requête problématique
  • Vérifier les transferts de zone et le comportement général du DNS

Performance et capacité

  • Classer les clients par volume de requêtes et repérer les plus bruyants
  • Voir quels types d’enregistrements dominent votre trafic
  • Détecter les erreurs de configuration qui causent des recherches inutiles
  • Suivre la charge du serveur dans le temps au lieu de deviner

Analyse de sécurité

  • Détecter le tunneling DNS et l’exfiltration de données (visible typiquement comme un trafic TXT excessif — voir l’exemple d’analyse SQL Server)
  • Trouver les recherches vers des domaines de malwares et de commande et contrôle
  • Reconnaître les schémas de requêtes d’un hôte compromis
  • Surveiller les abus d’amplification DNS
  • Reconstituer ce qui s’est passé lors d’un incident

Conformité et audit

  • Respecter les obligations de journalisation et de conservation
  • Garder une trace d’audit de l’activité réseau
  • Produire des rapports pour la direction ou les auditeurs

Comment fonctionne le module

Convert-DNSDebugLogFile lit le journal en flux et écrit le CSV en flux. Le fichier n’est jamais chargé entièrement en mémoire, donc un journal de 100 Mo consomme à peu près autant de RAM qu’un de 10 Mo. Les détails sont dans Performance.

Ce qu’il vous offre :

FonctionnalitéDétail
Mise en forme CSV cohérente18 colonnes, même ordre à chaque fois, quel que soit le contexte dans le journal
Enregistrements multi-lignesLes blocs de détails PACKET et le texte des événements restent attachés à leur enregistrement
Versions du serveur DNSFormats de journal de 2012 R2 à 2025
Éditions PowerShellWindows PowerShell 5.1+ et PowerShell 7.x
Taille des fichiersTesté avec des journaux de plus de 100 Mo ; traitement en un seul passage
Validation d’en-têteRejette les fichiers qui ne sont pas des journaux de débogage DNS (peut être désactivé)
StatistiquesRegroupements journaliers optionnels, par contexte et par client/protocole/type
Support du pipelineGet-ChildItem *.log | Convert-DNSDebugLogFile
CompressionSortie ZIP optionnelle, généralement 90 % plus petite
Nettoyage sourceSuppression optionnelle du journal après une exécution réussie
Journaux internationauxAnalyse et écrit les dates selon la culture, un journal de-DE peut être lu sur une station en-US
Chemins réseauLit les sources depuis des chemins SMB/UNC
Fichiers verrouillésLit les journaux que le serveur DNS (ou autre) a ouverts

Journal actif vs journal archivé

Le schéma pratique est d’activer la rotation des journaux sur le serveur DNS et de laisser la conversion planifiée ignorer le fichier le plus récent :

Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" |
    Sort-Object LastWriteTime -Descending |
    Select-Object -Skip 1 |
    Convert-DNSDebugLogFile -ComputerName $env:COMPUTERNAME

Une implémentation complète basée sur une stratégie de groupe est documentée dans l’exemple de collecte pilotée par GPO.

Où aller ensuite

Licence et support

Licence MIT. Le support communautaire se fait via GitHub Issues ; les rapports de bugs et demandes de fonctionnalités sont les bienvenus.