İçeriğe geç
ipkontrol.net

DNS

TTL Nedir? DNS’te Ne İşe Yarar?

Önbellek süresinin anlamı ve taşınma öncesi neden düşürüldüğü.

TTL (Time To Live, yaşam süresi), bir DNS cevabının önbelleklerde kaç saniye tutulabileceğini söyleyen sayı. 3600 yazan bir kayıt, onu alan her çözümleyiciye "bu cevabı bir saat boyunca tekrar sormadan kullanabilirsin" diyor.

Temel tanımı ve yaygın değerleri A kaydı yazımızda anlattık. Bu yazı bir adım ileri gidiyor: TTL'i okuyup bir değişikliğin en geç ne zaman herkese ulaşacağını kendiniz hesaplayabilmeniz için.

TTL bir geri sayım

Yaygın yanlış anlama TTL'i sabit bir değer sanmak. Oysa önbellekteki her kayıt için ayrı ayrı geri sayıyor:

  1. Alan adının yetkili sunucusu cevabı 3600 TTL ile veriyor.
  2. Operatörünüzün çözümleyicisi cevabı önbelleğe alıyor ve saymaya başlıyor.
  3. 20 dakika sonra aynı adı soran birine önbellekten 2400 ile cevap veriyor.
  4. Sayaç sıfıra inince kayıt siliniyor; bir sonraki soruda yetkili sunucuya yeniden gidiliyor.

Bu yüzden değişiklik herkese aynı anda ulaşmıyor: her çözümleyicinin sayacı, kaydı ilk aldığı ana göre farklı bir yerde.

Geri sayımı görmek

KomutTTL nerede
dig ornek.comANSWER bölümünde alan adından sonraki sayı
nslookup -debug ornek.comttl = satırı
dig @ns1.ornek.com ornek.comYetkili sunucunun verdiği tam değer

Birinci komutu birkaç saniye arayla iki kez çalıştırın. Sayı azalıyorsa cevap önbellekten geliyor. Üçüncü komut önbelleği atlayıp doğrudan yetkili sunucuya soruyor ve her seferinde aynı, tam değeri gösteriyor. İkisinin farkı "bu çözümleyici kaydı ne zaman aldı" sorusunun cevabı. Komutların genel kullanımı DNS sorgulama yazısında; komut satırı kullanmadan DNS sorgulama aracımızla da görebilirsiniz.

En kötü durum hesabı

Bir kaydı değiştirdiğinizde eski değeri en uzun süre tutacak olan, kaydı değişiklikten hemen önce almış çözümleyici. Onun sayacı tam doluyken başladı. Buradan tek bir kural çıkıyor:

Değişikliğin herkese ulaşması en fazla, değişiklik anında yayında olan TTL kadar sürer.

TTL 86400 ise 24 saat, 300 ise 5 dakika. "48 saat bekleyin" gibi genel tavsiyelerin kaynağı eski yıllarda yaygın olan uzun TTL değerleri; gerçek süre kaydınızın kendisinde yazıyor.

Düşürme tuzağı

Taşınmadan önce TTL'i düşürmek doğru bir adım. Ama çoğu kişi TTL'i düşürüp hemen adresi değiştiriyor ve düşürmenin hiçbir etkisi olmuyor.

Sebep yukarıdaki kural: TTL'i 86400'den 300'e çektiğiniz anda, son 24 saat içinde kaydı almış çözümleyiciler hâlâ 86400'lük sayaçla çalışıyor. Yeni TTL'i ancak sayaçları bitip yeniden sorduklarında öğreniyorlar. Yani:

TTL'i düşürdükten sonra ESKİ TTL kadar bekleyin, sonra adresi değiştirin.

ZamanAdımNeden
T − (eski TTL + pay)TTL'i 300 yapBütün önbellekler yeni, kısa TTL'i öğrensin
TAdresi değiştirArtık en uzun sayaç 5 dakika
T + 5–10 dakikaYeni sunucuyu kontrol etTrafiğin büyük kısmı yeni adreste
T + 1–2 günEski sunucunun kayıtlarına bakTTL'i kırpan önbelleklerden kalan trafik bitti mi
SonraTTL'i eski değerine döndürGereksiz sorgu yükü kalksın

Birinci satırdaki "pay" için birkaç saat eklemek yeterli. Eski TTL 3600 ise işlem aynı gün içinde bitiyor.

Negatif önbellek: "bulunamadı" da tutuluyor

Olmayan bir ad sorulduğunda gelen "böyle bir kayıt yok" cevabı da önbelleğe alınıyor. Süresini kaydın TTL'i değil, alan adının SOA kaydı belirliyor: SOA'nın son alanı ile SOA kaydının kendi TTL'inden küçük olanı.

