
Zmenili ste IP adresu webu a hosting vám odpíše: „Počkajte až 48 hodín na propagáciu DNS.“ Niekto vidí nový web hneď, kolega v práci ešte starý. Nejde o poruchu. Ide o vyrovnávaciu pamäť a jedno číslo, ktoré máte pod kontrolou: TTL.
DNS sa nešíri, ale ukladá do cache
Keď prehliadač potrebuje IP adresu domény, opýta sa rekurzívneho resolvera (zvyčajne od poskytovateľa internetu alebo verejného, napríklad 1.1.1.1). Resolver odpoveď zistí od autoritatívneho servera domény a uloží si ju, aby sa nemusel pýtať pri každej návšteve.
Ako dlho si ju smie pamätať, určuje TTL (time to live). Podľa Cloudflare je to v DNS číselná hodnota, ktorá určuje, ako dlho môže DNS cache server poskytovať záznam, kým sa obráti na autoritatívny server po novú kópiu. Udáva sa v sekundách (RFC 1035 ho definuje ako 32-bitové číslo v sekundách).
„Propagácia“ teda znamená len to, že rôzne resolvery na svete si starý záznam uložili v rôznych chvíľach a každému vyprší inokedy. Nikto zmenu aktívne nerozosiela.
Počítame: koľko najdlhšie môže zmena trvať
Záznam A má TTL 86 400 sekúnd. To je 86 400 / 3 600 = 24 hodín. Ak si resolver záznam uložil minútu pred zmenou, môže starú adresu vracať ešte takmer celý deň.
Ten istý záznam s TTL 300 sekúnd: 300 / 60 = 5 minút. Najneskôr po piatich minútach sa resolver opýta znova a dostane novú adresu.
Prečo teda nemať TTL stále nízke? Každý dopyt navyše zaťažuje autoritatívne servery a návštevníkovi môže pridať čas na vyhľadanie. Pre bežnú prevádzku sa preto používajú hodnoty v hodinách a nízke TTL sa nastavuje dočasne pred plánovanou zmenou.
Postup: zmena bez dlhého čakania
- Zistite aktuálne TTL záznamu, ktorý budete meniť.
- Znížte ho napríklad na 300 sekúnd – aspoň toľko času vopred, koľko je pôvodné TTL. Ak bolo 24 hodín, znižujte deň dopredu, inak si resolvery stále pamätajú starú hodnotu aj so starým TTL.
- Urobte zmenu (napríklad novú IP adresu).
- Overte ju, napríklad príkazom
dig example.sk Aalebonslookup example.sk, a to aj proti rôznym verejným resolverom. - Po overení vráťte TTL na bežnú hodnotu.
Výnimka: zmena menných serverov
Ak meníte menné servery (NS) u registrátora, napríklad pri presune DNS ku Cloudflare, rozhoduje aj TTL delegácie, ktoré nastavuje register danej koncovky. To ovplyvniť nemôžete. Preto pri zmene NS rátajte s dlhším prechodom a obe zóny (starú aj novú) majte počas neho nastavené rovnako.
Kedy na TTL narazíte
- Pri presune webu na iný hosting alebo zmene IP adresy servera.
- Pri zapínaní CDN alebo e-mailovej služby.
- Keď vám web „funguje doma, ale nie v práci“ – každá sieť môže používať iný resolver s inou uloženou hodnotou.
Čo pri zmenách DNS najčastejšie pokazíme
- Znížiť TTL až v momente zmeny. Na už uložené záznamy to nemá vplyv.
- Zrušiť starý server hneď po zmene DNS. Nechajte ho bežať aspoň po dobu pôvodného TTL.
- Testovať len vo vlastnom prehliadači. Aj prehliadač a operačný systém majú vlastnú DNS cache.
- Zabudnúť vrátiť TTL na vyššiu hodnotu.
Tri príklady na overenie
- Záznam má TTL 7 200 s. Koľko hodín najdlhšie môže resolver vracať starú hodnotu? (Riešenie: 2 hodiny.)
- Pôvodné TTL je 43 200 s. Najneskôr kedy pred zmenou ho treba znížiť? (Riešenie: aspoň 12 hodín vopred.)
- Prečo kolega vidí starý web, hoci vy už nový? (Riešenie: jeho resolver má ešte uloženú starú odpoveď, ktorej TTL nevypršalo.)
Záver
„48 hodín“ je bezpečná rezerva, nie zákon prírody. S plánovaným TTL sa dá väčšina zmien zvládnuť za minúty. Ako celý dotaz putuje od koreňových serverov až po autoritatívny, vysvetľuje článok Ako funguje DNS ; jednotlivé typy záznamov opisujeme v článku DNS záznamy A, AAAA, CNAME, MX a TXT .