# Yleiskatsaus

> Mitä DNSServer.DebugLogParser tekee, miltä Windowsin DNS-debug-loki näyttää ja milloin sen muuntaminen CSV-muotoon on vaivan arvoista.

---

LLMS index: [llms.txt](/llms.txt)

---

Windows DNS Server voi kirjoittaa debug-lokin. Se on tavallinen tekstimuotoinen tiedosto, joka on tarkoitettu ihmisen luettavaksi, ja se kasvaa satoja megatavuja päivässä vilkkaalla toimialueen ohjaimella. Tämä yhdistelmä tekee siitä lähes käyttökelvottoman heti, kun haluat vastata kysymykseen kuten *"mikä asiakas kysyi tätä domainia 40 000 kertaa viime yönä?"*

**DNSServer.DebugLogParser** muuttaa tuon tekstimuotoisen tiedoston CSV-taulukoksi. Yksi lokirivi muuttuu yhdeksi riviksi nimetyillä sarakkeilla, joten voit avata sen Excelissä, ladata Power BI:hin, lisätä massana SQL Serveriin tai lähettää SIEM-järjestelmääsi.

Moduulissa on yksi komento:

```powershell
Convert-DNSDebugLogFile -InputFile "C:\Windows\System32\dns\dns.log"
```

Tämä on koko sisäänkäynti. Kaikki muu tällä sivustolla käsittelee sen tekemistä laajassa mittakaavassa, aikataulutetusti ja useilla palvelimilla.

## Miltä DNS-debug-loki näyttää

Raaka merkintä on yksittäinen rivi, jossa on paikkaan sidottuja kenttiä, osa niistä hakasuluissa:

```text
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)
```

Muunnettuna sama tapahtuma on CSV-rivi, jota voi suodattaa ja lajitella:

```text
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
```

Huomaa kaksi asiaa, jotka raakamuoto tekee vaikeaksi, mutta parseri hoitaa puolestasi:

- Kysytty nimi on tallennettu DNS:n lankamuodossa, `(3)odc(9)officeapps(4)live(3)com(0)`, ja siitä tulee normaali FQDN.
- Yksi tapahtuma ei aina ole yksi rivi. `PACKET`-yksityiskohtablokit ja tapahtumaviestit jatkuvat sisennetyillä jatkoriveillä. Parseri pitää ne kiinni siihen merkintään, johon ne kuuluvat, sen sijaan että pudottaisi ne tai loisi orpoja rivejä.

Jokaisessa merkinnässä on jopa 16 alkuperäistä kenttää — aikaleima, protokolla, suunta, asiakas-IP, kyselytyyppi, kysytty nimi, vastauskoodi, liput ja muuta. Koko sarakeluettelo on kuvattu [Output Formats](../02-output-formats/)-sivulla.

## Miksi vaivautua muuntamaan

### Vianetsintä

- Selvitä, miksi nimi ei ratkea ja ylipäätään pääsikö kysely palvelimelle
- Tunnista väärin konfiguroidut asiakkaat tai sovellukset, jotka kuormittavat palvelinta
- Jäljitä, mistä ongelmallinen kysely oikeasti tulee
- Varmista vyöhykkeiden siirrot ja yleinen DNS-käyttäytyminen

### Suorituskyky ja kapasiteetti

- Lajittele asiakkaat kyselymäärän mukaan ja löydä meluisimmat
- Näe, mitkä tietue-tyypit hallitsevat liikennettäsi
- Havaitse konfiguraatiovirheet, jotka aiheuttavat vältettäviä hakuja
- Seuraa palvelimen kuormitusta ajan kuluessa arvaamisen sijaan

### Turvallisuusanalyysi

- Havaitse DNS-tunneloiminen ja tiedon ulosvirtaus (yleensä näkyy liiallisena `TXT`-liikenteenä — katso [SQL Server -analyysiesimerkki](../examples/security-analysis-sql/))
- Löydä haut haittaohjelmien ja komentokontrollidomainien suuntaan
- Tunnista kompromettoituneen isännän kyselykuviot
- Tarkkaile DNS-vahvistusväärinkäytöksiä
- Rakenna uudelleen, mitä tapahtui tapauksen aikana

### Säännösten noudattaminen ja auditointi

- Täytä lokitus- ja säilytysvelvoitteet
- Pidä kirjaa verkon toiminnasta
- Laadi raportteja johdolle tai tarkastajille

## Miten moduuli toimii