Pratikte şu senaryoda can yakıyor:

  1. yeni.ornek.com adresini kaydı eklemeden önce tarayıcıda denediniz.
  2. Çözümleyici "yok" cevabını önbelleğe aldı.
  3. Kaydı eklediniz — ama çözümleyici negatif süre dolana kadar "yok" demeye devam ediyor.

Süreyi görmek için dig ornek.com SOA komutunun çıktısındaki son sayıya bakın. Ders: yeni alt alan adını, kaydı ekledikten sonra test edin. Tarayıcıdaki "bulunamadı" hatasının diğer sebepleri NXDOMAIN hatası yazısında.

TTL'e herkes uymuyor

Yetkili sunucunun yazdığı değer bir öneri; zincirdeki her halka onu kendi sınırlarıyla kırpabiliyor:

HalkaDavranış
Çözümleyici yazılımlarıÇok uzun TTL'i bir üst sınıra indiriyor; bazıları çok kısa TTL'i yukarı yuvarlıyor
İşletim sistemi önbelleğiKendi üst sınırını uyguluyor
TarayıcıKısa süreli ayrı bir önbellek tutuyor
Uzun çalışan uygulamalarBazıları adresi açılışta bir kez çözüp yeniden başlatılana kadar kullanıyor

Zaman çizelgesindeki "1–2 gün sonra eski sunucuya bak" adımı bu yüzden var: son satırdaki uygulamalar TTL'den bağımsız olarak eski adrese gitmeye devam edebiliyor. Kendi cihazınızdaki önbellekleri DNS önbelleği temizleme yazısındaki adımlarla boşaltabilirsiniz.

Hangi kayda hangi TTL?

KayıtTipik aralıkGerekçe
NSUzun (bir gün ve üzeri)Nadiren değişir; üst bölgedeki değer sizin elinizde değil
MX1 saat – 1 günPosta sunucusu seyrek taşınır
A / AAAA (sabit site)1 saatDenge noktası
A (dinamik DNS, yedek sunucuya geçiş)1–5 dakikaDeğişim hızlı yansımalı
TXT (doğrulama)5 dakika – 1 saatKurulum sırasında sık düzeltilir

Kısa TTL'in bedeli: önbellek sık boşaldığı için ziyaretçilerin daha büyük kısmı ilk istekte tam çözümleme bekliyor ve DNS sağlayıcınıza giden sorgu sayısı artıyor. Sorgu başına ücret alan sağlayıcılarda bu faturaya yansıyor. NS kaydının neden daha yavaş değiştiğini NS kaydı, posta kayıtlarını MX kaydı yazısında anlattık.

Aynı kısaltma, başka bir TTL

ping çıktısında da TTL=57 gibi bir değer görüyorsunuz. Adı aynı, işi farklı:

DNS TTL'iIP paketindeki TTL
BirimiSaniyeYönlendirici sayısı (atlama)
Ne sınırlıyorCevabın önbellekte kalma süresiPaketin ağda dolaşabileceği adım sayısı
Nerede görülürdig, nslookupping, traceroute

Paketteki TTL'in nasıl kullanıldığını traceroute yazısında anlattık.

Sıkça sorulan sorular

DNS’te TTL nedir?

Bir DNS cevabının önbelleklerde kaç saniye tutulabileceğini söyleyen değerdir. TTL 3600 olan bir kayıt, çözümleyiciler tarafından bir saat boyunca tekrar sorulmadan kullanılır.

DNS değişikliği ne kadar sürede yayılır?

En fazla, değişiklik anında yayında olan TTL kadar. TTL 300 ise yaklaşık 5 dakika, 86400 ise 24 saat. Bazı uygulamalar TTL’e uymadığı için eski adrese kısa süre daha trafik gidebilir.

Taşınmadan önce TTL’i düşürdüm ama değişiklik yine geç yayıldı, neden?

TTL’i düşürdükten sonra eski TTL kadar beklemeden adresi değiştirdiyseniz, önbellekler eski uzun süreyle çalışmaya devam etmiştir. Düşürme, eski süre dolduktan sonra etkili olur.

Yeni eklediğim alt alan adı neden hâlâ bulunamıyor?

Kaydı eklemeden önce adresi denediyseniz “bulunamadı” cevabı önbelleğe alınmıştır. Bu negatif önbellek süresini alan adının SOA kaydı belirler; süre dolunca kendiliğinden düzelir.

Ping çıktısındaki TTL ile DNS TTL’i aynı şey mi?

Hayır. DNS TTL’i saniye cinsinden önbellek süresidir; ping çıktısındaki TTL ise paketin geçebileceği yönlendirici sayısıdır.