$ man ttl-nedir
TTL Nedir?
TTL (Time To Live), bir DNS kaydının recursive resolver'ların önbelleğinde en fazla kaç saniye tutulabileceğini belirten değerdir. Bir kayıt değişikliğinin ne kadar sürede herkese yansıyacağını büyük ölçüde TTL belirler.
TTL nasıl çalışır?
Her DNS kaydı, saniye cinsinden bir TTL değeriyle yayınlanır. Bir recursive resolver yetkili sunucudan cevap aldığında bu cevabı TTL süresi boyunca önbelleğe alır ve aynı soruyu soran diğer istemcilere yetkili sunucuya tekrar gitmeden cevap verir. Önbellekten verilen cevaplarda TTL geriye doğru sayar:
$ dig +noall +answer example.com A
example.com. 3600 IN A 192.0.2.10
; birkaç dakika sonra aynı resolver'a sorulduğunda
$ dig +noall +answer example.com A
example.com. 3412 IN A 192.0.2.10
İkinci cevaptaki 3412, kaydın bu resolver'ın önbelleğinde 3412 saniye daha kalacağını gösterir. Yetkili sunucuya doğrudan sorduğunuzda (dig @ns1.example.net example.com A) ise her zaman yapılandırılmış tam değeri görürsünüz.
RFC 2181, TTL'in 32 bitlik bir değer olduğunu ve 2147483647 (2^31−1) saniyeden büyük değerlerin sıfır kabul edilmesi gerektiğini belirtir. Pratikte birçok resolver kendi üst sınırını uygular ve çok uzun TTL'leri kısaltır; bazıları çok kısa TTL'leri de belirli bir alt sınıra yükseltebilir. Bu yüzden TTL bir garanti değil, bir üst sınır olarak düşünülmelidir.
TTL değeri nasıl seçilir?
TTL seçimi, değişikliklerin hızlı yansıması ile sorgu yükü ve gecikme arasında bir dengedir:
- Uzun TTL (ör. 3600–86400 saniye): Daha az sorgu, daha hızlı cevap, yetkili sunucu kesintilerine karşı daha fazla dayanıklılık. Buna karşılık bir hata yaptığınızda düzeltmenin yansıması uzun sürer. NS kayıtları ve nadiren değişen MX kayıtları için uygundur.
- Kısa TTL (ör. 60–300 saniye): Değişiklikler hızlı yansır; yük dengeleme veya failover senaryolarında işe yarar. Buna karşılık yetkili sunucularınıza daha fazla sorgu gelir ve kullanıcılar önbellekten daha az faydalanır.
Belirli bir kural yoktur; çoğu kayıt için birkaç saatlik bir TTL makul bir başlangıç noktasıdır. Önemli olan, değişiklik planlarınızı bu değere göre yapmaktır.
Taşıma öncesi TTL düşürme
Bir sunucu taşıması veya IP değişikliği planlıyorsanız TTL'i önceden düşürmek kesinti süresini kısaltır. Önemli nokta, düşürmenin eski TTL süresi kadar önceden yapılması gerektiğidir:
- Kaydın mevcut TTL'i 86400 (bir gün) ise, taşımadan en az bir gün önce TTL'i 300'e düşürün.
- Eski TTL süresi dolduğunda tüm önbelleklerde kayıt artık en fazla 300 saniye tutulur.
- Kaydı yeni IP'ye güncelleyin; değişiklik birkaç dakika içinde yansır.
- Her şeyin çalıştığından emin olduktan sonra TTL'i tekrar yükseltin.
; taşımadan bir gün önce
www.example.com. 300 IN A 192.0.2.10
; taşıma anında
www.example.com. 300 IN A 192.0.2.20
; doğrulama sonrası
www.example.com. 3600 IN A 192.0.2.20
TTL'i taşıma anında düşürmek işe yaramaz: önbelleklerdeki eski kayıt, eski ve uzun TTL'ini taşımaya devam eder. Nameserver değişikliklerinde ise belirleyici olan TLD bölgesindeki NS kayıtlarının TTL'idir ve bunu siz kontrol edemezsiniz; ayrıntılar Nameserver (NS) Nedir? sayfasında.
Negatif önbellekleme ve SOA minimum alanı
Resolver'lar yalnızca var olan kayıtları değil, "bu isim yok" (NXDOMAIN) veya "bu isimde bu türde kayıt yok" (NODATA) cevaplarını da önbelleğe alır. RFC 2308'e göre bu negatif cevapların önbellek süresi, bölgenin SOA kaydının TTL'i ile SOA kaydındaki son alan (minimum) değerinden küçük olanıdır.
example.com. 3600 IN SOA ns1.example.net. hostmaster.example.com. (
2026100701 7200 3600 1209600 900 )
; negatif cevaplar en fazla min(3600, 900) = 900 saniye önbellekte kalır
Bu durum pratikte şöyle bir soruna yol açar: yeni bir alt alan adını (api.example.com) kaydı oluşturmadan önce test ederseniz, resolver "yok" cevabını önbelleğe alır. Kaydı hemen ardından eklediğinizde bile o resolver negatif önbellek süresi dolana kadar ismi bulamaz. Kayıtları önce oluşturup sonra test etmek bu sorunu önler. SOA alanlarının tamamı DNS Kayıt Türleri sayfasında açıklanıyor.
"DNS yayılması" yanılgısı
"DNS değişikliğinin yayılması 24–48 saat sürer" ifadesi yaygındır ama yanıltıcıdır. DNS'te değişiklikler bir sunucudan diğerine aktarılarak "yayılmaz". Yetkili sunucunuzu güncellediğiniz anda yeni değer oradadır (ikincil sunucuların zone transferi için geçen kısa süre hariç). Gecikmenin tek sebebi, recursive resolver'ların eski cevabı TTL süresi dolana kadar önbellekte tutmasıdır.
Bu yüzden:
- Değişikliğin herkese yansıma süresi, değişiklikten önceki TTL değeriyle sınırlıdır; sabit bir "24–48 saat" yoktur.
- Farklı kullanıcıların farklı sonuçlar görmesi normaldir: her biri farklı bir resolver kullanır ve her resolver kaydı farklı bir anda önbelleğe almıştır.
- Tarayıcı ve işletim sistemi de kendi önbelleğini tutabilir; bir değişikliği test ederken bunları da hesaba katın.
Sorgulama aracındaki DNS sekmesi kayıtları bir recursive resolver üzerinden sorguladığı için, gösterilen TTL kaydın o resolver'da kalan süresini ifade eder.
Sık Sorulan Sorular
TTL sıfır olabilir mi?
Evet, TTL 0 cevabın önbelleğe alınmaması gerektiği anlamına gelir. Ancak her sorgu yetkili sunucuya gider, gecikme artar ve bazı resolver'lar alt sınır uygulayarak değeri yine de yükseltebilir. Genel kullanım için önerilmez.
Resolver önbelleğini nasıl temizlerim?
Yalnızca kendi kontrolünüzdeki önbellekleri temizleyebilirsiniz: işletim sistemi önbelleği (Windows'ta ipconfig /flushdns), tarayıcı önbelleği veya kendi işlettiğiniz resolver. ISS'nizin veya herkese açık resolver'ların önbelleği TTL dolana kadar eski cevabı tutar; bazı herkese açık resolver'lar önbellek temizleme formu sunar.
Bir alan adının WHOIS/RDAP kaydını ve durum kodlarını gör.
whois sorgula →