Panoramica
For AI agents: a documentation index is available at /llms.txt; a markdown version of this page is available at /it/docs/01-overview/index.md.
Windows DNS Server può scrivere un log di debug. È un file di testo semplice, pensato per essere letto da un umano, e cresce di centinaia di megabyte al giorno su un controller di dominio molto attivo. Questa combinazione lo rende quasi inutile nel momento in cui vuoi rispondere a una domanda come “quale client ha richiesto questo dominio 40.000 volte la scorsa notte?”
DNSServer.DebugLogParser trasforma quel file di testo in una tabella CSV. Una riga di log diventa una riga con colonne nominate, così puoi aprirla in Excel, caricarla in Power BI, inserirla in blocco in SQL Server o inviarla al tuo SIEM.
Il modulo contiene un solo comando:
Convert-DNSDebugLogFile -InputFile "C:\Windows\System32\dns\dns.log"
Questo è tutto il punto di ingresso. Tutto il resto in questo sito riguarda come farlo su larga scala, con una pianificazione e su più server.
Com’è fatto un log di debug DNS
Una voce grezza è una singola riga con campi posizionali, alcuni racchiusi tra parentesi:
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)
Dopo la conversione, lo stesso evento diventa una riga CSV che puoi filtrare e ordinare:
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
Nota due cose che il formato grezzo rende difficili e che il parser gestisce per te:
- Il nome interrogato è memorizzato nella notazione wire DNS,
(3)odc(9)officeapps(4)live(3)com(0), e diventa un FQDN normale. - Un singolo evento non è sempre una singola riga. I blocchi di dettaglio
PACKETe i messaggi di evento continuano su righe successive indentate. Il parser li mantiene collegati al record a cui appartengono invece di scartarli o creare righe orfane.
Ogni voce contiene fino a 16 campi nativi — timestamp, protocollo, direzione, IP client, tipo di query, nome interrogato, codice di risposta, flag e altro. L’elenco completo delle colonne è descritto in Output Formats.
Perché vale la pena convertire
Risoluzione dei problemi
- Scoprire perché un nome non si risolve e se la query è arrivata al server
- Identificare client o applicazioni mal configurati che sovraccaricano il server
- Tracciare da dove proviene una query problematica
- Verificare i trasferimenti di zona e il comportamento generale del DNS
Prestazioni e capacità
- Classificare i client per volume di query e trovare quelli rumorosi
- Vedere quali tipi di record dominano il traffico
- Individuare errori di configurazione che causano lookup evitabili
- Monitorare il carico del server nel tempo invece di indovinare
Analisi di sicurezza
- Rilevare tunneling DNS ed esfiltrazione dati (tipicamente visibile come traffico
TXTeccessivo — vedi l’esempio di analisi SQL Server) - Trovare lookup verso domini di malware e command-and-control
- Riconoscere pattern di query di un host compromesso
- Sorvegliare abusi di amplificazione DNS
- Ricostruire cosa è successo durante un incidente
Conformità e auditing
- Soddisfare obblighi di logging e conservazione
- Tenere traccia delle attività di rete
- Produrre report per la direzione o gli auditor
Come funziona il modulo
Convert-DNSDebugLogFile legge il log come stream e scrive il CSV come stream. Il file non viene mai caricato interamente in memoria, quindi un log da 100 MB consuma più o meno la stessa RAM di uno da 10 MB. I dettagli sono in Performance.
Cosa ti offre:
| Funzionalità | Dettaglio |
|---|---|
| Layout CSV coerente | 18 colonne, sempre nello stesso ordine, indipendentemente dai contesti presenti nel log |
| Record multilinea | I blocchi di dettaglio PACKET e il testo degli eventi restano collegati al loro record |
| Versioni di DNS Server | Formati di log da 2012 R2 fino al 2025 |
| Edizioni di PowerShell | Windows PowerShell 5.1+ e PowerShell 7.x |
| Dimensione file | Testato con log da oltre 100 MB; streaming in singola passata |
| Validazione header | Rifiuta file che non sono log di debug DNS (disattivabile) |
| Statistiche | Rollup giornalieri opzionali, per contesto e per client/protocollo/tipo |
| Supporto pipeline | Get-ChildItem *.log | Convert-DNSDebugLogFile |
| Compressione | Output ZIP opzionale, tipicamente oltre il 90% più piccolo |
| Pulizia sorgente | Cancellazione opzionale del log dopo una conversione riuscita |
| Log internazionali | Analizza e scrive date per cultura, così un log de-DE può essere letto su una workstation en-US |
| Percorsi di rete | Legge da percorsi SMB/UNC |
| File bloccati | Legge log che DNS Server (o altro) ha attualmente aperti |
Log attivo vs. log ruotato
Il modulo può leggere il file di log che DNS Server sta scrivendo in questo momento. È comodo per un’occhiata veloce, ma il file continua a cambiare mentre la conversione è in corso. Il risultato può mancare delle voci più recenti o terminare con un record troncato.
Per qualsiasi attività pianificata o rilevante in produzione, converti invece i file di log ruotati e chiusi, e non combinare mai un log attivo con -RemoveSourceFile.
Il modello pratico è abilitare il rollover del log sul server DNS e far saltare la conversione pianificata del file più recente:
Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" |
Sort-Object LastWriteTime -Descending |
Select-Object -Skip 1 |
Convert-DNSDebugLogFile -ComputerName $env:COMPUTERNAME
Un’implementazione completa basata su Group Policy è documentata nell’esempio di raccolta guidata da GPO.
Dove andare dopo
- Output Formats — cosa significano le colonne, con file di esempio reali
- Parameters and Options — le opzioni, spiegate in modo semplice
- Performance — perché è veloce e come mantenerlo veloce
- Integration — Excel, Power BI, SQL, SIEM, Python
- Operational Best Practices — come usarlo in produzione
- Usage Examples — attività pianificate, rollout GPO, analisi SQL
- Command Reference — elenco autorevole dei parametri
Licenze e supporto
Licenza MIT. Il supporto comunitario avviene tramite GitHub Issues; segnalazioni di bug e richieste di funzionalità sono benvenute.
- Repository GitHub: AndiBellstedt/DNSServer.DebugLogParser
- PowerShell Gallery: DNSServer.DebugLogParser