DNS önbelleği nedir, kayıtlar ne kadar süre kalır?
Bir DNS önbelleği, tarayıcınız, işletim sisteminiz, yönlendiriciniz veya İSS’nizin çözümleyicisi tarafından tutulan bir DNS yanıtının saklanmış bir kopyasıdır, böylece aynı isim için bir sonraki sorgu interneti tekrar sormak yerine anında yanıt verir. Her kopyanın ne kadar süre yaşadığı kayıttaki TTL tarafından belirlenir, ve bu önbelleklerin her biri kendi programına göre süresi dolduğu için, aynı isim aynı anda iki farklı makineden farklı şekilde çözülebilir.
Bir DNS yanıtı gerçekte nerede önbelleğe alınır?
Tek bir sorgu, siz fark etmeden önce birkaç önbellekten geçer, ve her biri kendi kopyasını kendi süresi boyunca tutar:
- Tarayıcı. Chrome, Edge ve Firefox, işletim sisteminden ayrı olarak kendi küçük DNS önbelleklerini tutar. Chrome’unki
chrome://net-internals/#dnsadresinde görülebilir, ve onu temizlemek yalnızca o tarayıcıyı etkiler, makinenin geri kalanını değil. - İşletim sistemi stub çözümleyicisi. Windows, DNS Client hizmetini çalıştırır ve yanıtları
ipconfig /displaydnsile listeleyebileceğiniz şekilde önbelleğe alır; macOSmDNSResponderüzerinden önbelleğe alır; çoğu Linux masaüstü,resolvectlile sorguladığınız yerel bir önbellekleme stub çözümleyicisi olansystemd-resolvedçalıştırır. Bu, yalnızca tarayıcının elindekinin bir kopyası değil, kendi TTL geri sayımı olan gerçek bir önbellektir. - Yönlendirici. Çoğu ev yönlendiricisi, bir sorguyu akış yukarı geçirmeden önce kendi önbelleğinden yanıt veren küçük bir DNS yönlendiricisi çalıştırır, ki bu yüzden yönlendiriciyi yeniden başlatmak bazen aslında başka bir yerdeki bir DNS sorununu çözer.
- Özyinelemeli çözümleyici. İSS’nizin çözümleyicisi, veya genel bir tanesi, internetteki çoğu sorguyu işler ve en büyük, en paylaşılan önbelleği tutar. Bir kez yanıtı aldığında, ona soran her cihaz, süresi dolana kadar önbelleğe alınmış kopyayı alır.
Her katman bağımsızdır. Dizüstü bilgisayarınızdaki önbelleği temizlemek, yönlendiricinizin veya İSS’nizin hâlâ tuttuğu önbelleğe hiçbir şey yapmaz, ve başka birinin makinesi için de hiçbir şey yapmaz.
TTL nedir, ve gerçekte kim buna uyar?
Her DNS kaydı, bölgeyi yöneten kişi tarafından belirlenen, saniye cinsinden bir sayı olan bir yaşam süresi (time to live) taşır ve bir çözümleyiciye tekrar sormadan önce yanıtı ne kadar süre yeniden kullanabileceğini söyler. RFC 1035, bunu bir kaydın "kaynağın bilgisi tekrar danışılmadan önce önbelleğe alınabileceği" aralık olarak tanımlar, ve sıfır TTL, yanıtın hiç önbelleğe alınmaması gerektiği anlamına gelir.
Zincirdeki her önbellek, tarayıcı, stub çözümleyici, yönlendirici, özyinelemeli çözümleyici, kaydı ilk getirdiği andan itibaren geri sayarak o sayıya uymalıdır. Pratikte, bazı İSS çözümleyicileri bunun üzerine kendi tabanlarını uygular, genellikle bölgenin TTL’nin ne olması gerektiğini söylediğinden bağımsız olarak bir saat veya daha fazla. Bu yüzden gelecekteki bir değişikliği hızlandırmak için TTL’i düşürmek çoğu çözümleyiciye yardımcı olur ama her biri için bir garanti değildir.
Negatif önbellekleme nedir, ve yepyeni bir kayıt neden kayıp kalabilir?
Bir çözümleyici yalnızca var olan kayıtları önbelleğe almaz. Bir sorgu böyle bir isim yok (NXDOMAIN) yanıtıyla veya istenen türde bir kayıt olmadan geri gelirse, bu başarısızlık da önbelleğe alınır; buna negatif önbellekleme denir. RFC 2308, negatif önbelleğin ömrünü SOA kaydının minimum alanından belirler, ve RFC 9520 artık uyumlu bir çözümleyici için bu başarısızlığı önbelleğe almayı isteğe bağlı değil zorunlu kılıyor.
Bu, tanıdık bir sorunun ardındaki mekanizmadır: yeni bir alt alan adı oluşturursunuz, bir saniye çok erken sorgularsınız, NXDOMAIN alırsınız, ve kayıt artık var olsa bile çözümleyici bölgenin negatif TTL’si süresince "mevcut değil"i hatırlar. Windows, iki tür girdiyi ayrı ayrı görünür kılar: ipconfig /displaydns hem pozitif hem de negatif yanıtları listeler, ve ipconfig /flushdns, önbelleği temizlemenin bir parçası olarak negatif önbellek girdilerini açıkça atar.
Bir site neden sizin için çözülür ama başka biri için çözülmez?
Çünkü tek bir paylaşılan önbellek yoktur. İki farklı çözümleyiciye soran iki kişi, veya aynı çözümleyiciye iki farklı anda soran aynı kişi, aynı isim için iki farklı yanıt alabilir. Bir çözümleyicinin kopyası bir saat önceki bir sorgudan hâlâ taze olabilir; bir diğeri ise ismi hiç görmemiş olup mevcut değeri getirmeye gidebilir. Hiçbiri yanlış değildir, sadece farklı saatlerdedirler. Bu, bir kaydı değiştirdikten hemen sonra oluyorsa, DNS yayılımı nasıl kontrol edilir sayfası, birkaç çözümleyiciyi yan yana karşılaştırmayı ve her birinde ne kadar zaman kaldığını okumayı ele alır.
Hâlâ önbellekte olan bir kaydın TTL’sini nasıl okursunuz?
İsmi doğrudan sorgulayın ve kısa biçim yerine tam çıktıyı saklayın:
dig example.com
;; ANSWER SECTION:
example.com. 847 IN A 203.0.113.10
Bu örnekte kayıt türünden önceki sayı, 847, o belirli çözümleyicinin kopyasının süresi dolmadan önce kalan saniyedir; kesin olarak yalnızca yetkili sunucunun söyleyebileceği kaydın orijinal TTL’si değildir. Aynı sorguyu birkaç saniye sonra tekrar çalıştırın ve sayı yaklaşık o kadar saniye düşmüş olacaktır, bu da statik bir ayarı değil canlı bir geri sayımı okuduğunuzu doğrular. Bir isim düşük bir sayıyla çözülmek yerine hiç çözülmüyorsa, bu farklı bir arızadır: DNS nasıl temizlenir önce kendi önbelleğinizi temizlemeyi ele alır, ve bir DNS çözümleyicisi gerçekte ne yapar sayfası, kendi önbelleğiniz sorun olmadığında zincirde sırada ne olduğunu ele alır.
Bir önbellek, bir ziyaretçinin bir değişikliği neden hemen gördüğünü ve bir diğerinin görmediğini açıklar; hiçbir yerde güncellenmeyen bir kaydı açıklamaz. Kendi ağınızın dışından geçerli yanıtı görmek için DNS sorgu aracıyla canlı bir arama çalıştırın, ve site bir kez kontrol edilmek yerine bir programa göre erişilebilir kalması gerekiyorsa, dağıtık izleme bunun için vardır: birçok kontrol noktasından. HostTracker, 2004’ten beri web sitelerini izliyor, şimdi 158 şehirdeki 300’den fazla kontrol noktasından 500.000’den fazla siteyi izliyor, ve bir kontrol başarısız olduğunda e-posta, SMS, sesli arama, Slack, Telegram ve daha fazlasıyla uyarır; belirli bir IP adresi bekleyen ve yanıt değiştiği anda işaretleyen bir kontrol dahil.
Sık sorulan sorular
Dolu bir DNS önbelleği bilgisayarımı yavaşlatır mı?
Hayır. Bir DNS önbelleği, en fazla birkaç yüz girdilik küçük bir isim ve adres tablosudur, ve birini aramak ölçülebilir hiçbir şeye mal olmaz. Sorgular yavaş hissettiriyorsa, önbelleğin kendisi neden değildir; genellikle neden uzak veya aşırı yüklü bir çözümleyicidir.
Önbelleğimi temizlemek başkaları için de düzeltir mi?
Hayır. ipconfig /flushdns, dscacheutil -flushcache ve resolvectl flush-caches, yalnızca çalıştırıldıkları makinedeki önbelleği temizler. Herkes hâlâ kendi tarayıcısından, kendi yönlendiricisinden ve kendi çözümleyicisinden okuyordur, her biri kendi saatinde.
Bir DNS önbelleği bir CDN önbelleğiyle aynı şey mi?
Hayır, ikisi karıştırılsa da. Bir DNS önbelleği, "bu isim için IP adresi nedir" sorusunun yanıtını saklar. Bir CDN önbelleği ise gerçek sayfa veya dosya içeriğini ziyaretçiye yakın bir sunucuda saklar. Birini temizlemenin diğeri üzerinde hiçbir etkisi yoktur.
Alan adını yönetmiyorsam kendi TTL’imi ayarlayabilir miyim?
Hayır. TTL, alan adını yöneten kişi tarafından yetkili bölgede belirlenen kaydın bir özelliğidir. Bir ziyaretçi olarak, elinizdeki tek kaldıraç, kendi tabanını uygulayan bir çözümleyici yerine kısa bir TTL’ye saygı gösteren bir çözümleyici sorgulamayı seçmektir.
Gördüğüm TTL her sorguda neden değişiyor?
Çünkü farklı bir çözümleyiciye soruyorsunuz, veya aynı çözümleyiciye geri sayımının farklı bir anında soruyorsunuz. Hiçbir şey henüz geri sayılmamışken, orijinal olarak ayarlandığı şekliyle TTL’i görmek için yetkili ad sunucusunu doğrudan sorgulayın: dig example.com @ns1.yourdns.example.