DNS Serve Stale Nedir? Süresi Dolmuş Yanıt Neden Sunulur?

Alan adları için IP adresi gibi bilgileri taşıyan DNS kayıtlarının TTL değeri, verinin normal koşullarda kaynağa yeniden sorulmadan önbellekten ne kadar süre kullanılabileceğini belirtir. Bu önbelleği yöneten recursive resolver (özyinelemeli DNS çözümleyicisi), TTL sona erdikten sonra bu veriye yeniden ihtiyaç olduğunda yetkili kaynaktan güncel yanıt almaya çalışır.
Yetkili DNS sunucularına ulaşılamadığında veya yanıt geciktiğinde güncel veri zamanında alınamayabilir. DNS Serve Stale (RFC 8767'de serve-stale), recursive resolver uygulamasının daha önce önbelleğe aldığı ve TTL süresi dolduğu halde sakladığı veriyi geçici yanıt olarak sunmasıdır. Bu yöntem kesintinin etkisini azaltabilir, ancak eski verinin güncel veya kullanılabilir olduğunu garanti etmez.
TTL Sona Erdiğinde Normalde Ne Olur?
Bir kaynak kaydının TTL değeri geçerli olduğu sürece recursive resolver, kaydı yeni yetkili sorgu yapmadan istemciye sunabilir. TTL sona erdiğinde kayıt normal önbellek yanıtı olarak kullanılamaz; bu veriye ihtiyaç duyan yeni bir sorguda recursive resolver kaydı yenilemeye çalışır.
TTL'nin sona ermesi ile verinin bellekten silinmesi aynı şey değildir. Serve-stale kullanan recursive resolver eski kaydı belirli bir süre daha saklayabilir. Bu veriyi geçici yanıt olarak kullanabilmesi, yazılımın desteğine, yapılandırmasına ve verinin ne kadar önce süresinin dolduğuna bağlıdır.
Serve-Stale Nasıl Çalışır?
Recursive resolver önce geçerli, yani TTL süresi dolmamış bir önbellek kaydı olup olmadığını kontrol eder. Böyle bir kayıt yoksa ve sorgunun çözülmesi gerekiyorsa yetkili DNS sunucularından güncel yanıt almaya çalışır.
RFC 8767'nin örnek yönteminde istemciyi bekletme süresi ile sorguyu çözmek için ayrılan toplam süre farklıdır. Güncel yanıt istemciyi bekletme süresi içinde alınamazsa recursive resolver uygun eski veriyi sunabilir; yenileme denemelerini ise başarıya ulaşana veya sorguya ayrılan toplam süre dolana kadar sürdürür. Bu nedenle bütün yetkili sunucu denemelerinin kesin olarak başarısız olması beklenmek zorunda değildir.
Yakın zamanda başarısız bir yenileme denemesi yapılmışsa sonraki istemci sorgularında yeni deneme hemen başlatılmayabilir. Recursive resolver, yeniden deneme aralığı içinde sakladığı uygun eski veriyi doğrudan sunabilir. İstemciyi ne kadar bekleteceği ve ne sıklıkta yeniden deneyeceği, yazılıma ve ayarlara bağlıdır; sunucunun yavaş yanıt vermesi de eski veri sunulmasına yol açabilir.
Dört durum arasındaki fark şöyledir:
| Durum | Yetkili Kaynağa Erişim | Beklenen Sonuç |
|---|---|---|
| TTL süresi dolmamış | Gerekli değildir | Geçerli önbellek yanıtı kullanılır. |
| TTL sona ermiş, yenileme başarılı | Başarılı | Güncel veri alınır ve önbellek yenilenir. |
| TTL sona ermiş, güncel yanıt zamanında alınamamış | Yenileme başarısız olmuş veya devam ediyor | Recursive resolver politikası izin veriyorsa süresi dolmuş veri geçici olarak sunulabilir. |
| TTL sona ermiş ve saklanan uygun veri yok | Başarısız | Recursive resolver geçerli yanıt üretemeyebilir ve hata döndürebilir. |
Yetkili sunucunun güncel olarak verdiği ve geçerli kabul edilen olumsuz yanıt, iletişim hatasıyla aynı değildir. Örneğin adın bulunmadığını bildiren NXDOMAIN yanıtı alınırsa önceki olumlu kayıt, sırf hizmete erişimi sürdürmek için korunmaz. RFC 8767'de yetkili kaynaktan alınan geçerli olumlu ve olumsuz yanıtlar yenileme sayılır; bu ayrım, silinen bir kaydı eski önbellekten sunmayı sürdürmemek için önemlidir.
Serve-Stale Verisinin Saklama Süresi ve Yanıttaki TTL
RFC 8767, süresi dolmuş verinin ne kadar süre saklanacağını recursive resolver uygulamasının yapılandırmasındaki ayrı bir sınır olarak ele alır. Örnek yöntem, kaydın TTL süresi sona erdikten sonra verinin 1 ila 3 gün daha saklanmasını önerir. Bu süre, normal DNS kaydındaki TTL'den farklıdır.
RFC 8767, istemciye süresi dolmuş kayıt gönderildiğinde yanıttaki TTL'nin sıfırdan büyük olmasını zorunlu tutar ve 30 saniyeyi önerir. Bu nedenle bir DNS yanıtındaki pozitif TTL, verinin yetkili kaynaktan yeni alındığını tek başına kanıtlamaz.
RFC 8767'deki 7 günlük süre, yetkili kaynaktan alınan normal TTL değeri için önerilen üst sınırdır. Örnek yöntemdeki 1 ila 3 günlük ayrı süre ise TTL sona erdikten sonra verinin ne kadar daha saklanacağını belirler; iki ayar farklı amaçlara hizmet eder.
TTL değeri sıfır olan bir kayıt yalnız mevcut işlem için kullanılabilir ve önbelleğe alınmamalıdır. Önbellekte tutulmadığı için daha sonra serve-stale verisi olarak kullanılamaz.
Serve-Stale Yanıtı Nasıl Anlaşılır?
Tek bir DNS çıktısından serve-stale kullanıldığını kesin olarak anlamak her zaman mümkün değildir. RFC 8767, bu durumu istemciye bildiren zorunlu bir işaret tanımlamaz. DNS mesajlarına ek bilgi taşımaya yarayan EDNS içinde kullanılabilen EDE (Extended DNS Error), yanıtın nedenine ilişkin açıklama verir. RFC 8914'te EDE kodu 3 süresi dolmuş yanıtı, kod 19 ise süresi dolmuş NXDOMAIN yanıtını belirtir. Bu bilgi her yanıtta bulunmadığı için yokluğu serve-stale kullanılmadığını kanıtlamaz.
Recursive resolver yanıtını, yetkili DNS kaynağının güncel verisi ve erişilebilirliğiyle birlikte inceleyin. Bu karşılaştırmayı aynı ad ve kayıt türü için yapın; A kaydı IPv4, AAAA kaydı IPv6 adresi bildirir. Sizin bilgisayarınızdan yetkili sunucuya ulaşabilmeniz, recursive resolver sunucusunun da aynı anda ulaşabildiğini kanıtlamaz. Farklı recursive resolver uygulamalarının farklı sonuç vermesi de tek başına serve-stale kanıtı değildir; önbellek içerikleri, yenileme zamanları ve ayarları farklı olabilir.
Kendi recursive resolver uygulamasını yöneten sistem yöneticisi için en güçlü kanıt, günlüklerde yenileme denemelerinin sonucunu ve süresi dolmuş yanıt kullanımını birlikte görmektir. Yanıtın eski görünmesi tek başına yeterli değildir; henüz sona ermemiş TTL, ara önbellekler veya farklı DNS kaynakları da eski görünen sonuçlara yol açabilir.
Serve-Stale Erişilebilirlik ve Güncellik Arasında Nasıl Denge Kurar?
Serve-stale, yetkili DNS hizmetindeki geçici bir arızanın kullanıcı tarafında doğrudan ad çözümleme kesintisine dönüşme olasılığını azaltır. Önceden bilinen bir IP adresi veya başka bir DNS verisi işlevini sürdürüyorsa yetkili sunucular kısa süreliğine ulaşılamasa bile hizmete erişim sürebilir.
Bu dayanıklılığın karşılığında güncellik riski oluşur. Alan adı sahibi TTL sona erdikten sonra kaydı değiştirmiş olsa bile recursive resolver yeni veriyi alamıyorsa eski IP adresi, eski hedef veya bir adın ya da istenen kayıt türünün bulunmadığını bildiren önceki olumsuz yanıt geçici olarak kullanılmaya devam edebilir. Serve-stale güncel veriyi garanti etmez; güncel veri alınamadığında erişilebilirliği korumaya çalışan bir hata toleransı yöntemidir.
DNSSEC, DNS verisinin kaynağını ve bütünlüğünü dijital imzalarla doğrulamaya yarar; verinin TTL süresi ile imzanın geçerlilik süresi farklıdır. Eski veriyle birlikte sunulan imzanın süresi de geçmişse DNSSEC doğrulaması başarısız olabilir. Serve-stale bu imzayı yeniden geçerli yapmaz; sorunu çözmek için DNSSEC doğrulamasını kapatmak güvenlik denetimini kaldırır.







