DNS-cache

Protokoll och standarder
Tillfällig lagring av DNS-frågeresultat hos resolvrar eller klienter för att snabba upp upprepade uppslagningar.
← Tillbaka till Ordlistan

Vad är DNS-cache?

DNS-cachelagring är tillfällig lagring av DNS-frågeresultat hos resolvers, operativsystem, webbläsare och applikationer. När en DNS-uppslagning görs cachelagras resultatet under den tid som anges av postens TTL (Time To Live), så att efterföljande frågor om samma domän kan besvaras direkt utan att auktoritativa servrar behöver frågas.

Varför DNS-cachelagring är viktigt

Utan cachelagring skulle varje webbförfrågan kräva en fullständig DNS-uppslagning, vilket skapar latens och stora mängder DNS-trafik. DNS-cachelagring ger:

Så fungerar DNS-cachelagring

Cachehierarkin

DNS-cachelagring sker på flera nivåer:

Browser Cache (seconds to minutes)

OS Cache (seconds to minutes)

Local Resolver Cache (minutes to hours)

ISP Resolver Cache (minutes to hours)

Authoritative Name Server (source of truth)

Processen för cacheuppslagning

1. Användaren frågar efter example.com

2. Webbläsaren kontrollerar sin cache

3. Om svaret saknas kontrollerar operativsystemet sin cache

4. Om svaret saknas kontrollerar resolvern sin cache

5. Om svaret saknas görs en rekursiv fråga till auktoritativa servrar

6. Resultatet cachelagras på varje nivå enligt TTL

7. Svaret returneras till användaren

TTL-baserad utgång

Varje DNS-post innehåller ett TTL-värde:

example.com.    300    IN    A    203.0.113.50

^^^

TTL in seconds (5 minutes)

Cacher lagrar posten i 300 sekunder och kastar sedan bort den. Nästa fråga utlöser en ny uppslagning.

DNS-cachelagringens lager

Webbläsarcache

Moderna webbläsare cachelagrar DNS-resultat separat:

