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:
- Alan adının yetkili sunucusu cevabı
3600TTL ile veriyor. - Operatörünüzün çözümleyicisi cevabı önbelleğe alıyor ve saymaya başlıyor.
- 20 dakika sonra aynı adı soran birine önbellekten
2400ile cevap veriyor. - 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
| Komut | TTL nerede |
|---|---|
| dig ornek.com | ANSWER bölümünde alan adından sonraki sayı |
| nslookup -debug ornek.com | ttl = satırı |
| dig @ns1.ornek.com ornek.com | Yetkili 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.
| Zaman | Adım | Neden |
|---|---|---|
| T − (eski TTL + pay) | TTL'i 300 yap | Bütün önbellekler yeni, kısa TTL'i öğrensin |
| T | Adresi değiştir | Artık en uzun sayaç 5 dakika |
| T + 5–10 dakika | Yeni sunucuyu kontrol et | Trafiğin büyük kısmı yeni adreste |
| T + 1–2 gün | Eski sunucunun kayıtlarına bak | TTL'i kırpan önbelleklerden kalan trafik bitti mi |
| Sonra | TTL'i eski değerine döndür | Gereksiz 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:
yeni.ornek.comadresini kaydı eklemeden önce tarayıcıda denediniz.- Çözümleyici "yok" cevabını önbelleğe aldı.
- 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:
| Halka | Davranış |
|---|---|
| Çö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ği | Kendi üst sınırını uyguluyor |
| Tarayıcı | Kısa süreli ayrı bir önbellek tutuyor |
| Uzun çalışan uygulamalar | Bazı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ıt | Tipik aralık | Gerekçe |
|---|---|---|
| NS | Uzun (bir gün ve üzeri) | Nadiren değişir; üst bölgedeki değer sizin elinizde değil |
| MX | 1 saat – 1 gün | Posta sunucusu seyrek taşınır |
| A / AAAA (sabit site) | 1 saat | Denge noktası |
| A (dinamik DNS, yedek sunucuya geçiş) | 1–5 dakika | Değişim hızlı yansımalı |
| TXT (doğrulama) | 5 dakika – 1 saat | Kurulum 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'i | IP paketindeki TTL | |
|---|---|---|
| Birimi | Saniye | Yönlendirici sayısı (atlama) |
| Ne sınırlıyor | Cevabın önbellekte kalma süresi | Paketin ağda dolaşabileceği adım sayısı |
| Nerede görülür | dig, nslookup | ping, 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.