Modul 6 · 6.1
TTL och cache
Modul 6: Tid, cache och flytt · Lästid: 7 minuter
Lärandemål: Efter den här lektionen kan du förklara vad TTL för en post är, hur cachar använder den och vilken TTL du väljer i vilken situation.
Nyckelbegrepp: TTL (Time To Live), cache, resolvercache, cache i din dator och webbläsare, avräknande TTL, typiska TTL-värden (300, 3600, 86400)
Varför DNS kommer ihåg
I lektion 1.4 såg du hur en resolver letar upp ett svar: först hos en rootserver, sedan hos TLD-servern och till sist hos domänens auktoritativa namnserver. Om det skulle behöva göras om vid varje klick på en webbplats skulle internet vara betydligt långsammare, och namnservrarna skulle gå under av alla frågor.
Därför kommer resolvrar ihåg varje svar ett tag. Det minnet kallas cache. Frågar någon annan efter samma namn ger resolvern genast svaret från sin cache, utan att göra hela resan.
Frågan är då: hur länge får resolvern komma ihåg ett svar? Det bestämmer domänens ägare, med TTL för varje post.
Vad TTL är
TTL står för Time To Live: tiden en post får finnas kvar i en cache, i sekunder. Varje post har sin egen TTL. I en zon ser det ut så här:
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"Siffran efter namnet är TTL. Här får A-posten och MX-posten kommas ihåg i en timme (3600 sekunder) och DMARC-posten i fyra timmar (14400 sekunder).
Vanliga värden:
| TTL | Är | När använder du det? |
|---|---|---|
| 300 | 5 minuter | Strax före och under en flytt, eller om du ändrar ofta |
| 3600 | 1 timme | En bra standard för de flesta poster |
| 14400 | 4 timmar | Poster som sällan ändras |
| 86400 | 1 dag | Poster som nästan aldrig ändras, som NS-poster |
TTL är ett tal mellan 0 och 2 147 483 647 sekunder (2^31 - 1, så står det i RFC 2181). I praktiken stöter du sällan på något över en dag eller två. Många resolvrar använder också ett eget maximum, ofta en dag eller en vecka.
Nedräkningen
TTL är inget fast klockslag för hela världen. Varje resolver börjar räkna först i det ögonblick den hämtar posten.
Ett exempel. A-posten för example.com har TTL 3600.
- Klockan 10:00 frågar resolvern hos leverantör A efter posten. Den får
192.0.2.10och får komma ihåg det till 11:00. - Klockan 10:40 frågar resolvern hos leverantör B efter den. Den kommer ihåg den till 11:40.
- Klockan 10:45 ändrar du posten till
198.51.100.10. - Användare hos leverantör A ser den nya adressen från 11:00, användare hos leverantör B först från 11:40.
Frågar du efter posten hos en resolver som redan har den i sin cache ser du i resultatet en TTL som blir allt lägre. Hos den auktoritativa namnservern ser du alltid hela värdet:
; hos den auktoritativa namnservern
example.com. 3600 IN A 192.0.2.10
; hos en resolver, 25 minuter senare
example.com. 2100 IN A 192.0.2.10Det är bra att veta: ser du 2100 sekunder hos din resolver ger den fortfarande det gamla svaret i 35 minuter till.
Vem kommer ihåg?
Det är inte bara resolvern hos din internetleverantör som har en cache. Det finns fler lager:
- Resolvern hos din leverantör, ditt företagsnätverk eller en publik resolver (till exempel 1.1.1.1, 8.8.8.8 eller 9.9.9.9).
- Din router hemma eller på kontoret, som ofta själv fungerar som en liten resolver.
- Operativsystemet på din dator eller telefon.
- Din webbläsare, som ibland också sparar DNS-svar ett tag.
Varje lager håller sig i princip till TTL, men inte alla gör det exakt. Därför kan det ta lite längre tid på din bärbara dator än hos din kollega. Hur du rensar dessa cachar läser du i lektion 6.2.
Att välja rätt TTL
En kort TTL kan verka smidig: ändringar syns då snabbt överallt. Men det finns en nackdel. Resolvrar måste då fråga om posten mycket oftare. Det gör den första inläsningen av din webbplats en aning långsammare, och om dina namnservrar är otillgängliga en kort stund blir din domän snabbare onåbar. Med en TTL på en timme kan resolvrar överbrygga ett kort driftstopp hos namnservern med sin cache.
Några tumregler:
- Standard: 3600 sekunder. Det är en bra balans.
- Inför en planerad ändring: tillfälligt 300. Sänk TTL minst en gammal TTL-period innan ändringen. Stod det 3600, gör det minst en timme i förväg, helst en hel dag. Stod det 86400, minst en dag. Efter ändringen sätter du tillbaka den. Hur du gör det vid en flytt läser du i lektion 6.3.
- Lägre än 60 sekunder har liten effekt. Vissa resolvrar ignorerar mycket korta TTL-värden och använder ett eget minimum.
- Att sänka en TTL fungerar först när den gamla TTL har löpt ut. Sänker du TTL från 86400 till 300 och ändrar adressen direkt därefter, har resolvrar som precis hämtade posten kvar det gamla värdet i ett helt dygn till.
Den sista punkten är det vanligaste misstaget med TTL. Den nya, korta TTL måste först själv nå ut till alla cachar.
I praktiken: så ser det ut i en panel
I exempelpanelen DirectAdmin visas TTL som en egen kolumn i DNS-administration. Du ändrar TTL för en post med pennan bakom den posten. Med knappen TTL WAARDE OVERSCHRIJVEN sätter du en TTL för alla poster i domänen samtidigt. I Mitt WebOké ser du TTL i postlistan under fliken DNS och väljer den i fönstret där du lägger till eller redigerar en post.
Andra paneler fungerar på liknande sätt: hos cPanel, Plesk, Cloudflare och de flesta registrarer heter fältet också TTL. Ibland väljer du från en lista (till exempel "5 minuter", "1 timme", "Auto") i stället för att skriva in ett tal i sekunder. Hos Cloudflare betyder "Auto" för poster utan proxy 300 sekunder.
Sammanfattning
- TTL avgör hur många sekunder ett DNS-svar får stanna kvar i en cache.
- Varje resolver räknar från det ögonblick den hämtade posten; därför ser inte alla en ändring samtidigt.
- Hos den auktoritativa namnservern ser du hela TTL, hos en resolver ett avräknande värde.
- 3600 är en bra standard; sänk tillfälligt till 300 inför en planerad ändring, och det minst en gammal TTL-period i förväg.
Quiz
Uppgift
Uppgift Z6.1: TTL vid källan och hos resolvern. Sök med ett online DNS-verktyg eller med dig upp TTL för A-posten för sidn.nl (webbplatsen för SIDN, registeransvarig för .nl i Nederländerna), direkt hos en av namnservrarna för sidn.nl själv (till exempel ns1.sidn.nl). Fyll i TTL i sekunder. Fråga sedan efter samma post hos en publik resolver och fyll i den TTL också. Förklara i en mening varför de två talen kan skilja sig åt.
dig A sidn.nl @ns1.sidn.nl
dig A sidn.nl @9.9.9.9Uppgift O6.1: Ställ in själv i din övningszon. I din övningszon finns redan en A-post <code>.dnspractice.euttl-test. som pekar mot <code>.dnspractice.eu192.0.2.61, med en TTL på 300 sekunder. Sänk TTL till 60 sekunder, som du skulle göra inför en flytt, och låt adressen vara oförändrad. Kontrollera sedan med dig hos namnservern för övningszonen att den nya TTL finns där. Lämna in när TTL är 60.
Övningszonen använder korta TTL-värden (mellan 30 och 300 sekunder), så att du inte behöver vänta; för din egen domän använder du till exempel 3600 som standard och 300 strax före en ändring.
Uppgift O6.1
Den här uppgiften gör du i din egen övningszon: en riktig DNS-zon på WebOkés namnservrar, bara för dig. Logga in med din e-postadress. Du får en inloggningslänk via mejl och kommer sedan tillbaka till den här lektionen. Vi använder din adress bara för kursen.
Läs mer
Stegen i dessa artiklar handlar om panelerna i WebOké; i andra paneler fungerar det på liknande sätt.
