Co je TTL a proč se změna DNS projeví až za několik hodin?
Jak DNS dotazy procházejí přes cache resolverů, co znamená hodnota TTL, jak sledovat propagaci pomocí nslookup a dig a jak vymazat DNS cache v počítači.
4 minuty čtení 8 kroků
Obsah návodu
Změnili jste DNS záznamy, ale web se stále otevírá ze starého serveru nebo pošta chodí na starou adresu. Není to chyba – DNS záznamy se do celého internetu nešíří okamžitě. Jak dlouho to trvá, určuje hodnota TTL (Time To Live) každého záznamu.
Jak DNS funguje
Když zadáte do prohlížeče adresu www.vasedomena.cz, počítač se musí dozvědět, na jaké IP adrese web běží. Dotaz projde několika úrovněmi:
- Počítač se nejprve podívá do vlastní paměti (cache) a do souboru hosts.
- Pokud odpověď nezná, zeptá se resolveru – DNS serveru vašeho poskytovatele internetu, případně veřejného resolveru (například Google 8.8.8.8 nebo Cloudflare 1.1.1.1).
- Resolver se zeptá autoritativních DNS serverů domény (u domén směrovaných na Datahost jsou to ns.datahost.cz a ns2.datahost.cz). Ty mají vždy aktuální hodnotu.
- Resolver odpověď vrátí a zároveň si ji uloží do cache, aby se při dalším dotazu nemusel ptát znovu.
Co je TTL
TTL je číslo v sekundách, které autoritativní server posílá spolu s každým záznamem. Říká resolverům i počítačům: „Tuto odpověď si smíte pamatovat tak dlouho.“ Dokud TTL nevyprší, resolver vrací starou hodnotu z cache a na autoritativní server se vůbec neptá.
| TTL | Odpovídá | Typické použití |
|---|---|---|
| 300 | 5 minut | krátce před plánovanou změnou |
| 3600 | 1 hodina | běžná hodnota |
| 86400 | 24 hodin | záznamy, které se nemění (často NS a MX) |
Době, než všechny resolvery na světě starou hodnotu zapomenou, se říká propagace DNS. Nejde o postupné šíření, ale o vypršení cache na tisících různých míst – proto se změna někomu projeví hned a jinému až za několik hodin. Při změně DNS serverů domény (u domén .cz změna NSSET) se navíc čeká na obnovu zóny v registru, typicky v řádu hodin.
Jak sledovat, kde se změna už projevila
Online nástroj dnschecker.org zobrazí, jakou hodnotu vracejí resolvery v různých zemích. Na vlastním počítači použijte příkazový řádek:
nslookup vasedomena.cz
nslookup -type=MX vasedomena.cz
nslookup vasedomena.cz 8.8.8.8
Třetí příkaz se ptá přímo veřejného resolveru Google, nikoli vašeho poskytovatele. Na macOS a Linuxu je přehlednější příkaz dig:
dig vasedomena.cz A +noall +answer
dig @ns.datahost.cz vasedomena.cz A +noall +answer
Druhé číslo ve výsledku (například vasedomena.cz. 2874 IN A 1.2.3.4) je zbývající TTL v sekundách. Dotaz přímo na autoritativní server (druhý příkaz) ukáže novou hodnotu okamžitě – tím si ověříte, že změna byla provedena správně, i když ji ostatní resolvery ještě nevidí.
Jak zkrátit TTL před plánovanou změnou
- Alespoň jeden až dva dny před změnou (přesun webu, změna MX) nechte snížit TTL dotčených záznamů například na 300 sekund. Změnu DNS u Datahostu provádí podpora podle návodu Jak změnit DNS záznamy?.
- Počkejte, než vyprší původní TTL – resolvery si musí nejdřív stáhnout záznam s krátkým TTL.
- Proveďte samotnou změnu. Většina resolverů ji převezme do pěti minut.
- Po ověření, že vše funguje, nechte TTL vrátit na běžnou hodnotu.
Vyprázdnění DNS cache v počítači
Pokud kolegové změnu už vidí a vy ne, často stačí vyprázdnit cache vlastního počítače:
- Windows: otevřete Příkazový řádek a spusťte
ipconfig /flushdns. - macOS: v Terminálu spusťte
sudo dscacheutil -flushcache; sudo killall -HUP mDNSRespondera zadejte heslo k počítači. - Linux (systemd):
sudo resolvectl flush-caches. - Prohlížeč: Chrome má vlastní cache na adrese
chrome://net-internals/#dns(tlačítko Clear host cache). Nejjednodušší je prohlížeč zavřít a znovu otevřít.
Řešení problémů
- Uplynulo více než 48 hodin a změna se neprojevila. Pravděpodobně byla provedena na jiném místě, než kde doména skutečně DNS záznamy má. Ověřte to podle návodu Jak zjistím, kde má doména DNS záznamy?.
- Doména přestala fungovat úplně. Postupujte podle návodu Co dělat, když mi přestala fungovat doména?.
- Router doma nebo ve firmě má vlastní cache. Pomůže jeho restart nebo dočasné nastavení veřejného resolveru (8.8.8.8) v počítači.