Modul 1 · 1.4
Potovanje DNS poizvedbe
Modul 1: Kaj je DNS? · Čas branja: 8 minut
Učni cilj: Po tej lekciji boste znali korak za korakom razložiti, kako razreševalnik najde odgovor in kje se po poti odgovori shranjujejo v spomin.
Ključni pojmi: razreševalnik (rekurzivni), korenski strežnik, TLD strežnik, avtoritativni imenski strežnik, napotitev (delegacija), predpomnilnik (cache)
Dve vrsti DNS strežnikov
V lekciji 1.1 ste videli, da je DNS porazdeljen: nihče ne ve vsega. Kako Vaš brskalnik potem vseeno pride do naslova www.example.com? Za to sodelujeta dve vrsti strežnikov:
- Avtoritativni imenski strežniki (v angleščini authoritative) poznajo odgovor za svoj del. Imenski strežniki za
example.compoznajo zapise zaexample.com. Ničesar ne poizvedujejo za druge. - Razreševalniki (tudi rekurzivni razreševalniki) za Vas poiščejo odgovor. Sprašujejo tako dolgo, dokler ga ne dobijo. Vaš ponudnik internetnih storitev ima razreševalnik, obstajajo pa tudi javni razreševalniki, kot so tisti od Quad9, Cloudflare ali Google.
Vaš računalnik sam skoraj ničesar ne poizveduje. Ima majhen stub razreševalnik, ki vprašanje posreduje razreševalniku Vašega omrežja in prejme odgovor nazaj.
Potovanje, korak za korakom
Recimo, da si razreševalnik še ničesar ni zapomnil in Vi vprašate za zapis A za www.example.com.
- Vaš računalnik vpraša razreševalnik: "Kakšen je zapis A za www.example.com?"
- Razreševalnik vpraša korenski strežnik. Vsak razreševalnik ima vgrajen seznam naslovov korenskih strežnikov. Korenski strežnik ne ve ničesar o
example.com, ve pa, kdo upravlja.com. Odgovori z napotitvijo: "Za to morate k imenskim strežnikom za com: a.gtld-servers.net, b.gtld-servers.net, in tako naprej." - Razreševalnik vpraša imenski strežnik za .com. Ta prav tako ne ve IP naslova za
www.example.com, ve pa, katere imenske strežnike imaexample.com. Spet napotitev: "Vprašajte ns1.hosting.example ali ns2.hosting.example." - Razreševalnik vpraša imenski strežnik za example.com. Ta je avtoritativen za to domeno in poda odgovor: "www.example.com ima zapis A 192.0.2.10."
- Razreševalnik poda odgovor Vašemu računalniku. Vaš brskalnik vzpostavi povezavo z 192.0.2.10.
Napotitvi z višje ravni na imenske strežnike nižje ravni pravimo delegacija. Koren delegira .com podjetju Verisign, .com delegira example.com imenskim strežnikom, ki jih je navedel imetnik domene. Za domeno .nl poteka postopek popolnoma enako, le da koren napoti na imenske strežnike .nl (SIDN, register domene .nl na Nizozemskem, na primer ns1.dns.nl). To boste sami videli v nalogi na koncu te lekcije. Zato je tako pomembno, da so imenski strežniki pri registru pravilno nastavljeni (lekcija 2.1).
Predpomnilnik: ne vsakič cele poti
Če bi vsak razreševalnik pri vsakem vprašanju znova začel pri korenu, bi koren prejemal nepredstavljivo količino poizvedb. To se ne zgodi, ker si razreševalnik odgovore nekaj časa zapomni. Temu spominu pravimo predpomnilnik (cache).
Kako dolgo se sme odgovor pomniti, piše v samem odgovoru: TTL (time to live), v sekundah. TTL 3600 pomeni: ta odgovor se lahko pomni eno uro. Pomnijo se tudi napotitve. Razreševalnik, ki je ravnokar izvedel, katere imenske strežnike ima .com, tega naslednjič ne bo spraševal znova pri korenu.
Če nekdo drug pri istem ponudniku minuto kasneje vpraša za www.example.com, razreševalnik odgovori takoj iz svojega predpomnilnika. Brez potovanja, brez čakanja.
Predpomnilniki se nahajajo na več mestih:
- v razreševalniku Vašega ponudnika ali javnem razreševalniku, ki ga uporabljate;
- v Vašem operacijskem sistemu (Windows, macOS, Vaš telefon);
- v Vašem brskalniku;
- včasih v Vašem usmerjevalniku.
To je hitro in učinkovito, a ima posledico, na katero boste pozneje pogosto naleteli: če spremenite zapis, predpomnilniki še vedno vračajo stari odgovor, dokler ne poteče njihov TTL. Zato eden spremembo že vidi, drugi pa še ne. Modul 6 to obravnava podrobneje.
Korenski strežniki
Obstaja 13 imen korenskih strežnikov: od a.root-servers.net do m.root-servers.net. Upravlja jih dvanajst različnih organizacij. Za vsakim imenom se po svetu skriva veliko strežnikov, na stotinah lokacij, ki si delijo isti naslov (temu pravimo anycast). Vaš razreševalnik samodejno pristane pri bližnjem. Enako delujejo tudi imenski strežniki TLD, na primer za .com in .nl. Zato je DNS hiter in še naprej deluje, tudi če nekje odpove kak strežnik.
Kje lahko gre kaj narobe
Če poznate to potovanje, lahko težave lažje umestite:
- Delegacija ni pravilna. Pri registru so navedeni imenski strežniki, ki domene (ne več) poznajo. Razreševalnik pri 4. koraku ne pride naprej. Odgovor je napaka ali pa odgovora sploh ni.
- Avtoritativni strežnik ima drugačen odgovor, kot ste pričakovali. Zapis ste potem spremenili na drugem mestu, kot kjer se nahajajo imenski strežniki (lekcija 2.1).
- Predpomnilnik ima še stari odgovor. Takrat ni nič pokvarjeno. Počakati morate, da TTL poteče, ali počistiti svoj lastni predpomnilnik.
- DNSSEC ni pravilen. Razreševalnik, ki preverja veljavnost, po poti preveri podpise. Če veriga ni pravilna, odgovor zavrne (lekcija 8.1).
Z orodjem dig +trace lahko to potovanje ponovite sami, od korena do avtoritativnega strežnika. To se boste naučili v lekciji 8.2. To znajo tudi spletna orodja.
Povzetek
- Avtoritativni imenski strežniki poznajo odgovor za svojo lastno domeno; razreševalniki za Vas poiščejo odgovor.
- Razreševalnik začne pri korenu, prejme napotitev na TLD, nato na imenske strežnike domene, in tam prejme odgovor.
- Taki napotitvi pravimo delegacija.
- Odgovori se shranjujejo v predpomnilnike, kolikor časa določa TTL; zato spremembe niso povsod takoj vidne.
- Obstaja 13 imen korenskih strežnikov, a zaradi anycasta se za njimi po svetu skriva veliko strežnikov.
Kviz
Naloga
Naloga Z1.4: Sledenje potovanju. Sledite potovanju za www.sidn.nl, z ukazom dig +trace www.sidn.nl ali spletnim orodjem, ki prikaže sledenje. Vnesite: (1) en imenski strežnik za nl., na katerega naletite po poti, (2) en avtoritativni imenski strežnik za sidn.nl.
Za dodatno branje
Ti članki opisujejo stanje pri WebOké. Pri drugih ponudnikih deluje podobno.
