Modul 1 · 1.4
Cesta jedného DNS dotazu
Modul 1: Čo je DNS? · Čas čítania: 8 min
Cieľ lekcie: Po tejto lekcii dokážete krok za krokom vysvetliť, ako resolver nájde odpoveď, a kde sa po ceste odpovede zapamätávajú.
Kľúčové pojmy: resolver (rekurzívny), rootserver, TLD server, autoritatívny menný server, odkaz (delegácia), cache
Dva druhy DNS serverov
V lekcii 1.1 ste videli, že DNS je rozdelený: nikto nevie všetko. Ako teda váš prehliadač zistí adresu www.example.com? Na to spolupracujú dva druhy serverov:
- Autoritatívne menné servery (po anglicky authoritative) poznajú odpoveď pre svoju vlastnú časť. Menné servery domény
example.compoznajú záznamy preexample.com. Pre iných nič nezisťujú. - Resolvery (nazývané aj rekurzívne resolvery) zisťujú odpoveď za vás. Pýtajú sa tak dlho, kým ju nezískajú. Váš internetový poskytovateľ má svoj resolver, a existujú aj verejné resolvery, napríklad od Quad9, Cloudflare alebo Google.
Váš počítač sám takmer nič nezisťuje. Má malý stub resolver, ktorý odovzdá otázku resolveru vašej siete a dostane späť odpoveď.
Cesta krok za krokom
Predstavte si: resolver si zatiaľ nič nepamätá a vy sa pýtate na záznam A pre www.example.com.
- Váš počítač sa pýta resolvera: "Aký je záznam A pre www.example.com?"
- Resolver sa pýta rootserver. Každý resolver má zabudovaný zoznam adries rootserverov. Rootserver nevie nič o
example.com, ale vie, kto spravuje.com. Odpovie odkazom: "Na to sa musíte opýtať menných serverov pre com: a.gtld-servers.net, b.gtld-servers.net, a tak ďalej." - Resolver sa pýta menného servera pre .com. Ten tiež nepozná IP adresu
www.example.com, ale vie, ktoré menné servery máexample.com. Opäť odkaz: "Spýtajte sa ns1.hosting.example alebo ns2.hosting.example." - Resolver sa pýta menného servera domény example.com. Ten je pre túto doménu autoritatívny a dáva odpoveď: "www.example.com má záznam A 192.0.2.10."
- Resolver odovzdá odpoveď vášmu počítaču. Váš prehliadač sa pripojí na 192.0.2.10.
Odkaz z vyššej úrovne na menné servery nižšej úrovne sa nazýva delegácia. Root deleguje .com spoločnosti Verisign, .com deleguje example.com menným serverom, ktoré uviedol držiteľ domény. Pri doméne .nl to prebieha úplne rovnako, len root odkazuje na menné servery .nl (SIDN, napríklad ns1.dns.nl). Sami to uvidíte v úlohe na konci tejto lekcie. Preto je také dôležité, aby menné servery v registri súhlasili so skutočnosťou (lekcia 2.1).
Cache: nie vždy celá cesta odznova
Keby každý resolver pri každej otázke začínal od rootservera, dostal by root neuveriteľné množstvo otázok. To sa nestáva, pretože resolver si odpovede istý čas pamätá. Táto pamäť sa nazýva cache.
Ako dlho sa odpoveď môže pamätať, je uvedené priamo v odpovedi: v hodnote TTL (time to live), v sekundách. TTL 3600 znamená: táto odpoveď sa môže pamätať jednu hodinu. Pamätajú sa aj odkazy (delegácie). Resolver, ktorý práve zistil, aké menné servery má .com, sa to nabudúce nemusí znova pýtať rootservera.
Ak sa niekto iný u toho istého poskytovateľa opýta o minútu neskôr na www.example.com, resolver odpovie okamžite z cache. Žiadna cesta, žiadne čakanie.
Cache sa nachádza na viacerých miestach:
- v resolveri vášho poskytovateľa alebo vo verejnom resolveri, ktorý používate;
- vo vašom operačnom systéme (Windows, macOS, váš telefón);
- vo vašom prehliadači;
- niekedy vo vašom routeri.
Je to rýchle a efektívne, no má to dôsledok, s ktorým sa neskôr často stretnete: keď zmeníte záznam, cache budú ešte poskytovať starú odpoveď, kým neuplynie ich TTL. Preto niekto zmenu už vidí a iný ešte nie. Modul 6 sa tejto téme venuje podrobne.
Rootservery
Existuje 13 názvov rootserverov: a.root-servers.net až m.root-servers.net. Spravuje ich dvanásť rôznych organizácií. Za každým názvom stojí po celom svete veľa serverov, na stovkách miest, ktoré zdieľajú rovnakú adresu (to sa nazýva anycast). Váš resolver sa automaticky dostane k najbližšiemu z nich. Rovnako fungujú aj TLD menné servery, napríklad pre .com a .nl. Vďaka tomu je DNS rýchly a funguje aj vtedy, keď niekde vypadne server.
Kde môže nastať problém
Keď poznáte priebeh cesty, ľahšie zaradíte problém:
- Delegácia nesedí. V registri sú uvedené menné servery, ktoré doménu (už) nepoznajú. Resolver sa potom pri kroku 4 nedostane ďalej. Odpoveďou je chyba, alebo žiadna odpoveď.
- Autoritatívny server dáva inú odpoveď, než ste čakali. Záznam ste zmenili na inom mieste, než kde sú menné servery (lekcia 2.1).
- Cache má ešte starú odpoveď. Vtedy nie je nič pokazené. Musíte počkať, kým uplynie TTL, alebo vymazať vlastnú cache.
- DNSSEC nesedí. Validujúci resolver kontroluje po ceste podpisy. Ak reťazec nesedí, odpoveď odmietne (lekcia 8.1).
Pomocou nástroja dig +trace si môžete cestu sami overiť, od rootservera až po autoritatívny server. To sa naučíte v lekcii 8.2. Dokážu to aj online nástroje.
Zhrnutie
- Autoritatívne menné servery poznajú odpoveď pre svoju vlastnú doménu; resolvery zisťujú odpoveď za vás.
- Resolver začína pri rootserveri, dostane odkaz na TLD, potom na menné servery domény, a tam dostane odpoveď.
- Takýto odkaz sa nazýva delegácia.
- Odpovede sa pamätajú v cache, tak dlho, ako určuje TTL; preto zmeny nie sú všade viditeľné okamžite.
- Existuje 13 názvov rootserverov, no vďaka anycastu za nimi stojí po celom svete veľa serverov.
Kvíz
Úloha
Úloha Z1.4: Sledovanie cesty. Sledujte cestu pre www.sidn.nl pomocou dig +trace www.sidn.nl alebo online nástroja, ktorý zobrazuje trace. Doplňte: (1) jeden menný server nl., na ktorý po ceste narazíte, (2) jeden autoritatívny menný server domény sidn.nl.
Ďalšie čítanie
Tieto články popisujú situáciu u WebOké. U iných poskytovateľov to funguje podobne.
