Przegląd

Co robi DNSServer.DebugLogParser, jak wygląda debug log DNS w Windows, i kiedy warto go konwertować do CSV.

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

Windows DNS Server może zapisywać debug log. To plik tekstowy, przeznaczony do czytania przez człowieka, który na ruchliwym kontrolerze domeny rośnie o setki megabajtów dziennie. To sprawia, że staje się prawie bezużyteczny, gdy chcesz odpowiedzieć na pytanie typu „który klient pytał o tę domenę 40 000 razy zeszłej nocy?”

DNSServer.DebugLogParser zamienia ten plik tekstowy w tabelę CSV. Jeden wiersz logu staje się jednym wierszem z nazwanymi kolumnami, dzięki czemu możesz otworzyć go w Excelu, załadować do Power BI, masowo wstawić do SQL Server lub wysłać do swojego SIEM.

Moduł zawiera jedno polecenie:

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

To cały punkt wejścia. Wszystko inne na tej stronie dotyczy działania na dużą skalę, według harmonogramu i na wielu serwerach.

Jak wygląda debug log DNS

Surowy wpis to pojedyncza linia z polami pozycyjnymi, niektóre w nawiasach:

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)

Po konwersji ten sam event to wiersz CSV, który możesz filtrować i sortować:

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

Zwróć uwagę na dwie rzeczy, które w surowym formacie są trudne, a parser za ciebie ogarnia:

  • Zapytana nazwa jest zapisana w notacji DNS wire, (3)odc(9)officeapps(4)live(3)com(0), i staje się normalną nazwą FQDN.
  • Pojedynczy event nie zawsze to jedna linia. Bloki szczegółów PACKET i komunikaty zdarzeń kontynuują się na wciętych kolejnych liniach. Parser trzyma je przy rekordzie, do którego należą, zamiast je odrzucać lub tworzyć osierocone wiersze.

Każdy wpis zawiera do 16 natywnych pól — znacznik czasu, protokół, kierunek, IP klienta, typ zapytania, zapytaną nazwę, kod odpowiedzi, flagi i inne. Pełna lista kolumn jest opisana w Formaty wyjściowe.

Po co konwertować

Rozwiązywanie problemów

  • Dowiedz się, dlaczego nazwa się nie rozwiązuje i czy zapytanie w ogóle dotarło do serwera
  • Zidentyfikuj źle skonfigurowanych klientów lub aplikacje, które zalewają serwer zapytaniami
  • Śledź, skąd faktycznie pochodzi problematyczne zapytanie
  • Zweryfikuj transfery stref i ogólne zachowanie DNS

Wydajność i pojemność

  • Uszereguj klientów według liczby zapytań i znajdź tych hałaśliwych
  • Zobacz, które typy rekordów dominują w ruchu
  • Wykryj błędy konfiguracji powodujące niepotrzebne zapytania
  • Monitoruj obciążenie serwera w czasie zamiast zgadywać

Analiza bezpieczeństwa

  • Wykryj tunelowanie DNS i wyciek danych (zwykle widoczne jako nadmierny ruch TXT — zobacz przykład analizy SQL Server)
  • Znajdź zapytania do domen malware i command-and-control
  • Rozpoznaj wzorce zapytań z zainfekowanego hosta
  • Obserwuj nadużycia DNS amplification
  • Odtwórz, co się wydarzyło podczas incydentu

Zgodność i audyt

  • Spełnij wymogi logowania i przechowywania danych
  • Prowadź ścieżkę audytu aktywności sieciowej
  • Twórz raporty dla zarządu lub audytorów

Jak działa moduł

Convert-DNSDebugLogFile czyta log jako strumień i zapisuje CSV jako strumień. Plik nigdy nie jest ładowany do pamięci w całości, więc log 100 MB kosztuje mniej więcej tyle samo RAM co 10 MB. Szczegóły w Wydajność.

Co dostajesz:

MożliwośćSzczegóły
Spójny układ CSV18 kolumn, zawsze w tej samej kolejności, niezależnie od kontekstów w logu
Rekordy wielolinioweBloki szczegółów PACKET i tekst zdarzeń pozostają przy swoim rekordzie
Wersje DNS ServerFormat logów od 2012 R2 do 2025
Wersje PowerShellWindows PowerShell 5.1+ i PowerShell 7.x
Rozmiar plikuTestowane na logach 100 MB+; przetwarzanie jednokrotne, strumieniowe
Walidacja nagłówkaOdrzuca pliki, które nie są debug logami DNS (można wyłączyć)
StatystykiOpcjonalne dzienne podsumowania, według kontekstu i klienta/protokół/typ
Obsługa potokuGet-ChildItem *.log | Convert-DNSDebugLogFile
KompresjaOpcjonalny output ZIP, zwykle o 90% mniejszy
Czyszczenie źródłaOpcjonalne usunięcie logu po udanym przebiegu
Logi międzynarodoweParsuje i zapisuje daty według kultury, więc log de-DE można czytać na stacji en-US
Ścieżki siecioweCzyta źródła z SMB/UNC
Pliki zablokowaneCzyta logi, które DNS Server (lub cokolwiek innego) ma aktualnie otwarte

Aktywny log vs. log rotowany

Praktyczny wzorzec to włączenie rotacji logów na serwerze DNS i pozwolenie, by zaplanowana konwersja pominęła najnowszy plik:

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

Pełna implementacja oparta na zasadach grupy jest opisana w przykładzie zbierania opartego na GPO.

Co dalej

Licencja i wsparcie

Licencja MIT. Wsparcie społecznościowe odbywa się przez GitHub Issues; zgłaszanie błędów i propozycji funkcji jest mile widziane.