Przegląd
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
PACKETi 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 CSV | 18 kolumn, zawsze w tej samej kolejności, niezależnie od kontekstów w logu |
| Rekordy wieloliniowe | Bloki szczegółów PACKET i tekst zdarzeń pozostają przy swoim rekordzie |
| Wersje DNS Server | Format logów od 2012 R2 do 2025 |
| Wersje PowerShell | Windows PowerShell 5.1+ i PowerShell 7.x |
| Rozmiar pliku | Testowane na logach 100 MB+; przetwarzanie jednokrotne, strumieniowe |
| Walidacja nagłówka | Odrzuca pliki, które nie są debug logami DNS (można wyłączyć) |
| Statystyki | Opcjonalne dzienne podsumowania, według kontekstu i klienta/protokół/typ |
| Obsługa potoku | Get-ChildItem *.log | Convert-DNSDebugLogFile |
| Kompresja | Opcjonalny output ZIP, zwykle o 90% mniejszy |
| Czyszczenie źródła | Opcjonalne usunięcie logu po udanym przebiegu |
| Logi międzynarodowe | Parsuje i zapisuje daty według kultury, więc log de-DE można czytać na stacji en-US |
| Ścieżki sieciowe | Czyta źródła z SMB/UNC |
| Pliki zablokowane | Czyta logi, które DNS Server (lub cokolwiek innego) ma aktualnie otwarte |
Aktywny log vs. log rotowany
Moduł może czytać plik logu, do którego DNS Server właśnie zapisuje. To wygodne do szybkiego podglądu, ale plik ciągle się zmienia podczas konwersji. Wynik może nie zawierać najnowszych wpisów lub zakończyć się uciętym rekordem.
Do zadań zaplanowanych lub produkcyjnych konwertuj rotowane, zamknięte pliki logów i nigdy nie łącz aktywnego logu z -RemoveSourceFile.
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
- Formaty wyjściowe — co oznaczają kolumny, z prawdziwymi przykładami plików
- Parametry i opcje — pokrętła, wyjaśnione prostym językiem
- Wydajność — dlaczego jest szybko i jak utrzymać szybkość
- Integracja — Excel, Power BI, SQL, SIEM, Python
- Dobre praktyki operacyjne — uruchamianie w produkcji
- Przykłady użycia — zadania zaplanowane, wdrożenie GPO, analityka SQL
- Referencja poleceń — autorytatywna lista parametrów
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.
- Repozytorium GitHub: AndiBellstedt/DNSServer.DebugLogParser
- PowerShell Gallery: DNSServer.DebugLogParser