Modul 1 · 1.4
Cesta DNS dotazu
Modul 1: Co je DNS? · Doba čtení: 8 min
Cíl lekce: Po této lekci dokážete krok za krokem vysvětlit, jak resolver najde odpověď, a kde se odpovědi cestou ukládají do paměti.
Klíčové pojmy: resolver (rekurzivní), kořenový server, server TLD, autoritativní jmenný server, odkaz (delegace), cache
Dva druhy DNS serverů
V lekci 1.1 jste viděli, že DNS je rozdělený: nikdo neví všechno. Jak se tedy Váš prohlížeč dostane k adrese www.example.com? Spolupracují na tom dva druhy serverů:
- Autoritativní jmenné servery (anglicky authoritative) znají odpověď pro svou vlastní část. Jmenné servery domény
example.comznají záznamy doményexample.com. Pro nikoho jiného nic nevyhledávají. - Resolvery (také rekurzivní resolvery) hledají odpověď za Vás. Ptají se tak dlouho, dokud ji nezískají. Váš poskytovatel internetu má resolver a existují i veřejné resolvery, například od Quad9, Cloudflare nebo Google.
Váš počítač sám téměř nic nevyhledává. Má malý stub resolver, který předá dotaz resolveru Vaší sítě a dostane zpět odpověď.
Cesta krok za krokem
Řekněme, že resolver si zatím nic nepamatuje a Vy žádáte o záznam A pro www.example.com.
- Váš počítač se zeptá resolveru: "Jaký je záznam A pro www.example.com?"
- Resolver se zeptá kořenového serveru. Každý resolver má zabudovaný seznam adres kořenových serverů. Kořenový server nic neví o
example.com, ale ví, kdo spravuje.com. Odpoví odkazem: "To musíte zjistit u jmenných serverů pro com: a.gtld-servers.net, b.gtld-servers.net a tak dále." - Resolver se zeptá jmenného serveru domény .com. Ten také nezná IP adresu
www.example.com, ale ví, které jmenné servery máexample.com. Opět odkaz: "Zeptejte se na ns1.hosting.example nebo ns2.hosting.example." - Resolver se zeptá jmenného serveru domény example.com. Ten je pro tuto doménu autoritativní a dá odpověď: "www.example.com má záznam A 192.0.2.10."
- Resolver předá odpověď Vašemu počítači. Váš prohlížeč naváže spojení s 192.0.2.10.
Odkaz z vyšší úrovně na jmenné servery nižší úrovně se nazývá delegace. Root deleguje .com na Verisign, .com deleguje example.com na jmenné servery, které zadal držitel domény. U domény .nl to funguje úplně stejně, jen root odkazuje na jmenné servery .nl (SIDN, například ns1.dns.nl). To uvidíte sami v úkolu na konci této lekce. Proto je tak důležité, aby jmenné servery u registru souhlasily (lekce 2.1).
Cache: ne pokaždé celou cestu
Kdyby resolver při každém dotazu začínal znovu u rootu, dostával by root nepředstavitelné množství dotazů. To se neděje, protože resolver si odpovědi na chvíli pamatuje. Tato paměť se nazývá cache.
Jak dlouho se odpověď smí pamatovat, je uvedeno přímo v odpovědi: TTL (time to live), v sekundách. TTL 3600 znamená: tuto odpověď lze pamatovat hodinu. Pamatují se i odkazy. Resolver, který se právě dozvěděl, jaké jmenné servery má .com, se na to příště nemusí znovu ptát rootu.
Pokud se o minutu později zeptá na www.example.com někdo jiný u stejného poskytovatele, resolver odpoví rovnou ze své cache. Žádná cesta, žádné čekání.
Cache se nachází na více místech:
- v resolveru Vašeho poskytovatele nebo veřejného resolveru, který používáte;
- ve Vašem operačním systému (Windows, macOS, Váš telefon);
- ve Vašem prohlížeči;
- někdy ve Vašem routeru.
To je rychlé a efektivní, ale má to důsledek, se kterým se později často setkáte: pokud změníte záznam, cache budou ještě chvíli vracet starou odpověď, dokud neuplyne jejich TTL. Proto jeden uživatel změnu už vidí a druhý ještě ne. Podrobně se tomu věnuje modul 6.
Kořenové servery
Existuje 13 názvů kořenových serverů: a.root-servers.net až m.root-servers.net. Spravuje je dvanáct různých organizací. Za každým názvem stojí po celém světě mnoho serverů na stovkách míst, které sdílejí stejnou adresu (tomu se říká anycast). Váš resolver se automaticky dostane k tomu nejbližšímu. Stejně tak fungují i jmenné servery TLD, například pro .com a .nl. Díky tomu je DNS rychlý a funguje dál, i když někde server vypadne.
Kde může nastat problém
Když znáte cestu, dokážete problémy lépe zařadit:
- Delegace nesouhlasí. U registru jsou uvedené jmenné servery, které doménu (už) neznají. Resolver se pak v kroku 4 nedostane dál. Odpovědí je chyba, nebo nepřijde odpověď vůbec.
- Autoritativní server má jinou odpověď, než čekáte. Záznam jste pak změnili na jiném místě, než kde jsou jmenné servery (lekce 2.1).
- Cache má ještě starou odpověď. Pak nic není rozbité. Musíte počkat, až uplyne TTL, nebo si vyprázdnit vlastní cache.
- DNSSEC nesouhlasí. Validující resolver cestou kontroluje podpisy. Pokud řetězec nesouhlasí, odpověď odmítne (lekce 8.1).
Pomocí nástroje dig +trace si můžete celou cestu sami zopakovat, od rootu až po autoritativní server. To se naučíte v lekci 8.2. Umí to i online nástroje.
Shrnutí
- Autoritativní jmenné servery znají odpověď pro svou vlastní doménu; resolvery za Vás odpověď vyhledávají.
- Resolver začíná u rootu, dostane odkaz na TLD, pak na jmenné servery domény, a tam získá odpověď.
- Takovému odkazu se říká delegace.
- Odpovědi se pamatují v cache, a to tak dlouho, jak udává TTL; proto nejsou změny všude vidět okamžitě.
- Existuje 13 názvů kořenových serverů, ale díky anycastu za nimi stojí celosvětově mnoho serverů.
Kvíz
Úkol
Úkol Z1.4: Sledování cesty. Sledujte cestu pro www.sidn.nl (webové stránky SIDN, registru domény .nl v Nizozemsku) pomocí dig +trace www.sidn.nl nebo online nástroje, který zobrazí trasování. Vyplňte: (1) jeden jmenný server domény nl., se kterým se cestou setkáte, (2) jeden autoritativní jmenný server domény sidn.nl.
Doporučené další čtení
Tyto články popisují situaci u WebOké. U jiných poskytovatelů to funguje podobně.
