DNS önbelleği nedir?
DNS önbelleğe alma, DNS sorgu sonuçlarının çözümleyiciler, işletim sistemleri, tarayıcılar ve uygulamalar tarafından geçici olarak saklanmasıdır. Bir DNS araması yapıldığında sonuç, kaydın TTL (Time To Live) değeriyle belirlenen süre boyunca önbelleğe alınır. Böylece aynı alan adı için sonraki istekler yetkili sunuculara yeniden sorulmadan anında yanıtlanabilir.
DNS önbelleğe alma neden önemlidir?
Önbelleğe alma olmasaydı her web isteği tam bir DNS araması gerektirir, bu da gecikme ve yüksek DNS trafiği oluştururdu. DNS önbelleği şunları sağlar:
- Daha hızlı yanıt süreleri: Önbellek yanıtları, tam aramalardaki milisaniyeler yerine mikrosaniyeler içinde döner
- Daha az ağ trafiği: Yetkili sunuculara daha az sorgu gönderilir
- Daha iyi dayanıklılık: DNS sunucularına geçici olarak erişilemese bile yerel önbellek yanıt sağlayabilir
- Daha düşük sunucu yükü: Yetkili sunucular daha az sorgu işler
DNS önbelleğe alma nasıl çalışır?
Önbellekleme hiyerarşisi
DNS önbelleğe alma birden çok düzeyde gerçekleşir:
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)
Önbellek arama süreci
1. Kullanıcı ister example.com
2. Tarayıcı kontrol eder kendi önbelleğini
3. Yoksa işletim sistemi kontrol eder kendi önbelleğini
4. Yoksa çözümleyici kontrol eder kendi önbelleğini
5. Yoksa özyinelemeli sorgu yapılır yetkili sunuculara
6. Sonuç önbelleğe alınır TTL'ye göre her düzeyde
7. Yanıt kullanıcıya döndürülür
TTL tabanlı süre dolumu
Her DNS kaydı bir TTL değeri içerir:
example.com. 300 IN A 203.0.113.50
^^^
TTL in seconds (5 minutes)
Önbellek bu kaydı 300 saniye tutar ve ardından siler. Sonraki sorgu yeni bir arama başlatır.
DNS önbellek katmanları
Tarayıcı önbelleği
Modern tarayıcılar DNS sonuçlarını bağımsız olarak önbelleğe alır:
Chrome: Kendi DNS önbelleğini kullanır (chrome://net-internals/#dns) Firefox: Dahili önbellek tutar (about:networking#dns) Safari: Sistem çözümleyicisini kullanırTipik tarayıcı önbelleği TTL'si: DNS TTL'sinden bağımsız olarak 60 saniye.
İşletim sistemi önbelleği
Windows: DNS Client hizmeti sonuçları önbelleğe alır# View cache
ipconfig /displaydns
# Flush cache
ipconfig /flushdns
macOS: Önbellekleme mDNSResponder tarafından yapılır
# Flush cache (macOS 10.15+)
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Linux: Sisteme göre değişir, çoğunlukla systemd-resolved kullanılır
# Flush systemd-resolved cache
sudo systemd-resolve --flush-caches
# Check statistics
sudo systemd-resolve --statistics
Çözümleyici önbelleği
Özyinelemeli DNS çözümleyicileri (ISP DNS'i, 8.8.8.8 ve 1.1.1.1 gibi) milyonlarca kullanıcıya hizmet veren büyük önbellekler tutar:
| Çözümleyici | Önbellek stratejisi |
|---|---|
| Google (8.8.8.8) | TTL'ye uyar, küresel önbellek |
| Cloudflare (1.1.1.1) | TTL'ye uyar, dağıtık |
| ISP çözümleyicileri | Düşük TTL'leri yok sayabilir |
Önbellek davranışı örnekleri
Normal çalışma
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 kaydı güncellemesi
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 stratejisi ve önbellekleme
TTL değerlerini seçme
| Kullanım alanı | Önerilen TTL | Gerekçe |
|---|---|---|
| Statik altyapı | 3600-86400s (1-24 saat) | Nadiren değişir, DNS yükünü azaltır |
| Üretim web sitesi | 300-1800s (5-30 dakika) | Performans ile esnekliği dengeler |
| Etkin geçiş | 60-300s (1-5 dakika) | Değişiklikler sırasında daha hızlı güncelleme |
| Yük dengeleme | 60-120s | Sunucular değiştiğinde hızlı devreye alma |
Geçiş öncesi TTL azaltma
DNS değişiklikleri planlanırken iyi uygulama:
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
Önbellek zehirleme ve güvenlik
DNS önbellek zehirleme saldırısı
Saldırganlar önbelleklere sahte DNS kayıtları enjekte etmeye çalışır:
1. Saldırgan çözümleyiciyi sahte yanıtlarla doldurur
2. Yanıtlardan biri bekleyen sorguyla eşleşirse önbelleğe alınır
3. Kullanıcılar meşru alan adı için kötü amaçlı IP alır
4. Zehirlenmiş önbellek birçok kullanıcıya sunulur
Güvenlik azaltımları
DNSSEC: Kriptografik olarak imzalanan kayıtlar zehirlemeyi önlerexample.com. IN A 203.0.113.50
IN RRSIG A 8 2 300 ...
Kaynak portu rastgeleleştirme: Yanıtların sahteciliğini zorlaştırır
0x20 kodlaması: Sorgulardaki rastgele harf durumu doğrulamaya yardımcı olur
Çözümleyici güvenliği: Güvenilir çözümleyiciler kullanın (Cloudflare, Google, Quad9)
DNS önbelleğini kontrol etme
Önbellek içeriğini görüntüleme
Windows:ipconfig /displaydns | more
macOS (sınırlı bilgi):
sudo killall -INFO mDNSResponder
# Check Console.app for logs
Linux (systemd-resolved):
sudo systemd-resolve --statistics
Önbellek davranışını test etme
# First query (cache miss)
time dig example.com
# Immediate repeat (cache hit)
time dig example.com
# Compare times
Önbellekle ilgili sorunlar
DNS değişikliğinden sonra eski önbellek
Sorun: Güncellenen DNS kayıtları kullanıcılara yansımıyor Çözüm:1. TTL'nin dolmasını bekleyin
2. Gelecekteki değişikliklerden önce TTL'yi azaltın
3. Kullanıcılardan yerel önbelleklerini temizlemelerini isteyin
Aşırı agresif önbellekleme
Bazı ISP'ler TTL'yi yok sayar ve daha uzun önbelleğe alır:
Sorun: Değişikliklerin yayılması saatler veya günler sürer Çözüm:- Daha düşük TTL kullanın (ISP'ler genellikle en az 300 saniyeye uyar)
- Kritik hizmetler için anycast DNS'i değerlendirin
- Bilinen sorunlu ISP'leri belgeleyin
Negatif önbellekleme
Başarısız aramalar (NXDOMAIN) da önbelleğe alınır:
Query: newsubdomain.example.com
Response: NXDOMAIN (does not exist)
Cached: 3600s (SOA minimum TTL)
Result: New subdomain won't resolve for 1 hour
Çözüm: Yeni kayıt eklemeden önce SOA minimum TTL değerini düşürün
DNS önbelleğini temizleme
Ne zaman temizlenmeli?
- DNS değişikliklerini hemen test ederken
- Çözümleme sorunlarını giderirken
- DNS sağlayıcısı geçişinden sonra
- Önbellek zehirlenmesinden şüphelenildiğinde
Nasıl temizlenir?
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
En iyi uygulamalar
1. Uygun TTL'ler belirleyin: Performans ile değişiklik hızını dengeleyin
2. Değişikliklerden önce TTL'yi azaltın: DNS güncellemelerinden 24-48 saat önce düşürün
3. Yayılımı izleyin: Küresel DNS çözümlemesini kontrol eden araçlar kullanın
4. Önbellek davranışını belgeleyin: Altyapınızın önbellekleme katmanlarını anlayın
5. DNSSEC kullanın: Önbellek zehirlenmesine karşı korunun
6. Kapsamlı test yapın: Başarı ilan etmeden önce DNS değişikliklerinin beklenen şekilde çalıştığını doğrulayın
7. Kullanıcıları bilgilendirin: Gerektiğinde önbellek temizleme talimatlarını açıkça sağlayın
İleri önbellekleme kavramları
Önceden getirme
Tarayıcılar ve çözümleyiciler bir sayfadaki bağlantılar için DNS'i önceden sorgulayabilir:
<!-- Hint to browser -->
<link rel="dns-prefetch" href="//cdn.example.com">
Önbellek ısıtma
Yük dengeleyiciler ve CDN'ler kritik kayıtların önbelleklerini önceden doldurabilir.
Anycast ve önbellekleme
Anycast DNS, sorguları en yakın sunucuya yönlendirir ve en iyi performans için coğrafi olarak dağıtılmış önbellekler oluşturur.
DNS önbelleğe alma, internet performansının temelidir. TTL'leri doğru anlamak ve yapılandırmak, hızlı çözümleme sürelerini korurken DNS değişikliklerinin verimli biçimde yayılmasını sağlar.