DNS TTL, bir DNS yanıtındaki kayıt bilgisinin önbellekte ne kadar süre tutulabileceğini belirleyen değerdir. TTL, “Time to Live” ifadesinin kısaltmasıdır ve DNS bağlamında saniye cinsinden bir önbellek süresini gösterir.

Bir alan adının IP adresini, e-posta sunucusunu veya başka bir hizmetini gösteren DNS kaydı değiştirildiğinde eski yanıtlar recursive resolver (özyinelemeli DNS çözümleyicisi) önbelleklerinde kalabilir. Bu nedenle TTL, yeni kaydın farklı kullanıcılar tarafından ne zaman görülmeye başlayacağını etkiler.

TTL bütün dünyada aynı anda çalışan merkezi bir geri sayım değildir. Ayrıca IP paketlerindeki TTL alanından ve HTTP önbellek sürelerinden farklıdır; tarayıcı, işletim sistemi ve recursive resolver gibi katmanlar ayrı önbellek davranışları gösterebilir.

DNS Yanıtında TTL'nin Görevi

DNS kayıtları yalnızca bir alan adını IP adresine eşleştirmez. A, AAAA, MX, CNAME ve diğer kaynak kayıtları, yanıtın ne kadar süre önbellekte tutulabileceğini belirten bir TTL değeriyle birlikte sunulur.

Recursive resolver, geçerli yanıt önbellekteyken TTL süresi dolmadan aynı kayıt için yetkili DNS sunucusuna yeniden başvurmak zorunda kalmaz. Aynı kayıt tekrar sorulduğunda recursive resolver doğrudan yanıt verebilir; bu davranış yetkili sunuculara giden sorgu sayısını ve çözümleme için gereken işlemleri azaltır.

Önbellek kullanımı, yetkili sunuculara giden sorgu sayısını azaltırken değişikliklerin hemen görülmesini engelleyebilir. Kayıt yetkili sunucuda değiştirilse bile önbellekteki önceki yanıt, kendisine verilen süre dolana kadar kullanılabilir.

Recursive Resolver Kalan TTL Süresini Nasıl Kullanır?

Recursive resolver, istemci adına gerekli DNS sorgularını yaparak yanıtı bulan ve sonucu geçici olarak saklayabilen sunucudur. TTL mantığı, bu saklanan yanıtın ne kadar süre güncel kabul edileceğini belirler.

Önbelleğe Alma ve Sürenin Azalması

Recursive resolver önbelleğinde kullanılabilir bir kayıt yoksa güncel yanıtın alınması gerekir. Yetkili sunucudan alınan yanıt TTL değeriyle önbelleğe yazılır ve kalan süre zaman geçtikçe azalır.

Aynı kayıt süre dolmadan yeniden sorulursa recursive resolver önbellekteki veriyi döndürebilir. Süre dolduktan sonra yeni bir istek geldiğinde güncel yanıtı almak için yeniden sorgu yapar. TTL süresinin bitmesi, tek başına o anda sorgu gönderileceği anlamına gelmez.

Kalan TTL Süreleri Neden Farklıdır?

Her recursive resolver, kaydı aynı anda önbelleğe almaz. Bir recursive resolver kaydı birkaç saniye önce almışken başka biri çok daha önce önbelleğe almış veya hiç saklamamış olabilir.

Bu nedenle aynı alan adı için iki ağdan alınan TTL değerleri farklı görünebilir. Fark çoğu durumda DNS kaydının tutarsız olduğu anlamına gelmez; recursive resolver sunucularının önbelleğe alma zamanları ve kalan süreleri aynı değildir.

TTL Neden DNS Değişikliklerinin Görülme Zamanını Etkiler?

Bir DNS kaydı değiştirildiğinde yetkili sunucu yeni veriyi sunmaya başlayabilir. Ancak değişiklikten önce eski yanıtı önbelleğe alan recursive resolver sunucuları, kendi kalan TTL süreleri bitene kadar önceki veriyi kullanabilir.

Örnek bir senaryoda başlangıç TTL değeri 3600 saniye olan kayıt, değişiklikten 10 dakika önce bir recursive resolver tarafından önbelleğe alınmış olsun. Bu recursive resolver eski yanıtı yaklaşık 50 dakika daha kullanabilir; kaydı önbelleğinde tutmayan başka bir recursive resolver ise yeni yanıtı hemen alabilir.

Bu farklı zamanlama genellikle “DNS yayılımı” olarak adlandırılır. TTL gerçekte değişikliği bütün dünyaya dağıtan bir sayaç değildir; önceden alınmış yanıtların ne kadar süre kullanılabileceğine sınır koyar. Yetkili sunucu yapılandırması, delegasyon sorunları ve istemci tarafındaki ek önbellekler de yeni kaydın görülme zamanını etkileyebilir.

Olumsuz DNS Yanıtlarında TTL

DNS önbelleği yalnız mevcut kayıtları saklamaz. Bir adın bulunmadığını belirten NXDOMAIN yanıtı ile ad mevcut olduğu halde istenen kayıt türünün bulunmadığını belirten NODATA yanıtı da belirli koşullarda önbelleğe alınabilir.

Olumsuz yanıtın önbellek süresi, DNS bölgesinin yönetim bilgilerini taşıyan SOA kaydından belirlenir. Yetkili sunucu, SOA kaydının kendi TTL değeri ile olumsuz önbellek için kullanılan MINIMUM alanından küçük olanı yanıtın önbellek süresi olarak bildirir.

