Modul 1 · 1.4
Put jednog DNS upita
Modul 1: Što je DNS? · Vrijeme čitanja: 8 minuta
Cilj učenja: Nakon ove lekcije moći ćete korak po korak objasniti kako resolver pronalazi odgovor i gdje se usput odgovori pamte.
Ključni pojmovi: resolver (rekurzivni), root poslužitelj, TLD poslužitelj, autoritativni poslužitelj imena, preusmjeravanje (delegacija), predmemorija (cache)
Dvije vrste DNS poslužitelja
U lekciji 1.1 vidjeli ste da je DNS podijeljen: nitko ne zna sve. Kako onda Vaš preglednik ipak dolazi do adrese www.example.com? Za to surađuju dvije vrste poslužitelja:
- Autoritativni poslužitelji imena (na engleskom authoritative) znaju odgovor za svoj vlastiti dio. Poslužitelji imena domene
example.comznaju zapise domeneexample.com. Oni ne traže ništa za druge. - Resolveri (nazivaju se i rekurzivni resolveri) traže odgovor umjesto Vas. Pitaju toliko dugo dok ga ne dobiju. Vaš internetski davatelj usluga ima resolver, a postoje i javni resolveri poput onih tvrtki Quad9, Cloudflare ili Google.
Vaše računalo samo gotovo ništa ne pretražuje. Ima mali stub resolver koji prosljeđuje upit resolveru Vaše mreže i prima natrag odgovor.
Put, korak po korak
Pretpostavimo: resolver još ništa nije zapamtio, a Vi tražite A zapis za www.example.com.
- Vaše računalo pita resolver: "Koji je A zapis za www.example.com?"
- Resolver pita root poslužitelj. Svaki resolver ima ugrađen popis adresa root poslužitelja. Root poslužitelj ne zna ništa o domeni
example.com, ali zna tko upravlja domenom.com. Odgovara preusmjeravanjem: "Za to se trebate obratiti poslužiteljima imena domene com: a.gtld-servers.net, b.gtld-servers.net, i tako dalje." - Resolver pita jedan poslužitelj imena domene .com. Ni on ne zna IP adresu domene
www.example.com, ali zna koje poslužitelje imena imaexample.com. Ponovno preusmjeravanje: "Pitajte ns1.hosting.example ili ns2.hosting.example." - Resolver pita poslužitelj imena domene example.com. On je autoritativan za ovu domenu i daje odgovor: "www.example.com ima A zapis 192.0.2.10."
- Resolver daje odgovor Vašem računalu. Vaš preglednik uspostavlja vezu s 192.0.2.10.
Preusmjeravanje s višeg razine na poslužitelje imena niže razine naziva se delegacija. Root delegira .com tvrtki Verisign, .com delegira example.com poslužiteljima imena koje je naveo vlasnik domene. Za domenu .nl to ide na potpuno isti način, samo root tada upućuje na poslužitelje imena domene .nl (SIDN, primjerice ns1.dns.nl). To ćete sami vidjeti u zadatku na kraju ove lekcije. Zato je toliko važno da poslužitelji imena kod registra budu ispravno postavljeni (lekcija 2.1).
Predmemorija: ne svaki put cijeli put
Kad bi svaki resolver pri svakom upitu ponovno počinjao od root poslužitelja, root bi primao nezamislivu količinu upita. To se ne događa, jer resolver pamti odgovore neko vrijeme. Ta memorija naziva se predmemorija (cache).
Koliko dugo se odgovor smije pamtiti, piše u samom odgovoru: TTL (time to live), u sekundama. TTL od 3600 znači: ovaj se odgovor smije pamtiti jedan sat. Pamte se i preusmjeravanja. Resolver koji je upravo saznao koje poslužitelje imena ima .com, sljedeći put to ne mora ponovno pitati root poslužitelj.
Ako netko drugi kod istog davatelja usluga minutu kasnije pita za www.example.com, resolver odmah odgovara iz svoje predmemorije. Bez puta, bez čekanja.
Predmemorije se nalaze na više mjesta:
- u resolveru Vašeg davatelja usluga ili javnom resolveru koji koristite;
- u Vašem operacijskom sustavu (Windows, macOS, Vaš telefon);
- u Vašem pregledniku;
- ponekad u Vašem routeru.
To je brzo i učinkovito, ali ima posljedicu na koju ćete kasnije često nailaziti: ako promijenite zapis, predmemorije i dalje daju stari odgovor dok njihov TTL ne istekne. Zato jedan korisnik već vidi promjenu, a drugi još ne. Modul 6 o tome govori opširnije.
Root poslužitelji
Postoji 13 naziva za root poslužitelje: od a.root-servers.net do m.root-servers.net. Njima upravlja dvanaest različitih organizacija. Iza svakog naziva stoji diljem svijeta mnogo poslužitelja, na stotinama lokacija, koji dijele istu adresu (to se naziva anycast). Vaš resolver automatski dolazi do najbližeg. I TLD poslužitelji imena, poput onih za .com i .nl, rade na isti način. Zbog toga je DNS brz i nastavlja raditi i kad negdje poslužitelj otkaže.
Gdje može poći po zlu
Ako poznajete put, lakše ćete prepoznati probleme:
- Delegacija nije ispravna. Kod registra se nalaze poslužitelji imena koji domenu (više) ne poznaju. Resolver tada ne može dalje u koraku 4. Odgovor je pogreška ili uopće nema odgovora.
- Autoritativni poslužitelj ima drugačiji odgovor nego što očekujete. Tada ste zapis promijenili na drugom mjestu od onog gdje se nalaze poslužitelji imena (lekcija 2.1).
- Predmemorija još ima stari odgovor. Tada ništa nije pokvareno. Morate pričekati da TTL istekne, ili isprazniti vlastitu predmemoriju.
- DNSSEC nije ispravan. Resolver koji provjerava valjanost usput provjerava potpise. Ako lanac nije ispravan, odbija odgovor (lekcija 8.1).
Pomoću alata dig +trace možete sami ponoviti put, od root poslužitelja do autoritativnog poslužitelja. To ćete naučiti u lekciji 8.2. To mogu i online alati.
Sažetak
- Autoritativni poslužitelji imena znaju odgovor za svoju vlastitu domenu; resolveri traže odgovor umjesto Vas.
- Resolver počinje kod root poslužitelja, dobiva preusmjeravanje na TLD, zatim na poslužitelje imena domene, i tamo dobiva odgovor.
- Takvo preusmjeravanje naziva se delegacija.
- Odgovori se pamte u predmemorijama, onoliko dugo koliko kaže TTL; zato promjene nisu posvuda odmah vidljive.
- Postoji 13 naziva root poslužitelja, ali zahvaljujući anycastu iza njih diljem svijeta stoji mnogo poslužitelja.
Kviz
Zadatak
Zadatak Z1.4: Praćenje puta. Pratite put za www.sidn.nl, pomoću dig +trace www.sidn.nl ili online alata koji prikazuje trag (trace). Popunite: (1) jedan poslužitelj imena domene nl. na koji ste naišli usput, (2) jedan autoritativni poslužitelj imena domene sidn.nl.
Dodatno štivo
Ovi članci opisuju situaciju kod WebOké. Kod drugih pružatelja usluga to funkcionira slično.