Chrome: Använder en egen DNS-cache (chrome://net-internals/#dns) Firefox: Har en intern cache (about:networking#dns) Safari: Använder systemets resolver

Typisk TTL för webbläsarcache: 60 sekunder (oavsett DNS-TTL)

Operativsystemets cache

Windows: DNS Client-tjänsten cachelagrar resultat
# View cache

ipconfig /displaydns

# Flush cache

ipconfig /flushdns

macOS: mDNSResponder hanterar cachelagringen
# Flush cache (macOS 10.15+)

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

Linux: Varierar mellan system, ofta systemd-resolved
# Flush systemd-resolved cache

sudo systemd-resolve --flush-caches

# Check statistics

sudo systemd-resolve --statistics

Resolvercache

Rekursiva DNS-resolvers (ISP:s DNS, 8.8.8.8 och 1.1.1.1) underhåller stora cacher som betjänar miljontals användare:

ResolverCache-strategi
Google (8.8.8.8)Respekterar TTL, global cache
Cloudflare (1.1.1.1)Respekterar TTL, distribuerad
ISP-resolversKan ignorera låga TTL-värden

Exempel på cachebeteende

Normal drift

Query 1: example.com

→ Full lookup: 50ms

→ Cached for 300s (TTL)

Query 2: example.com (1 minute later)

→ Cache hit: 1ms

Query 3: example.com (10 minutes later)

→ Cache expired, full lookup: 50ms

→ Re-cached for 300s

Uppdatera en DNS-post

Original: example.com → 203.0.113.50 (TTL: 300s)

Time: 10:00 - DNS updated to 203.0.113.51

Client queries at 10:02

→ Still cached: 203.0.113.50 (expires 10:05)

Client queries at 10:06

→ Cache expired, new lookup: 203.0.113.51

→ Cached until 10:11

TTL-strategi och cachelagring

Välja TTL-värden

AnvändningsområdeRekommenderad TTLMotivering
Statisk infrastruktur3600-86400s (1-24 timmar)Ändras sällan, minskar DNS-belastningen
Produktionswebbplats300-1800s (5-30 minuter)Balanserar prestanda och flexibilitet
Aktiv flytt60-300s (1-5 minuter)Snabbare propagation under ändringar
Lastbalansering60-120sSnabb redundans när servrar ändras

Sänka TTL före en flytt

Bästa praxis när DNS-ändringar planeras:

Day -7: example.com TTL 3600s (1 hour)

Day -2: Reduce to 300s (5 minutes)

Day 0: Make DNS change

→ Max 5 minute cache retention

Day +1: Restore TTL to 3600s

Cacheförgiftning och säkerhet

Attack med DNS-cacheförgiftning

Angripare försöker lägga in falska DNS-poster i cacher:

1. Angriparen översvämmar resolvern med falska svar

2. Om ett svar matchar en pågående fråga cachelagras det

3. Användare får en skadlig IP-adress för en legitim domän

4. Den förgiftade posten levereras till många användare från cachen

Säkerhetsåtgärder

DNSSEC: Kryptografiskt signerade poster förhindrar förgiftning
example.com.    IN    A      203.0.113.50

IN RRSIG A 8 2 300 ...

Slumpmässiga källportar: Gör svar svårare att förfalska 0x20-kodning: Slumpmässig skiftning av frågans bokstäver underlättar validering Säker resolver: Använd välrenommerade resolvers (Cloudflare, Google, Quad9)

Kontrollera DNS-cache

Visa cacheinnehåll

Windows:
ipconfig /displaydns | more
macOS (begränsad information):
sudo killall -INFO mDNSResponder

# Check Console.app for logs

Linux (systemd-resolved):
sudo systemd-resolve --statistics

Testa cachebeteende

# First query (cache miss)

time dig example.com

# Immediate repeat (cache hit)

time dig example.com

# Compare times

Cache-relaterade problem

Föråldrad cache efter DNS-ändring

Problem: Uppdaterade DNS-poster syns inte för användare Lösning:

1. Vänta tills TTL löper ut

2. Sänk TTL före framtida ändringar

3. Be användare tömma sin lokala cache

Alltför aggressiv cachelagring

Vissa internetleverantörer ignorerar TTL och cachelagrar längre:

Problem: Ändringar tar timmar eller dagar att slå igenom Lösning:

Negativ cachelagring

Misslyckade uppslagningar (NXDOMAIN) cachelagras också:

Query: newsubdomain.example.com

Response: NXDOMAIN (does not exist)

Cached: 3600s (SOA minimum TTL)

Result: New subdomain won't resolve for 1 hour

Lösning: Sänk SOA:s minsta TTL innan du lägger till nya poster

Töm DNS-cachen

När cachen ska tömmas

Så tömmer du cachen

Windows:
ipconfig /flushdns
macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Linux (systemd-resolved):
sudo systemd-resolve --flush-caches
Chrome:
Navigate to: chrome://net-internals/#dns

Click: "Clear host cache"

Firefox:
Toggle network.dnsCacheExpiration in about:config

Or restart browser

Bästa praxis

1. Ange lämpliga TTL-värden: Balansera prestanda och ändringshastighet

2. Sänk TTL före ändringar: Sänk TTL 24-48 timmar före DNS-uppdateringar

3. Övervaka propagation: Använd verktyg för att kontrollera global DNS-upplösning

4. Dokumentera cachebeteende: Förstå infrastrukturens cachelager

5. Använd DNSSEC: Skydda mot cacheförgiftning

6. Testa noggrant: Verifiera att DNS-ändringar fungerar som väntat innan de godkänns

7. Utbilda användare: Ge tydliga instruktioner för att tömma cache vid behov

Avancerade cachekoncept

Förhämtning

Webbläsare och resolvers kan förhämta DNS för länkar på en sida:

<!-- Hint to browser -->

<link rel="dns-prefetch" href="//cdn.example.com">

Värma cache

Lastbalanserare och CDN:er kan förfylla cacher med kritiska poster.

Anycast och cachelagring

Anycast-DNS dirigerar frågor till närmaste server och skapar geografiskt distribuerade cacher för optimal prestanda.

DNS-cachelagring är grundläggande för internetprestanda. Genom att förstå och konfigurera TTL-värden korrekt säkerställer du att DNS-ändringar slår igenom effektivt samtidigt som upplösningen förblir snabb.

Använd Denna Kunskap

Använd DomScans API för att kontrollera domäntillgänglighet, hälsa och mer.