`Convert-DNSDebugLogFile` lukee lokin virtana ja kirjoittaa CSV:n virtana. Tiedostoa ei koskaan ladata kokonaan muistiin, joten 100 Mt loki vie suunnilleen saman verran muistia kuin 10 Mt. Yksityiskohdat löytyvät [Performance](../04-performance/)-sivulta.

Mitä se tarjoaa:

| Ominaisuus | Kuvaus |
|---|---|
| Johdonmukainen CSV-rakenne | 18 saraketta, sama järjestys joka kerta, riippumatta siitä, mitä konteksteja lokissa esiintyy |
| Moniriviset merkinnät | `PACKET`-yksityiskohtablokit ja tapahtumatekstit pysyvät kiinni omassa merkinnässään |
| DNS Server -versiot | 2012 R2:sta vuoteen 2025 lokimuodot |
| PowerShell-versiot | Windows PowerShell 5.1+ ja PowerShell 7.x |
| Tiedostokoko | Testattu yli 100 Mt lokit; yksinkertainen suoratoisto |
| Otsikon validointi | Hylkää tiedostot, jotka eivät ole DNS-debug-lokeja (voi kytkeä pois) |
| Tilastot | Valinnaiset päivittäiset yhteenvedot, kontekstin ja asiakkaan/protokollan/tyypin mukaan |
| Putkituen | `Get-ChildItem *.log \| Convert-DNSDebugLogFile` |
| Pakkaus | Valinnainen ZIP-tulos, tyypillisesti yli 90 % pienempi |
| Lähteen siivous | Valinnainen lokitiedoston poisto onnistuneen ajon jälkeen |
| Kansainväliset lokit | Jäsentää ja kirjoittaa päivämääriä kulttuurin mukaan, joten `de-DE`-loki voidaan lukea `en-US`-työasemalla |
| Verkkopolut | Lukee lähteitä SMB/UNC-polkujen kautta |
| Lukitut tiedostot | Lukee lokeja, joita DNS Server (tai joku muu) on parhaillaan avannut |

## Aktiivinen loki vs. kierrätetty loki

<div class="alert alert-warning" role="alert"><div class="h4 alert-heading" role="heading">Lue aktiivisia lokitiedostoja varoen</div>


Moduuli voi lukea lokitiedoston, johon DNS Server kirjoittaa juuri nyt. Tämä on kätevää nopeaan katsaukseen, mutta tiedosto muuttuu koko muunnoksen ajan. Tuloksesta voi puuttua uusimmat merkinnät tai se voi päättyä katkenneeseen merkintään.

Kaikessa aikataulutetussa tai tuotantoon liittyvässä käytössä muunna sen sijaan **kierrätetyt, suljetut** lokitiedostot, äläkä koskaan yhdistä aktiivista lokia `-RemoveSourceFile`-parametrin kanssa.
</div>


Käytännön malli on ottaa DNS-palvelimella käyttöön lokin kierrätys ja antaa aikataulutetun muunnoksen ohittaa uusin tiedosto:

```powershell
Get-ChildItem "C:\Administration\Logs\DNSServer\*.log" |
    Sort-Object LastWriteTime -Descending |
    Select-Object -Skip 1 |
    Convert-DNSDebugLogFile -ComputerName $env:COMPUTERNAME
```

Täydellinen ryhmäkäytäntöön perustuva toteutus on dokumentoitu [GPO-driven collection example](../examples/gpo-driven-collection/)-sivulla.

## Minne mennä seuraavaksi

- [Output Formats](../02-output-formats/) — mitä sarakkeet tarkoittavat, oikeiden esimerkkitiedostojen kanssa
- [Parameters and Options](../03-parameters-and-options/) — säätimet selkokielellä
- [Performance](../04-performance/) — miksi se on nopea ja miten pitää se nopeana
- [Integration](../05-integration/) — Excel, Power BI, SQL, SIEM, Python
- [Operational Best Practices](../06-operational-best-practices/) — tuotantokäyttö
- [Usage Examples](../examples/) — aikataulutetut tehtävät, GPO-jakelut, SQL-analytiikka
- [Command Reference](../commands/convert-dnsdebuglogfile/) — virallinen parametrilista

## Lisensointi ja tuki

MIT-lisenssi. Yhteisötuki tapahtuu GitHub Issues -kanavan kautta; virheraportit ja ominaisuuspyynnöt ovat tervetulleita.

- GitHub-repositorio: [AndiBellstedt/DNSServer.DebugLogParser](https://github.com/AndiBellstedt/DNSServer.DebugLogParser)
- PowerShell Gallery: [DNSServer.DebugLogParser](https://www.powershellgallery.com/packages/DNSServer.DebugLogParser)
