Module 6 · 6.1
TTL en cache
Module 6: Tijd, cache en verhuizen · Leestijd: 7 minuten
Leerdoel: Na deze les kun je uitleggen wat de TTL van een record is, hoe caches die gebruiken en welke TTL je in welke situatie kiest.
Kernbegrippen: TTL (Time To Live), cache, resolvercache, cache van je computer en browser, aflopende TTL, typische TTL-waarden (300, 3600, 86400)
---
Waarom DNS onthoudt
In les 1.4 zag je hoe een resolver een antwoord opzoekt: eerst bij een rootserver, dan bij de TLD-server en ten slotte bij de gezaghebbende nameserver van het domein. Als dat bij elke klik op een website opnieuw moest gebeuren, zou internet een stuk trager zijn en zouden nameservers onder alle vragen bezwijken.
Daarom onthouden resolvers elk antwoord een tijdje. Dat geheugen heet de cache. Vraagt iemand anders dezelfde naam op, dan geeft de resolver meteen het antwoord uit zijn cache, zonder de hele reis te maken.
De vraag is dan: hoe lang mag de resolver een antwoord onthouden? Dat bepaalt de eigenaar van het domein, met de TTL van elk record.
Wat de TTL is
TTL staat voor Time To Live: de tijd dat een record in een cache mag blijven, in seconden. Elk record heeft een eigen TTL. In een zone ziet dat er zo uit:
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"Het getal na de naam is de TTL. Hier mogen de A- en MX-records een uur onthouden worden (3600 seconden) en het DMARC-record vier uur (14400 seconden).
Gangbare waarden:
| TTL | Is | Wanneer gebruik je het? |
|---|---|---|
| 300 | 5 minuten | Vlak voor en tijdens een verhuizing, of als je vaak wisselt |
| 3600 | 1 uur | Een goede standaard voor de meeste records |
| 14400 | 4 uur | Records die zelden veranderen |
| 86400 | 1 dag | Records die bijna nooit veranderen, zoals NS-records |
De TTL is een getal tussen 0 en 2.147.483.647 seconden (2^31 - 1, zo staat het in RFC 2181). In de praktijk kom je zelden iets boven een dag of twee tegen. Veel resolvers hanteren ook een eigen maximum, vaak een dag of een week.
Het aftellen
De TTL is geen vaste klok voor de hele wereld. Elke resolver begint pas te tellen op het moment dat hij het record ophaalt.
Een voorbeeld. Het A-record van example.com heeft TTL 3600.
- Om 10:00 vraagt de resolver van provider A het record op. Hij krijgt
192.0.2.10en mag dat onthouden tot 11:00. - Om 10:40 vraagt de resolver van provider B het op. Die onthoudt het tot 11:40.
- Om 10:45 wijzig je het record naar
198.51.100.10. - Gebruikers van provider A zien het nieuwe adres vanaf 11:00, gebruikers van provider B pas vanaf 11:40.
Vraag je het record op bij een resolver die het al in zijn cache heeft, dan zie je in de uitvoer een TTL die steeds lager wordt. Bij de gezaghebbende nameserver zie je altijd de volle waarde:
; bij de gezaghebbende nameserver
example.com. 3600 IN A 192.0.2.10
; bij een resolver, 25 minuten later
example.com. 2100 IN A 192.0.2.10Dat is handig om te weten: zie je bij jouw resolver nog 2100 seconden staan, dan geeft hij nog 35 minuten het oude antwoord.
Wie onthoudt er allemaal?
Niet alleen de resolver van je internetprovider heeft een cache. Er zijn meer lagen:
- De resolver van je provider, je bedrijfsnetwerk of een publieke resolver (bijvoorbeeld 1.1.1.1, 8.8.8.8 of 9.9.9.9).
- Je router thuis of op kantoor, die vaak zelf als kleine resolver werkt.
- Het besturingssysteem van je computer of telefoon.
- Je browser, die DNS-antwoorden soms ook nog even bewaart.
Elke laag houdt zich in principe aan de TTL, maar niet elke laag doet dat precies. Daarom kan het bij jou op je laptop net iets langer duren dan bij je collega. Hoe je die caches leegt, lees je in les 6.2.
De juiste TTL kiezen
Een korte TTL lijkt handig: wijzigingen zijn dan snel overal zichtbaar. Maar er zit een nadeel aan. Resolvers moeten het record dan veel vaker opnieuw opvragen. Dat maakt de eerste keer laden van je site een fractie trager, en als je nameservers even niet bereikbaar zijn, is je domein sneller onbereikbaar. Met een TTL van een uur kunnen resolvers een korte storing bij de nameserver overbruggen met hun cache.
Een paar vuistregels:
- Standaard: 3600 seconden. Dat is een goede balans.
- Voor een geplande wijziging: tijdelijk 300. Verlaag de TTL minstens één oude TTL vóór de wijziging. Stond er 3600, dan doe je dat minstens een uur van tevoren, veiliger nog een dag. Stond er 86400, dan minstens een dag. Na de wijziging zet je hem terug. Hoe je dat bij een verhuizing aanpakt, lees je in les 6.3.
- Lager dan 60 seconden heeft weinig zin. Sommige resolvers negeren zeer korte TTL's en hanteren een eigen minimum.
- Een TTL verlagen werkt pas als de oude TTL verstreken is. Verlaag je de TTL van 86400 naar 300 en wijzig je meteen daarna het adres, dan hebben resolvers die het record net hadden opgehaald, de oude waarde nog een hele dag.
Dat laatste punt is de meest gemaakte fout met TTL's. De nieuwe, korte TTL moet eerst zelf in alle caches terechtkomen.
In de praktijk: zo ziet het eruit in een paneel
In het voorbeeldpaneel DirectAdmin staat de TTL als aparte kolom in DNS Beheer. Je wijzigt de TTL van één record met het potlood achter dat record. Met de knop TTL WAARDE OVERSCHRIJVEN zet je één TTL voor alle records van het domein tegelijk. In Mijn WebOké zie je de TTL in de recordlijst op het tabblad DNS en kies je hem in het venster waarin je een record toevoegt of bewerkt.
Andere panelen werken vergelijkbaar: bij cPanel, Plesk, Cloudflare en de meeste registrars heet het veld ook TTL. Soms kies je uit een lijstje (bijvoorbeeld "5 minuten", "1 uur", "Auto") in plaats van een getal in seconden te typen. Bij Cloudflare betekent "Auto" voor records zonder proxy 300 seconden.
Samenvatting
- De TTL bepaalt hoeveel seconden een DNS-antwoord in een cache mag blijven.
- Elke resolver telt vanaf het moment dat hij het record ophaalde; daarom ziet niet iedereen een wijziging tegelijk.
- Bij de gezaghebbende nameserver zie je de volle TTL, bij een resolver een aflopende waarde.
- 3600 is een goede standaard; verlaag tijdelijk naar 300 vóór een geplande wijziging, en wel minstens één oude TTL van tevoren.
Quiz
Opdracht
Z6.1 (opzoeken). Zoek met een online DNS-tool of met dig de TTL van het A-record van sidn.nl op, rechtstreeks bij een van de nameservers van sidn.nl zelf (bijvoorbeeld ns1.sidn.nl). Vul de TTL in seconden in. Vraag daarna hetzelfde record op bij een publieke resolver en vul ook die TTL in. Leg in één zin uit waarom de twee getallen kunnen verschillen.
dig A sidn.nl @ns1.sidn.nl
dig A sidn.nl @9.9.9.9O6.1 (zelf instellen). In je oefenzone staat al een A-record <code>.dnspractice.euttl-test. dat wijst naar <code>.dnspractice.eu192.0.2.61, met een TTL van 300 seconden. Verlaag de TTL naar 60 seconden, zoals je vóór een verhuizing zou doen, en laat het adres ongewijzigd. Kijk daarna met dig bij de nameserver van de oefenzone of de nieuwe TTL er staat. Lever in als de TTL 60 is.
De oefenzone gebruikt korte TTL's (tussen 30 en 300 seconden), zodat je niet hoeft te wachten; bij je echte domein gebruik je bijvoorbeeld 3600 als standaard en 300 vlak voor een wijziging.1 en O6.1.
Verder lezen
De stappen in deze artikelen gaan over de panelen van WebOké; in andere panelen werkt het vergelijkbaar.
