Moodul 1 · 1.4
DNS-päringu teekond
Moodul 1: Mis on DNS? · Lugemisaeg: 8 minutit
Õpieesmärk: pärast seda tundi oskad samm-sammult selgitada, kuidas resolver vastuse leiab, ja kus teel vastuseid meelde jäetakse.
Põhimõisted: resolver (rekursiivne), juurserver, TLD-server, autoriteetne nimeserver, viide (delegeerimine), vahemälu (cache)
Kaks liiki DNS-servereid
Tunnis 1.1 nägid, et DNS on jaotatud: keegi ei tea kõike. Kuidas su brauser siis ikkagi saab teada www.example.com aadressi? Selleks teevad koostööd kahte liiki serverid:
- Autoriteetsed nimeserverid (inglise keeles authoritative) teavad vastust oma enda osa kohta.
example.comnimeserverid teavadexample.comkirjeid. Nad ei otsi midagi teiste jaoks. - Resolverid (ka rekursiivsed resolverid) otsivad vastuse sinu jaoks üles. Nad küsivad nii kaua, kuni saavad vastuse. Sinu internetiteenuse pakkujal on resolver ja on olemas ka avalikud resolverid, näiteks Quad9, Cloudflare või Google oma.
Sinu arvuti ise ei otsi peaaegu midagi üles. Tal on väike stub-resolver, mis annab päringu edasi sinu võrgu resolverile ja saab vastuse tagasi.
Teekond, samm-sammult
Oletame: resolver pole veel midagi meelde jätnud ja sa küsid www.example.com A-kirjet.
- Sinu arvuti küsib resolverilt: "Mis on www.example.com A-kirje?"
- Resolver küsib juurserverilt. Igal resolveril on sisse ehitatud nimekiri juurserverite aadressidest. Juurserver ei tea midagi
example.comkohta, kuid teab, kes haldab.com. Ta vastab viitega: "Selle jaoks pead pöörduma com-i nimeserverite poole: a.gtld-servers.net, b.gtld-servers.net ja nii edasi." - Resolver küsib .com nimeserverilt. See ei tea samuti
www.example.comIP-aadressi, kuid teab, millised nimeserverid onexample.comjaoks. Jälle viide: "Küsi seda ns1.hosting.example või ns2.hosting.example käest." - Resolver küsib example.com nimeserverilt. See on selle domeeni jaoks autoriteetne ja annab vastuse: "www.example.com A-kirje on 192.0.2.10."
- Resolver annab vastuse sinu arvutile. Su brauser loob ühenduse aadressiga 192.0.2.10.
Kõrgema taseme viidet madalama taseme nimeserveritele nimetatakse delegeerimiseks. Juur delegeerib .com Verisignile, .com delegeerib example.com nimeserveritele, mille domeeni omanik on määranud. .nl-domeeni puhul käib see täpselt samamoodi, ainult juur viitab siis .nl nimeserveritele (SIDN, näiteks ns1.dns.nl). Seda näed ise selle tunni lõpus olevas ülesandes. Seepärast ongi nii oluline, et nimeserverid registri juures õiged on (tund 2.1).
Vahemälu (cache): mitte iga kord kogu teekonda
Kui iga resolver alustaks iga päringu puhul uuesti juurest, saaks juur uskumatu hulga päringuid. Seda ei juhtu, sest resolver jätab vastused mõneks ajaks meelde. Seda mälu nimetatakse vahemäluks (cache).
Kui kaua vastust tohib meelde jätta, on kirjas vastuses endas: TTL (time to live), sekundites. TTL väärtus 3600 tähendab: seda vastust tohib meelde jätta ühe tunni. Meelde jäetakse ka viited. Resolver, kes just kuulis, millised nimeserverid on .com-il, ei pea seda järgmine kord juurelt uuesti küsima.
Kui keegi teine sama teenusepakkuja juures küsib minut hiljem www.example.com kohta, vastab resolver kohe oma vahemälust. Teekonda ei tule ja ooteaega ka mitte.
Vahemälusid on mitmes kohas:
- sinu teenusepakkuja resolveris või avalikus resolveris, mida kasutad;
- sinu operatsioonisüsteemis (Windows, macOS, su telefon);
- sinu brauseris;
- mõnikord su ruuteris.
See on kiire ja tõhus, kuid sellel on tagajärg, millega sa hiljem tihti kokku puutud: kui muudad kirjet, näitavad vahemälud vana vastust seni, kuni nende TTL möödub. Seepärast näeb üks muudatust juba, teine aga veel mitte. Moodul 6 räägib sellest põhjalikult.
Juurserverid
Juurserverite jaoks on 13 nime: a.root-servers.net kuni m.root-servers.net. Neid haldab kaksteist erinevat organisatsiooni. Iga nime taga on üle maailma palju servereid, sadades kohtades, mis jagavad sama aadressi (seda nimetatakse anycastiks). Su resolver jõuab automaatselt lähima juurde. Ka TLD-nimeserverid, näiteks .com ja .nl omad, töötavad samamoodi. Seetõttu on DNS kiire ja jätkab toimimist ka siis, kui mõni server kusagil kaob.
Kus asjad valesti minna võivad
Kui tunned teekonda, saad probleeme paremini paika panna:
- Delegeerimine ei ole õige. Registri juures on kirjas nimeserverid, mis domeeni (enam) ei tunne. Resolver ei jõua siis sammu 4 juurde edasi. Vastuseks on viga või ei tule üldse vastust.
- Autoriteetsel serveril on teistsugune vastus kui ootad. Siis oled kirjet muutnud mujal kui seal, kus nimeserverid tegelikult asuvad (tund 2.1).
- Vahemälus on veel vana vastus. Siis pole midagi katki. Pead ootama, kuni TTL möödub, või tühjendama oma vahemälu.
- DNSSEC ei ole korras. Valideeriv resolver kontrollib teel allkirju. Kui ahel ei klapi, keeldub ta vastust andmast (tund 8.1).
Tööriistaga dig +trace saad teekonna ise läbi teha, juurest kuni autoriteetse serverini. Seda õpid tunnis 8.2. Ka veebipõhised tööriistad oskavad seda teha.
Kokkuvõte
- Autoriteetsed nimeserverid teavad vastust oma domeeni kohta; resolverid otsivad vastuse sinu jaoks üles.
- Resolver alustab juurest, saab viite TLD-le, siis domeeni nimeserveritele, ja saab seal vastuse.
- Sellist viidet nimetatakse delegeerimiseks.
- Vastuseid hoitakse meeles vahemäludes, nii kaua kui TTL ütleb; seetõttu pole muudatused kõikjal kohe nähtavad.
- Juurserverite nimesid on 13, kuid tänu anycastile seisab nende taga üle maailma palju servereid.
Test
Ülesanne
Ülesanne Z1.4: teekonna jälgimine. Jälgi teekonda domeeni www.sidn.nl jaoks, kasutades käsku dig +trace www.sidn.nl või veebipõhist tööriista, mis näitab trace't. Täida: (1) üks nl. nimeserver, mille teel kohtad, (2) üks sidn.nl autoriteetne nimeserver.
Lisalugemist
Need artiklid kirjeldavad olukorda WebOké juures. Teiste pakkujate juures töötab see sarnaselt.
