"DNS yayılımı" denince değişikliğinizin internete yavaş yavaş dağıldığı düşünülür. Gerçekte hiçbir şey dağılmaz: yeni kayıt, kaydettiğiniz anda yetkili DNS sunucularındadır. Beklediğiniz şey, dünyanın dört bir yanındaki çözücülerin önbelleğinde duran eski cevabın süresinin dolmasıdır. Bu farkı anlamak, beklemeyi tahmin etmeyi ve çoğu zaman tamamen ortadan kaldırmayı sağlar.
Yayılım aslında nasıl işler?
Bir ziyaretçi alan adınızı yazdığında bilgisayarı doğrudan sizin DNS sunucunuza sormaz. Soru önce bir çözücüye (internet servis sağlayıcınızınki, 1.1.1.1, 8.8.8.8 ya da şirket ağındaki sunucu) gider. Çözücü cevabı yetkili sunucudan alır, kullanıcıya verir ve aynı soruyu bir daha sormamak için TTL (Time To Live) süresi boyunca önbelleğinde tutar. O süre içinde siz kaydı değiştirseniz bile o çözücüyü kullanan herkes eski cevabı alır.
Bunu test sunucumuzdan izleyebilirsiniz. Yetkili sunucu kaydı 300 saniyelik TTL ile veriyor; sunucunun kendi önbellekli çözücüsü ise aynı cevabı geri sayan bir TTL ile döndürüyor:
# Yetkili sunucu: her zaman tam TTL
$ dig +noall +answer A example.com @hera.ns.cloudflare.com
example.com. 300 IN A 172.66.147.243
example.com. 300 IN A 104.20.23.154
# Önbellekli çözücü: kalan süre
$ dig +noall +answer A example.com @127.0.0.53
example.com. 250 IN A 104.20.23.154
# 20 saniye sonra
$ dig +noall +answer A example.com @127.0.0.53
example.com. 229 IN A 172.66.147.243
Önbellekteki kayıt 229 saniye daha geçerli. Kayıt şu anda değişse bu çözücü yeni adresi en geç 229 saniye sonra öğrenir. "Yayılma süresi" dediğimiz şey, dünyadaki bütün çözücüler için bu sayının sıfıra inmesidir; yani en kötü durumda eski TTL kadar.
Kayıt değişikliği ile NS değişikliği aynı değildir
| Değişiklik | Bekleme süresini ne belirler | Tipik süre |
|---|---|---|
| A, AAAA, CNAME, MX, TXT kaydı | Değiştirilen kaydın eski TTL değeri | Dakikalar - 1 gün |
| Yeni eklenen kayıt | Daha önce sorulduysa "kayıt yok" cevabının önbellek süresi (SOA kaydının son alanı) | Dakikalar - 1 saat |
| NS değişikliği (DNS sağlayıcısını değiştirmek) | Üst alan adındaki yetkilendirme kaydının TTL'i | .com.tr: 12 saat, .com: 48 saat |
NS değişikliğini siz düşüremezsiniz, çünkü o kayıt sizin değil üst alan adının (.com.tr için TRABİS, .com için Verisign) sunucularındadır. .com.tr yetkilendirmesini doğrudan .tr sunucusuna sorduğumuzda TTL 43200 saniye (12 saat) dönüyor:
$ dig +noall +authority NS turkcell.com.tr @ns43.ns.tr
turkcell.com.tr. 43200 IN NS ns1.turkcell.com.tr.
turkcell.com.tr. 43200 IN NS ns2.turkcell.com.tr.
Bir de olumsuz önbellek var: Bir alt alan adını henüz oluşturmadan biri sorduysa (örneğin siz test etmek için), çözücü "böyle bir kayıt yok" cevabını da önbelleğe alır. Bu sürenin üst sınırı alan adınızın SOA kaydındaki son değerdir. Kaydı oluşturmadan sorgulamamak bu bekleyişi önler.
Kayıt silmek de aynı kurala tabidir: sildiğiniz bir kaydın eski cevabı, TTL'i dolana kadar önbelleklerde yaşamaya devam eder. Bir alt alan adını kapatıp başka bir yere yönlendirecekseniz silmeden önce TTL'ini düşürmek burada da işe yarar.
Beklemeyi kısaltma planı
- Mevcut TTL'i öğrenin:
dig +noall +answer A ornek.com.tr @yetkili-sunucu. İkinci sütun TTL'dir. - TTL'i düşürün: Değişiklik yapacağınız kayıtların TTL'ini 300 saniyeye çekin.
- Eski TTL kadar bekleyin: Eski değer 86400 ise bir gün. Bu bekleyiş değişiklikten önce yapıldığı için kimseyi etkilemez.
- Değişikliği yapın: Artık her çözücü en geç beş dakika içinde yeni cevabı alır.
- Eski sunucuyu hemen kapatmayın: Geç kalan çözücüler ve uygulama önbellekleri için bir-iki gün daha çalışır tutun. Site taşırken izlenecek sıra kesintisiz site taşıma yazımızda.
- TTL'i geri yükseltin: 3600 gibi bir değer, DNS sunucularınıza gereksiz yük bindirmez.
TTL'e uymayan önbellekler
Teori "en kötü durumda eski TTL kadar" der; pratikte birkaç istisna vardır ve "yayılmadı" şikâyetlerinin çoğu bunlardan gelir:
- Asgari TTL uygulayan çözücüler: Bazı servis sağlayıcı çözücüleri çok kısa TTL'leri kendi belirledikleri asgari bir süreye yükseltir. 60 saniyelik bir TTL bu çözücülerde birkaç dakika yaşayabilir.
- Tarayıcı ve işletim sistemi önbelleği: Tarayıcılar ve işletim sistemleri çözülmüş adresleri kısa süre kendileri de tutar; açık bir sekme, eski sunucuya bağlı kalmaya devam edebilir.
- Uygulama önbelleği: Uzun süre çalışan sunucu uygulamaları (Java tabanlı servisler, bağlantı havuzları) adresi açılışta çözüp yeniden başlatılana kadar kullanabilir. Bir API'nin adresini değiştirdiyseniz onu çağıran servisleri yeniden başlatmak gerekebilir.
- Sabit kayıtlar: Bilgisayarındaki
hostsdosyasına adres yazmış bir geliştirici, DNS ne derse desin eski sunucuyu görür.
E-posta taşırken dikkat
MX kaydını yeni posta sunucusuna çevirdiğinizde, bazı gönderen sunucular eski TTL süresi boyunca iletiyi eski sunucuya teslim etmeye devam eder. Eski posta sunucusunu birkaç gün açık tutun ve geç gelen iletileri yeni sunucuya aktarın; aksi halde bu iletiler sessizce kaybolur. MX ile birlikte SPF kaydını da güncellemeyi unutmayın: yeni sunucunun IP'si kayıtta yoksa giden iletileriniz şüpheli işaretlenir. Ayrıntı: SPF kaydı nasıl yapılır.
Yayılımı nasıl kontrol edersiniz?
Kendi bilgisayarınızdan yaptığınız sorgu yalnız sizin çözücünüzün önbelleğini gösterir. Farklı ülkelerdeki ve farklı sağlayıcılardaki çözücülerin ne gördüğünü tek ekranda karşılaştırmak için DNS yayılım kontrolü aracını kullanın. Kaydın yetkili sunucudaki değerini görmek için ise DNS sorgulama aracı ya da komut satırında yetkili sunucuya doğrudan sorgu:
dig +short NS ornek.com.tr
dig +noall +answer A ornek.com.tr @ns1.saglayici.com
Yetkili sunucu yeni değeri veriyorsa sizin tarafınızda yapılacak iş bitmiştir; geri kalan, önbelleklerin süresinin dolmasıdır.
DNS sağlayıcısını değiştirirken izlenecek sıra
NS değişikliği, kayıt değişikliğinden daha uzun süren ve geri alınması daha zor bir işlemdir. Kesintisiz geçiş için:
- Yeni sağlayıcıda bölgeyi eksiksiz kurun. A, AAAA, MX, TXT (SPF, DKIM, DMARC), CNAME ve SRV kayıtlarının hepsini kopyalayın. Eski sağlayıcının panelindeki listeyi kayıt kayıt karşılaştırın; en sık unutulan, DKIM kayıtları ve doğrulama TXT'leridir.
- Yeni sunucuları doğrudan sorgulayın.
dig +short MX ornek.com.tr @yeni-ns1.saglayici.comgibi sorgularla her kaydın yeni sunucuda doğru cevap verdiğini görün. - DNSSEC açıksa önce onu çözün. Üst alan adında eski sağlayıcının anahtarına ait bir DS kaydı varken NS'i değiştirirseniz, doğrulama yapan çözücüler alan adınızı hiç çözemez. DS kaydını kaldırın, en az üst alan adındaki TTL kadar bekleyin, NS'i değiştirin, sonra yeni sağlayıcıda DNSSEC'i yeniden açın.
- NS kayıtlarını kayıt firmasının panelinden değiştirin.
- Eski sağlayıcıdaki bölgeyi hemen silmeyin. Üst alan adındaki yetkilendirme TTL'i (.com.tr'de 12 saat, .com'da 48 saat) dolana kadar bazı çözücüler hâlâ eski sunuculara sorar; o sürede eski bölge de doğru cevabı vermelidir.
Kendi önbelleğinizi temizlemek
Değişiklik yetkili sunucuda göründüğü halde kendi bilgisayarınızda eski site açılıyorsa önbellek yerel olabilir:
| Sistem | Komut |
|---|---|
| Windows | ipconfig /flushdns |
| macOS | sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder |
| Linux (systemd-resolved) | resolvectl flush-caches |
| Chrome | chrome://net-internals/#dns → "Clear host cache" |
Modeminiz de kendi önbelleğini tutabilir; yeniden başlatmak çoğu zaman yeterlidir. Kayıt türlerinin ne işe yaradığını DNS kayıtları rehberimizde anlattık.
Sık sorulan sorular
DNS yayılımı ne kadar sürer?
Bir A, MX ya da TXT kaydını değiştirdiğinizde bekleme süresi en fazla o kaydın eski TTL değeri kadardır; TTL 300 saniyeyse en geç beş dakikada her yer yeni cevabı görür. Alan adının DNS sunucularını (NS) değiştirdiğinizde ise üst alan adındaki yetkilendirme kaydının TTL'i belirleyicidir; bu .com.tr'de 12 saat, .com'da 48 saattir.
Sitemi bazı yerlerden eski, bazı yerlerden yeni görüyorum. Normal mi?
Evet. Her çözücü kaydı kendi önbelleğine farklı bir anda aldığı için, eski cevabın süresi her yerde aynı anda dolmaz. Geçiş süresince eski ve yeni sunucunun ikisi de çalışır durumda olmalıdır.
DNS yayılımını hızlandırmanın bir yolu var mı?
Değişiklikten sonra yok; önbelleklerdeki eski cevabı uzaktan silemezsiniz. Değişiklikten önce ise var: kaydın TTL değerini en az eski TTL kadar önceden düşürün. Kendi bilgisayarınızdaki ve tarayıcınızdaki önbelleği ise temizleyebilirsiniz.
Google ya da Cloudflare DNS önbelleğini temizleyebilir miyim?
İkisi de tek bir alan adı için önbellek temizleme sayfası sunar (Google Public DNS "Flush Cache", Cloudflare 1.1.1.1 "Purge Cache"). Bu yalnız o çözücüyü etkiler; internet servis sağlayıcınızın ya da başka kullanıcıların çözücüleri kendi sürelerini doldurur.
Neden her yerde "DNS yayılımı 24-48 saat sürer" yazıyor?
Bu süre çoğunlukla NS değişikliği için geçerlidir: .com gibi uzantılarda üst alan adındaki yetkilendirme kaydının TTL'i 48 saattir. Ayrıca birçok DNS panelinin varsayılan TTL değeri bir gün olduğu için sıradan kayıt değişikliklerinde de 24 saat yaygın bir üst sınır olarak verilir. TTL'i önceden düşürdüğünüz bir A kaydı değişikliği ise dakikalar içinde tamamlanır.
Yayılım kontrol aracında bazı konumlar eski adresi gösteriyor, sorun mu var?
Değişiklikten sonraki ilk saatlerde normaldir: o konumdaki çözücünün önbelleğindeki eski cevabın süresi henüz dolmamıştır. Yetkili DNS sunucunuz doğru cevabı veriyorsa beklemek yeterlidir. Eski TTL süresi geçtiği halde aynı konum hâlâ eski adresi gösteriyorsa yetkili sunucularınızdan birinin eski bölgeyi sunup sunmadığını kontrol edin.
- #dns
- #ttl
- #dns yayılımı
- #alan adı
Alan adınızı ve DNS kayıtlarınızı tek panelden yönetin. Alan adı kaydı, transfer ve DNS düzenleme bizde.
Alan adı sorgulayın