Vue d'ensemble
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
PACKETet 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
TXTexcessif — 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érente | 18 colonnes, même ordre à chaque fois, quel que soit le contexte dans le journal |
| Enregistrements multi-lignes | Les blocs de détails PACKET et le texte des événements restent attachés à leur enregistrement |
| Versions du serveur DNS | Formats de journal de 2012 R2 à 2025 |
| Éditions PowerShell | Windows PowerShell 5.1+ et PowerShell 7.x |
| Taille des fichiers | Testé avec des journaux de plus de 100 Mo ; traitement en un seul passage |
| Validation d’en-tête | Rejette les fichiers qui ne sont pas des journaux de débogage DNS (peut être désactivé) |
| Statistiques | Regroupements journaliers optionnels, par contexte et par client/protocole/type |
| Support du pipeline | Get-ChildItem *.log | Convert-DNSDebugLogFile |
| Compression | Sortie ZIP optionnelle, généralement 90 % plus petite |
| Nettoyage source | Suppression optionnelle du journal après une exécution réussie |
| Journaux internationaux | Analyse et écrit les dates selon la culture, un journal de-DE peut être lu sur une station en-US |
| Chemins réseau | Lit les sources depuis des chemins SMB/UNC |
| Fichiers verrouillés | Lit les journaux que le serveur DNS (ou autre) a ouverts |
Journal actif vs journal archivé
Le module peut lire le fichier journal que le serveur DNS écrit en ce moment. C’est pratique pour un coup d’œil rapide, mais le fichier change pendant la conversion. Le résultat peut manquer les entrées les plus récentes ou se terminer par un enregistrement tronqué.
Pour tout ce qui est planifié ou critique en production, convertissez plutôt les fichiers journaux archivés et fermés, et ne combinez jamais un journal actif avec -RemoveSourceFile.
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
- Formats de sortie — ce que signifient les colonnes, avec des fichiers exemples réels
- Paramètres et options — les réglages, expliqués simplement
- Performance — pourquoi c’est rapide et comment le rester
- Intégration — Excel, Power BI, SQL, SIEM, Python
- Bonnes pratiques opérationnelles — l’utilisation en production
- Exemples d’utilisation — tâches planifiées, déploiement GPO, analyses SQL
- Référence des commandes — la liste officielle des paramètres
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.
- Dépôt GitHub : AndiBellstedt/DNSServer.DebugLogParser
- PowerShell Gallery : DNSServer.DebugLogParser