Modul 6 · 6.1
TTL a cache
Modul 6: Čas, cache a převod domény · Doba čtení: 7 min
Cíl lekce: Po této lekci dokážete vysvětlit, co je TTL záznamu, jak jej cache využívají a jakou hodnotu TTL zvolit v jaké situaci.
Klíčové pojmy: TTL (Time To Live), cache, cache resolveru, cache Vašeho počítače a prohlížeče, ubíhající TTL, typické hodnoty TTL (300, 3600, 86400)
Proč si DNS pamatuje
V lekci 1.4 jste viděli, jak resolver vyhledává odpověď: nejprve u kořenového serveru, pak u serveru TLD a nakonec u autoritativního jmenného serveru domény. Kdyby se to muselo opakovat při každém kliknutí na web, internet by byl výrazně pomalejší a jmenné servery by se hroutily pod náporem dotazů.
Proto si resolvery každou odpověď na nějakou dobu pamatují. Této paměti se říká cache. Pokud se na stejný název zeptá někdo jiný, resolver odpoví rovnou ze své cache, bez nutnosti celou cestu zopakovat.
Otázka zní: jak dlouho smí resolver odpověď pamatovat? To určuje vlastník domény pomocí TTL každého záznamu.
Co je TTL
TTL znamená Time To Live: dobu, po kterou smí záznam zůstat v cache, v sekundách. Každý záznam má svou vlastní TTL. V zóně to vypadá takto:
example.com. 3600 IN A 192.0.2.10
www.example.com. 3600 IN A 192.0.2.10
example.com. 3600 IN MX 10 mail.example.com.
_dmarc.example.com. 14400 IN TXT "v=DMARC1; p=quarantine"Číslo za názvem je TTL. Zde smí být záznamy A a MX uchovány hodinu (3600 sekund) a záznam DMARC čtyři hodiny (14400 sekund).
Běžné hodnoty:
| TTL | Je | Kdy ji použít? |
|---|---|---|
| 300 | 5 minut | Těsně před a během převodu, nebo pokud často měníte hodnoty |
| 3600 | 1 hodina | Dobrý standard pro většinu záznamů |
| 14400 | 4 hodiny | Záznamy, které se mění jen zřídka |
| 86400 | 1 den | Záznamy, které se mění téměř nikdy, jako jsou záznamy NS |
TTL je číslo mezi 0 a 2 147 483 647 sekundami (2^31 - 1, jak uvádí RFC 2181). V praxi se jen zřídka setkáte s hodnotou vyšší než den nebo dva. Mnoho resolverů navíc uplatňuje vlastní maximum, často den nebo týden.
Odpočítávání
TTL není pevné hodiny platné pro celý svět. Každý resolver začíná počítat až od okamžiku, kdy si záznam vyžádá.
Příklad. Záznam A domény example.com má TTL 3600.
- V 10:00 si resolver poskytovatele A vyžádá záznam. Dostane
192.0.2.10a smí si jej pamatovat do 11:00. - V 10:40 si jej vyžádá resolver poskytovatele B. Ten si jej pamatuje do 11:40.
- V 10:45 změníte záznam na
198.51.100.10. - Uživatelé poskytovatele A uvidí novou adresu od 11:00, uživatelé poskytovatele B až od 11:40.
Pokud si záznam vyžádáte u resolveru, který jej už má v cache, uvidíte ve výstupu TTL, která postupně klesá. U autoritativního jmenného serveru vždy uvidíte plnou hodnotu:
; u autoritativního jmenného serveru
example.com. 3600 IN A 192.0.2.10
; u resolveru, o 25 minut později
example.com. 2100 IN A 192.0.2.10To se hodí vědět: pokud u svého resolveru vidíte hodnotu 2100 sekund, znamená to, že ještě 35 minut bude poskytovat starou odpověď.
Kdo všechno si pamatuje
Cache nemá jen resolver Vašeho poskytovatele internetu. Existuje více vrstev:
- Resolver Vašeho poskytovatele, firemní sítě nebo veřejný resolver (například 1.1.1.1, 8.8.8.8 nebo 9.9.9.9).
- Váš router doma nebo v kanceláři, který často sám funguje jako malý resolver.
- Operační systém Vašeho počítače nebo telefonu.
- Váš prohlížeč, který si DNS odpovědi někdy také na chvíli ukládá.
Každá vrstva se v zásadě řídí TTL, ale ne každá to dělá úplně přesně. Proto to u Vás na notebooku může trvat o něco déle než u kolegy. Jak tyto cache vymazat, se dočtete v lekci 6.2.
Jak zvolit správnou TTL
Krátká TTL se zdá praktická: změny jsou pak rychle vidět všude. Má to ale nevýhodu. Resolvery pak musí záznam mnohem častěji znovu dotazovat. To o kousek zpomalí první načtení Vašeho webu, a pokud jsou Vaše jmenné servery chvíli nedostupné, Vaše doména bude nedostupná rychleji. S TTL jedné hodiny dokážou resolvery krátký výpadek jmenného serveru překlenout pomocí své cache.
Několik základních pravidel:
- Standard: 3600 sekund. To je dobrá rovnováha.
- Pro plánovanou změnu: dočasně 300. Snižte TTL minimálně o jednu starou TTL dříve, než ke změně dojde. Pokud bylo nastaveno 3600, udělejte to minimálně hodinu předem, bezpečněji den předem. Pokud bylo nastaveno 86400, udělejte to minimálně den předem. Po změně TTL vraťte zpět. Jak na to při převodu domény, se dočtete v lekci 6.3.
- Hodnota nižší než 60 sekund nemá velký smysl. Některé resolvery velmi krátké TTL ignorují a uplatňují vlastní minimum.
- Snížení TTL začne fungovat až po uplynutí staré TTL. Pokud snížíte TTL z 86400 na 300 a hned poté změníte adresu, resolvery, které si záznam právě stáhly, budou mít starou hodnotu ještě celý den.
Tento poslední bod je nejčastější chybou při práci s TTL. Nová, krátká TTL se musí nejprve sama dostat do všech cache.
V praxi: jak to vypadá v panelu
Ve vzorovém panelu DirectAdmin je TTL samostatný sloupec v sekci DNS. TTL jednoho záznamu změníte ikonou tužky u daného záznamu. Tlačítkem TTL WAARDE OVERSCHRIJVEN nastavíte jednu TTL pro všechny záznamy domény najednou. V Můj WebOké vidíte TTL v seznamu záznamů na záložce DNS a vybíráte ji v okně, kde záznam přidáváte nebo upravujete.
Ostatní panely fungují obdobně: u cPanelu, Plesku, Cloudflare i u většiny registrátorů se pole také jmenuje TTL. Někdy vybíráte z nabídky (například "5 minut", "1 hodina", "Auto") místo zadávání čísla v sekundách. U Cloudflare znamená "Auto" u záznamů bez proxy 300 sekund.
Shrnutí
- TTL určuje, kolik sekund smí DNS odpověď zůstat v cache.
- Každý resolver počítá od okamžiku, kdy si záznam vyžádal; proto změnu nevidí všichni ve stejnou chvíli.
- U autoritativního jmenného serveru vidíte plnou TTL, u resolveru ubývající hodnotu.
- 3600 je dobrý standard; před plánovanou změnou dočasně snižte na 300, a to minimálně o jednu starou TTL dříve.
Kvíz
Úkol
Úkol Z6.1: TTL u zdroje a u resolveru. Pomocí online nástroje DNS nebo pomocí dig zjistěte TTL záznamu A domény sidn.nl (webu SIDN, registru domény .nl v Nizozemsku), přímo u jednoho z jmenných serverů domény sidn.nl (například ns1.sidn.nl). Zadejte TTL v sekundách. Poté si vyžádejte stejný záznam u veřejného resolveru a vyplňte i tuto TTL. Jednou větou vysvětlete, proč se obě čísla mohou lišit.
dig A sidn.nl @ns1.sidn.nl
dig A sidn.nl @9.9.9.9Úkol O6.1: Nastavení ve vlastní cvičné zóně. Ve Vaší cvičné zóně už existuje záznam A <code>.dnspractice.euttl-test., který ukazuje na <code>.dnspractice.eu192.0.2.61, s TTL 300 sekund. Snižte TTL na 60 sekund, jak byste to udělali před převodem domény, a adresu ponechte beze změny. Poté pomocí dig u jmenného serveru cvičné zóny zkontrolujte, zda je nastavena nová TTL. Odevzdejte, jakmile je TTL 60.
Cvičná zóna používá krátké TTL (mezi 30 a 300 sekundami), abyste nemuseli čekat; u své skutečné domény použijete například 3600 jako standard a 300 těsně před změnou.
Úkol O6.1
Tento úkol vypracujete ve své vlastní cvičné zóně: skutečné DNS zóně na jmenných serverech WebOké, určené pouze pro Vás. Přihlaste se svou e-mailovou adresou. Odkaz pro přihlášení obdržíte e-mailem a poté se vrátíte zpět na tuto lekci. Vaši adresu používáme pouze pro potřeby kurzu.
Doporučené čtení
Kroky v těchto článcích se týkají panelů WebOké; v jiných panelech je postup obdobný.
