1 modulis · 1.4
DNS užklausos kelionė
1 modulis: Kas yra DNS? · Skaitymo trukmė: 8 min.
Mokymosi tikslas: po šios pamokos galėsite žingsnis po žingsnio paaiškinti, kaip resolveris randa atsakymą ir kur pakeliui atsakymai yra įsimenami.
Pagrindinės sąvokos: resolveris (rekursinis), šakninis serveris (root server), TLD serveris, autoritetinis (authoritative) vardų serveris, nukreipimas (delegacija), talpykla (cache)
Dviejų rūšių DNS serveriai
1.1 pamokoje matėte, kad DNS yra paskirstytas: niekas nežino visko. Kaip tuomet Jūsų naršyklė vis dėlto sužino adresą, priklausantį www.example.com? Tam kartu dirba dviejų rūšių serveriai:
- Autoritetiniai vardų serveriai (angliškai authoritative) žino atsakymą tik savo pačių sričiai.
example.comvardų serveriai žinoexample.comįrašus. Jie niekam kitam nieko neieško. - Resolveriai (dar vadinami rekursiniais resolveriais) ieško atsakymo už Jus. Jie klausinėja tol, kol gauna atsakymą. Jūsų interneto paslaugų teikėjas turi savo resolverį, be to, yra ir vieši resolveriai, pavyzdžiui, Quad9, Cloudflare ar Google.
Jūsų kompiuteris pats beveik nieko neieško. Jame veikia mažas stub resolveris, kuris perduoda užklausą Jūsų tinklo resolveriui ir gauna atsakymą atgal.
Kelionė žingsnis po žingsnio
Tarkime, resolveris dar nieko neatsimena, o Jūs prašote www.example.com A įrašo.
- Jūsų kompiuteris klausia resolverio: „Koks yra www.example.com A įrašas?"
- Resolveris klausia šakninio serverio. Kiekviename resolveryje yra įdiegtas sąrašas su šakninių serverių adresais. Šakninis serveris nieko nežino apie
example.com, tačiau žino, kas administruoja.com. Jis atsako nukreipimu: „Dėl to kreipkitės į com vardų serverius: a.gtld-servers.net, b.gtld-servers.net ir taip toliau." - Resolveris klausia .com vardų serverio. Jis taip pat nežino
www.example.comIP adreso, tačiau žino, kokie vardų serveriai priklausoexample.com. Vėl nukreipimas: „Klauskite ns1.hosting.example arba ns2.hosting.example." - Resolveris klausia example.com vardų serverio. Jis yra autoritetinis šiam domenui ir pateikia atsakymą: „www.example.com turi A įrašą 192.0.2.10."
- Resolveris perduoda atsakymą Jūsų kompiuteriui. Jūsų naršyklė prisijungia prie 192.0.2.10.
Nukreipimas iš aukštesnio lygio į žemesnio lygio vardų serverius vadinamas delegacija. Root deleguoja .com Verisign, .com deleguoja example.com vardų serveriams, kuriuos nurodė domeno valdytojas. Su .nl domenu veikia lygiai taip pat, tik root nukreipia į .nl vardų serverius (SIDN, Nyderlandų .nl registras, pavyzdžiui, ns1.dns.nl). Tai patys pamatysite šios pamokos pabaigoje esančioje užduotyje. Todėl taip svarbu, kad vardų serveriai registre būtų teisingi (2.1 pamoka).
Talpykla: ne kiekvieną kartą visa kelionė
Jei kiekvienas resolveris kiekvienos užklausos metu vėl pradėtų nuo root, root gautų neįsivaizduojamą kiekį užklausų. Taip nenutinka, nes resolveris įsimena atsakymus tam tikrą laiką. Ta atmintis vadinama talpykla (cache).
Kiek laiko atsakymą galima įsiminti, nurodyta pačiame atsakyme: tai TTL (time to live), nurodomas sekundėmis. TTL lygus 3600 reiškia: šį atsakymą galima įsiminti vieną valandą. Taip pat įsimenami ir nukreipimai. Resolveriui, kuris ką tik sužinojo, kokie vardų serveriai priklauso .com, kitą kartą nebereikia to vėl klausti root.
Jei kas nors kitas pas tą patį paslaugų teikėją po minutės paklaus apie www.example.com, resolveris atsakys iš karto iš savo talpyklos. Jokios kelionės, jokio laukimo.
Talpyklos yra keliose vietose:
- Jūsų paslaugų teikėjo resolveryje arba viešajame resolveryje, kurį naudojate;
- Jūsų operacinėje sistemoje (Windows, macOS, Jūsų telefone);
- Jūsų naršyklėje;
- kartais ir maršrutizatoriuje.
Tai greita ir efektyvu, tačiau tai turi pasekmę, su kuria dažnai susidursite vėliau: pakeitus įrašą, talpyklos ir toliau rodys seną atsakymą, kol nesibaigs jų TTL. Todėl vienas pakeitimą jau pastebi, o kitas dar ne. Apie tai plačiau kalbama 6 modulyje.
Šakniniai serveriai
Yra 13 šakninių serverių pavadinimų: nuo a.root-servers.net iki m.root-servers.net. Juos administruoja dvylika skirtingų organizacijų. Už kiekvieno pavadinimo visame pasaulyje stovi daug serverių, šimtuose vietų, kurie dalijasi tuo pačiu adresu (tai vadinama anycast). Jūsų resolveris automatiškai pasiekia artimiausią iš jų. Taip pat veikia ir TLD vardų serveriai, pavyzdžiui, .com ir .nl. Todėl DNS yra greitas ir toliau veikia net jei kažkur serveris sugenda.
Kur gali atsirasti klaidų
Žinodami kelionės eigą, galite geriau suprasti, kur gali kilti problemos:
- Neteisinga delegacija. Registre nurodyti vardų serveriai, kurie domeno nebeatpažįsta (arba niekada neatpažino). Resolveris tuomet nebegali pasiekti 4 žingsnio. Rezultatas yra klaida arba atsakymo apskritai negaunama.
- Autoritetinis serveris pateikia kitokį atsakymą, nei tikėjotės. Tuomet įrašą pakeitėte ne toje vietoje, kur yra tikrieji vardų serveriai (2.1 pamoka).
- Talpykloje vis dar yra senas atsakymas. Tuomet niekas nesugedo. Reikia palaukti, kol pasibaigs TTL, arba išvalyti savo talpyklą.
- DNSSEC neteisingas. Validuojantis resolveris pakeliui tikrina parašus. Jei grandinė neteisinga, jis atsisako pateikti atsakymą (8.1 pamoka).
Su įrankiu dig +trace galite patys pakartoti šią kelionę, nuo root iki autoritetinio serverio. Tai sužinosite 8.2 pamokoje. Tą patį gali padaryti ir internetiniai įrankiai.
Santrauka
- Autoritetiniai vardų serveriai žino atsakymą tik savo pačių domenui; resolveriai ieško atsakymo už Jus.
- Resolveris pradeda nuo root, gauna nukreipimą į TLD, paskui į domeno vardų serverius, ir ten gauna atsakymą.
- Toks nukreipimas vadinamas delegacija.
- Atsakymai įsimenami talpyklose tiek laiko, kiek nurodo TTL; todėl pakeitimai ne visur matomi iš karto.
- Yra 13 šakninių serverių pavadinimų, tačiau dėl anycast už jų visame pasaulyje stovi daug serverių.
Testas
Užduotis
Užduotis Z1.4: Kelionės atsekimas. Atsekite kelionę domenui www.sidn.nl, naudodami dig +trace www.sidn.nl arba internetinį įrankį, rodantį trasavimą. Užpildykite: (1) vieną nl. vardų serverį, su kuriuo susidūrėte pakeliui, (2) vieną autoritetinį sidn.nl vardų serverį.
Papildomai paskaityti
Šie straipsniai aprašo situaciją WebOké sistemoje. Pas kitus paslaugų teikėjus veikia panašiai.