Örneğin henüz oluşturulmamış bir alt alan adı sorgulandıktan kısa süre sonra kayıt eklenirse bazı recursive resolver sunucuları daha önce sakladıkları olumsuz yanıtı kullanmaya devam edebilir. Olumsuz önbellek süresi dolduktan sonra gelen bir istekte yeniden sorgu yapılarak yeni kayıt görülebilir. Yeni kayda kısa TTL vermek, daha önce saklanmış olumsuz yanıtın süresini kısaltmaz.

Bu davranış, var olmayan adlar için aynı sorguların sürekli yetkili sunuculara gönderilmesini önler. Bununla birlikte yeni oluşturulan bir kaydın bazı ağlarda gecikmeli görünmesinin nedeni de olabilir.

Süresi Dolmuş DNS Yanıtı Arıza Anında Kullanılabilir mi?

Normal işleyişte TTL sona erdikten sonra aynı kayıt istendiğinde recursive resolver yeni yanıt almak için yeniden sorgu yapar. Bazı recursive resolver sunucuları ise yetkili sunucuya geçici olarak ulaşılamadığı durumlarda daha önce önbelleğe alınmış süresi dolmuş yanıtı sınırlı ve kontrollü biçimde sunabilir.

Serve stale (süresi dolmuş yanıt sunma) olarak adlandırılan bu davranış, geçici DNS arızasında hizmetin tamamen kesilmesini azaltmayı amaçlar. Her recursive resolver hizmetinde aynı biçimde uygulanmaz ve TTL'nin etkisiz olduğu anlamına gelmez; yalnızca erişilebilirliği korumak için kullanılan istisnai bir dayanıklılık yöntemidir.

DNS TTL Değeri Nasıl Seçilir?

Her kayıt ve her değişiklik planı için tek bir ideal DNS TTL süresi yoktur. DNS yöneticisi TTL değerini kaydın değişim sıklığına, yetkili DNS altyapısının kapasitesine, sorgu hacmine ve planlanan taşıma veya bakım işlemlerine göre seçer.

  • Daha uzun TTL, tekrar sorgularını azaltabilir ancak eski yanıtların daha uzun süre kullanılmasına neden olabilir.
  • Daha kısa TTL, recursive resolver sunucularının daha sık yeni yanıt istemesini sağlar ancak yetkili sunuculara ulaşan sorgu sayısını artırabilir.
  • Sık değişmeyen bir kayıt ile yakın zamanda değiştirilecek bir kayıt aynı önbellek süresine ihtiyaç duymayabilir.
  • TTL tek başına kesintisiz geçiş veya belirli sürede küresel güncelleme garantisi vermez.

Planlı Değişikliklerden Önce TTL'yi Düşürme

IP adresi değişikliği veya hizmet taşıması gibi planlı bir işlemden önce TTL değerini düşürmek, yeni değeri alan recursive resolver sunucularının eski yanıtı daha kısa süre tutmasına yardımcı olabilir. Ancak bu ayar, daha önce uzun TTL ile önbelleğe alınmış yanıtların kalan süresini geriye dönük olarak kısaltmaz.

DNS yöneticisi TTL değerini planlanan değişiklikten en az kaydın mevcut TTL süresi kadar önce düşürmelidir. Gerekli hazırlık süresi, kaydın o andaki TTL değerine ve değişiklik planına bağlıdır.

Kayıt Türü ve Değişim Sıklığı

Aynı DNS bölgesindeki kayıtların kullanım amacı farklı olabilir. E-posta sunucusunu belirten bir MX kaydı veya doğrulama için kullanılan bir TXT kaydıyla trafik yönlendirmesi nedeniyle daha sık güncellenen bir A ya da AAAA adres kaydı için farklı TTL değerleri seçilebilir.

Ancak aynı ad, kayıt türü ve sınıfa sahip kayıtların oluşturduğu RRset'te (kayıt kümesinde) TTL değerleri aynı olmalıdır. Örneğin aynı alan adı için birden fazla A kaydı yayımlanıyorsa bunlara farklı TTL değerleri verilmez; o adın A ve MX kayıtları ise ayrı kümeler olduğu için farklı süreler kullanabilir.

DNS yöneticisi TTL değerini yalnız kayıt türünün adına göre seçmemelidir. Değeri seçerken kaydın gerçek değişim sıklığını, hata durumunda eski yanıtın etkisini ve yetkili DNS hizmetinin kaldırabileceği sorgu yükünü birlikte ele almalıdır.

DNS Yanıtındaki TTL Değeri Nasıl Yorumlanır?

Bir DNS yanıtında görülen TTL değeri, sorgunun doğrudan yetkili sunucuya mı yoksa recursive resolver hizmetine mi gönderildiğine göre farklı anlam taşıyabilir. Yetkili yanıt başlangıç değerini gösterebilirken önbellekli bir yanıt çoğu durumda kalan süreyi gösterir.

DNS TTL Analizi, kayıtların sunduğu süreleri ve sorgu anındaki yanıtları incelemek için kullanılabilir. Ancak tek bir ölçüm, bütün recursive resolver sunucularının aynı önbellek durumuna sahip olduğunu kanıtlamaz.