Panoramica

Cosa fa DNSServer.DebugLogParser, com’è fatto un log di debug DNS di Windows, e quando vale la pena convertirlo in CSV.

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 PACKET e 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 TXT eccessivo — 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 coerente18 colonne, sempre nello stesso ordine, indipendentemente dai contesti presenti nel log
Record multilineaI blocchi di dettaglio PACKET e il testo degli eventi restano collegati al loro record
Versioni di DNS ServerFormati di log da 2012 R2 fino al 2025
Edizioni di PowerShellWindows PowerShell 5.1+ e PowerShell 7.x
Dimensione fileTestato con log da oltre 100 MB; streaming in singola passata
Validazione headerRifiuta file che non sono log di debug DNS (disattivabile)
StatisticheRollup giornalieri opzionali, per contesto e per client/protocollo/tipo
Supporto pipelineGet-ChildItem *.log | Convert-DNSDebugLogFile
CompressioneOutput ZIP opzionale, tipicamente oltre il 90% più piccolo
Pulizia sorgenteCancellazione opzionale del log dopo una conversione riuscita
Log internazionaliAnalizza e scrive date per cultura, così un log de-DE può essere letto su una workstation en-US
Percorsi di reteLegge da percorsi SMB/UNC
File bloccatiLegge log che DNS Server (o altro) ha attualmente aperti

Log attivo vs. log ruotato

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

Licenze e supporto

Licenza MIT. Il supporto comunitario avviene tramite GitHub Issues; segnalazioni di bug e richieste di funzionalità sono benvenute.