Was ist DNS Cache?
DNS-Caching ist die temporäre Speicherung der DNS-Abfrageergebnisse durch Resolver, Betriebssysteme, Browser und Anwendungen. Wenn ein DNS-Lookup durchgeführt wird, wird das Ergebnis für einen Zeitraum, der durch das TTL (Time To Live) des Datensatzes definiert wird, geätzt, so dass nachfolgende Anfragen für dieselbe Domain sofort beantwortet werden können, ohne autoritäre Server abzufragen.
Warum DNS Caching Mattes
Ohne Caching würde jede einzelne Web-Anfrage ein vollständiges DNS-Lookup erfordern – eine Latenzzeit und einen massiven DNS-Verkehr generieren. DNS Caching bietet:
- **Faster Response Times*: Cached Antworten zurück in Mikrosekunden vs Millisekunden für volle Lookups
- Reduzierter Netzwerkverkehr: Weniger Anfragen an autoritative Server
- Verbesserte Widerstandsfähigkeit: Lokaler Cache liefert Antworten, auch wenn DNS-Server vorübergehend nicht erreichbar sind
- Lower Server Load: Autoritative Server behandeln weniger Abfragen
Wie DNS Caching funktioniert
Die schreiende Hierarchie
DNS-Caching erfolgt auf mehreren Ebenen:
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)
Cache Lookup Prozess
1. Anfragen an Benutzer example.com
2. **Browser prüft* seinen Cache
3. **Wenn Miss, OS überprüft* seinen Cache
4. **Wenn Miss, Resolver prüft* seinen Cache
5. Wenn Miss, rekursive Abfrage an autoritative Server
6. Ergebnis auf jeder Ebene basierend auf TTL
7. Response an den Benutzer zurückgegeben*
TTL-basiertes Ablaufen
Jeder DNS-Datensatz enthält einen TTL-Wert:
example.com. 300 IN A 203.0.113.50
^^^
TTL in seconds (5 minutes)
Caches speichern diese Platte für 300 Sekunden, dann verwerfen Sie sie. Die nächste Abfrage löst einen frischen Lookup aus.
DNS Cache Ebenen
Browser Cache
Moderne Browser Cache DNS Ergebnisse unabhängig:
Chrome: Verwendet einen eigenen DNS-Cache (chrome://net-internals/#dns) Firefox: Enthält interne Cache (etwa:networking#dns) Safari: Verwendet SystemresolverTypischer Browser-Cache TTL: 60 Sekunden (unabhängig von DNS TTL)
Betriebssystem Cache
Windows: DNS Client Service Caches Ergebnisse# View cache
ipconfig /displaydns
# Flush cache
ipconfig /flushdns
macOS: mDNSRespondergriffe Caching
# Flush cache (macOS 10.15+)
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Linux: Varianten nach System, oft systemd-resolved
# Flush systemd-resolved cache
sudo systemd-resolve --flush-caches
# Check statistics
sudo systemd-resolve --statistics
Resolver Cache
Rekursive DNS-Resolver (ISP DNS, 8.8.8.8, 1.1.1.1) halten große Caches, die Millionen von Benutzern dienen:
| Resolver | Cache-Strategie |
|---|---|
| Google (8.8.8.8) | Respects TTL, globaler Cache |
| Cloudflare (1.1.1.1) | Respects TTL, verteilt |
| ISP-Resolver | Kann niedrige TTL ignorieren |
Cache Behavior Beispiele
Normalbetrieb
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
DNS Record Update
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 Strategie und Caching
Auswahl von TTL-Werten
| Anwendungsfall | Empfohlenes TTL | Begründung |
|---|---|---|
| Strategische Infrastruktur | 3600-86400s (1-24 Stunden) | Seltene Änderungen, reduzieren DNS-Last |
| Produktionswebsite | 300-1800s (5-30 Minuten) | Balance Performance und Flexibilität |
| Aktive Migration | 60-300 (1-5 Minuten) | Schnellere Ausbreitung bei Änderungen |
| Lastausgleich | 60-120 | Schneller Ausfall, wenn Server ändern |
Pre-Migration TTL-Reduktion
Best Practice bei der Planung von DNS-Änderungen:
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
Cache Poisoning und Sicherheit
DNS Cache Poisoning Attack
Angreifer versuchen, falsche DNS-Einträge in Caches zu injizieren:
1. Angreifer überschwemmt Resolver mit gefälschten Reaktionen
2. Wenn man eine anhängige Abfrage übertrifft, ist es geätzt
3. Benutzer erhalten bösartige IP für legitime Domain
4. Kaschiertes Gift diente vielen Benutzern
Sicherheitsmaßnahmen
DNSSEC: Kryptografisch signierte Datensätze verhindern Vergiftungexample.com. IN A 203.0.113.50
IN RRSIG A 8 2 300 ...
**Quelle Port Randomization*: Macht Antworten schwerer zu schmieden
**0x20 Encoding*: Random Fall bei Abfragen Hilfe Validierung
**Resolver Security*: Verwenden Sie seriöse Resolver (Cloudflare, Google, Quad9)
Überprüfung von DNS Cache
Cache Inhalt anzeigen
Windows:ipconfig /displaydns | more
macOS (begrenzte Informationen):
sudo killall -INFO mDNSResponder
# Check Console.app for logs
**Linux (systemd-resolved)*:
sudo systemd-resolve --statistics
Test Cache Behavior
# First query (cache miss)
time dig example.com
# Immediate repeat (cache hit)
time dig example.com
# Compare times
Cache-Relationed Issues
Stale Cache nach DNS-Änderung
Problem: Aktualisierte DNS-Aufzeichnungen, die nicht für Benutzer widerspiegeln Lösung:1. Warten Sie auf TTL abgelaufen
2. Reduzieren Sie TTL vor zukünftigen Änderungen
3. Fragen Sie Benutzer, um lokalen Cache zu spülen
Übermäßig aggressives Caching
Einige ISPs ignorieren TTL und Cache länger:
Problem: Änderungen dauern Stunden/Tage an Lösung:- Verwenden Sie niedrigere TTLs (ISPs halten normalerweise 300s Minimum)
- Überlegen Sie allecast DNS für kritische Dienste
- Dokument bekannte problematische ISPs
Negatives Caching
Verfehlte Lookups (NXDOMAIN) werden ebenfalls geätzt:
Query: newsubdomain.example.com
Response: NXDOMAIN (does not exist)
Cached: 3600s (SOA minimum TTL)
Result: New subdomain won't resolve for 1 hour
Lösung: Unteres SOA Minimum TTL vor dem Hinzufügen neuer Datensätze
Flushing DNS Cache
Wann zu Flush
- DNS-Änderungen sofort testen
- Probleme bei der Fehlerbehebung
- Nach DNS-Provider Migration
- Verdächtige Cache-Vergiftung
Wie Flush
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
Bewährte Praktiken
1. **Einstellen geeigneter TTL*: Gleichgewichtsleistung und Änderungsgeschwindigkeit
2. ** Reduzieren Sie TTL vor Änderungen* Untere TTL 24-48 Stunden vor DNS-Updates
3. **Monitor-Vermehrung*: Verwenden Sie Tools, um die globale DNS-Auflösung zu überprüfen
4. **Document Cache Verhalten*: Verstehen Sie die Caching-Schichten Ihrer Infrastruktur
5. ** DNSSEC verwenden*: Schutz vor Cache-Vergiftung
6. Test gründlich: Überprüfen Sie DNS-Änderungen wie erwartet, bevor Sie Erfolg erklären
7. **Educate user*: Geben Sie bei Bedarf klare Anweisungen für die Cache Spülung
Erweiterte Caching-Konzepte
Vorbeugung
Browser und Resolver können DNS für Links auf einer Seite vorschreiben:
<!-- Hint to browser -->
<link rel="dns-prefetch" href="//cdn.example.com">
Cache Erwärmung
Load Balancer und CDNs können Caches für kritische Datensätze vorbevölkern.
Anycast und Caching
Anycast DNS Routen Abfragen an den nächsten Server, Erstellen geografisch verteilte Caches für eine optimale Leistung.
DNS-Caching ist grundlegend für die Internet-Performance – das Verständnis und die korrekte Konfiguration von TTLs sorgt dafür, dass Ihre DNS-Änderungen effizient propagieren und schnelle Auflösungszeiten beibehalten.