DNS yayılımı nedir ve etkisi nasıl azaltılır?
DNS yayılımı (DNS propagation), bir kaydı yetkili ad sunucusunda değiştirdikten sonra bazı çözümleyicilerin eski değeri sunmaya devam ettiği süredir. Aslında hiçbir şey yayınlanmaz: her çözümleyici yanıtını TTL bitene kadar önbellekte tutar. Gecikme, ad sunucusu değişikliğinde birkaç dakikadan 24 veya 48 saate kadar uzanır; kaydın değişiklikten önceki TTL değerine ve ad sunucuları söz konusuysa kayıt otoritesinin yetki devri TTL değerine bağlıdır. Aşağıda nasıl çalıştığını ve etkisini nasıl azaltacağınızı anlatıyoruz.
Özet
- Değişiklik yetkili sunucuda anında görünür. Gecikme yalnızca, eski değeri TTL’si dolana kadar tutan çözümleyici önbelleklerinden kaynaklanır.
- Eski değerin ne kadar kalacağını, az önce girdiğiniz değil değişiklikten önce geçerli olan TTL belirler. Onu önceden düşürün.
- Ad sunucusu değişikliği en yavaş olanıdır, çünkü kontrol etmediğiniz kayıt otoritesinin yetki devri TTL değerine bağlıdır.
- “Bu ad yok” hataları da önbelleğe alınır: kaydı oluşturmadan önce adı açmak hatayı uzatabilir.
DNS yayılımı ne değildir: bir yayın
Terim yanıltıcıdır. Hiçbir sunucu değişikliğinizi diğerlerine göndermez. DNS sağlayıcınızda bir değişikliği kaydettiğinizde, bölgenin yetkili ad sunucusu yeni değeri hemen sunar. Gecikme başka yerde, önbelleklerde oluşur.
Bir cihaz bir alan adının adresini aradığında istek birkaç katmandan geçer ve her biri yanıtı hatırlayabilir:
- önbelleği genellikle yaklaşık bir dakika süren ve TTL’ye her zaman uymayan tarayıcı;
- son yanıtları saklayan işletim sistemi;
- internet sağlayıcınızın veya genel bir hizmetin (örneğin Google’da 8.8.8.8, Cloudflare’de 1.1.1.1) özyinelemeli çözümleyicisi; DNS hiyerarşisini dolaşır ve sonucu saklar.
Her çözümleyici, yanıtı önbelleğe aldığı anda yetkili sunucunun verdiği TTL değerini uygular. Hepsi aynı anda sormadığı için kopyaları farklı zamanlarda dolar. 5 dakika önce önbelleğe alınmış, TTL’si 3600 saniye olan bir kayıt 55 dakika sonra yenilenir. Bu yüzden çelişkili bildirimler gelir: biri yeni siteyi görür, biri eskisini, üçüncüsü hata alır.
DNS yayılımı ne kadar sürer
Süre değişikliğin türüne bağlıdır. Bir günlük TTL (86.400 saniye) yaygındır; ad sunucuları gibi nadiren değişen kayıtlarda değerler daha yüksektir.
| Değişiklik türü | Tipik süre | Neyi belirler |
|---|---|---|
| Var olan bir kaydı düzenleme (A, AAAA, CNAME, MX, TXT) | Eski TTL süresine kadar, yapılandırmaya göre birkaç dakikadan 24 saate | Düzenlemeden önce geçerli olan TTL |
| Daha önce olmayan bir kayıt oluşturma | Değişken, genellikle en fazla birkaç saat | Bölgenin SOA kaydı (SOA TTL ve MINIMUM alanı) |
| Alan adı kayıt şirketinde ad sunucularını değiştirme | Birkaç saatten 48 saate | Kayıt otoritesinin yetki devri TTL değeri, çoğunlukla bir ila iki gün |
| Kendi sınırları olan çözümleyici | Bildirilen TTL’yi aşabilir | Yapılandırılmış bir üst veya alt sınır (Unbound’da varsayılan 86.400 sn, BIND’de 604.800 sn) |
Gecikmeyi belirleyen üç etken
Değişiklikten önceki TTL
Bir kaydın TTL’si 86.400 saniye olsun ve bugün 300’e düşürün. Kaydı dün önbelleğe almış bir çözümleyici, yeni değer ne olursa olsun eski değeri 24 saate kadar tutar: 300 saniyelik TTL ancak kopyası yenilendikten sonra geçerli olur. CNAME’de zincirdeki her adın kendi TTL’si vardır ve en uzunu toplam gecikmeyi belirler.
Kayıt otoritesindeki yetki devri
Ad sunucularını değiştirdiğinizde değişiklik alan adı kayıt şirketinde yapılır, o da bunu üst düzey alan adının kayıt otoritesine iletir. Eski ad sunucusu listesini hâlâ bilen çözümleyiciler, yetki devri sona erene kadar onları sorgulamaya devam eder. Bu TTL kayıt otoritesine aittir: kısaltamazsınız.
TTL’yi harfiyen izlemeyen çözümleyiciler
Bazı çözümleyiciler TTL değerlerini sınırlar veya yükseltir, tarayıcıların da kısa ömürlü kendi önbelleği vardır. Bu yüzden her yerde aynı sürenin geçerli olacağı garanti edilemez. TTL kuramsal bir sınırdır, tüm önbelleklerin verdiği bir söz değildir.
Negatif önbellek tuzağı
Çoğu rehber kayıtların TTL değerini anlatır ve olumsuz yanıtları unutur. Bir çözümleyici bir adın var olmadığını (NXDOMAIN yanıtı) ya da istenen türde kaydı olmadığını öğrendiğinde bu yokluğu hatırlayabilir. RFC 2308, negatif önbellek süresini iki değerden küçüğü olarak belirler: bölgenin SOA TTL değeri ve MINIMUM alanı. Bir ila üç saati makul bulur ve bir günü aşan değerlerin sorun çıkardığını belirtir.
Tipik senaryo: kaydı oluşturmadan önce yeni.example.com adını denersiniz, hata alırsınız, sonra kaydı oluşturursunuz. Kayıt bir dakikadır yayında olsa bile çözümleyiciniz için ad, negatif önbellek bitene kadar “yoktur”. Nasıl kaçınılır:
- adı denemeden veya duyurmadan önce kaydı oluşturun;
- DNS sağlayıcınız SOA ayarına izin veriyorsa MINIMUM alanını ölçülü tutun;
- “çalışmıyor” sonucuna varmadan önce yerel önbelleği temizleyin: Microsoft,
ipconfig /flushdnskomutunun negatif önbellek girdilerini de attığını belirtir.
Taşımanın etkisini sınırlama yöntemi
- Güncel TTL değerini not edin, ilgili her kayıt için (komutlar aşağıda). Gecikmeyi belirleyen odur.
- TTL değerini 300 saniyeye düşürün; en az eski TTL süresi kadar önceden yapın. 86.400 saniyede geçişten 24 ila 48 saat önce yapın. Sağlayıcınızın kabul ettiği alt sınırı kontrol edin.
- Yeni hedefi hazırlayın: eskisiyle aynı içeriği sunmaya hazır site, posta sunucusu veya CDN. Geçiş sırasında ikisi de çalışmalıdır.
- Kaydı değiştirin, neyi kontrol edeceğinizi bilmek için her seferinde tek bir değişiklik.
- Doğrulayın: önce yetkili sunucuyu, sonra genel çözümleyicileri.
- Eski sunucuyu çalışır tutun, en az en uzun eski TTL dolana kadar, sonra kapatın.
- TTL değerini yeniden yükseltin (3600 saniye veya daha fazla), her şey kararlı olduğunda.
Ad sunucusu değişikliğinde önce bölgenin tamamını yeni sağlayıcıda yeniden oluşturun (A, CNAME, MX, SPF ve DKIM dahil TXT ve geri kalan her şey), doğru yanıt verdiğini kontrol edin, ancak sonra ad sunucularını kayıt şirketinde değiştirin. Eski sağlayıcıdaki bölgeyi 48 saat boyunca açık ve aynı tutun: eski yetki devrini hâlâ bilen çözümleyiciler onu sorgulamayı sürdürür.
Her çözümleyicinin ne gördüğünü kontrol etme
dig (macOS, Linux) veya nslookup (Windows) komutuyla yetkili sunucunun ve birkaç genel çözümleyicinin yanıtlarını karşılaştırabilirsiniz.
# Genel çözümleyicilerin gördüğü değer ve kalan TTL
dig +noall +answer example.com A @8.8.8.8
dig +noall +answer example.com A @1.1.1.1
# Alan adı için tanımlı ad sunucuları
dig +short NS example.com
# Yetkili sunucunun verdiği değer (kendi ad sunucunuzla değiştirin)
dig +noall +answer example.com A @ns1.dns-saglayici.example
# SOA seri numarası, ad sunucuları arasında karşılaştırmak için
dig +short SOA example.com @ns1.dns-saglayici.example
dig +short SOA example.com @ns2.dns-saglayici.example
# Windows karşılığı
nslookup -type=A example.com 8.8.8.8
nslookup -type=NS example.com
Bir çözümleyicinin yanıtında görünen TTL, sorgudan sorguya azalır: kopyasının dolmasına kalan süredir. Bir çözümleyici eski değeri geri sayan bir TTL ile döndürürken yetkili sunucu yeni değeri zaten veriyorsa, yalnızca beklemeniz yeterlidir.
Ad sunucularınızın SOA seri numarasını da karşılaştırın. Farklıysa bir sunucu eski veri sunuyordur: sorun yayılımda değil, DNS sağlayıcınızdadır. dns.google sayfası SOA dahil belirli bir kayıt türünü sorgulamanıza izin verir, Google Public DNS sorun giderme kılavuzu da bu kontrolü anlatır.
Kontrol ettiğiniz önbellekleri temizleme
Kendi önbelleğinizi temizlemek diğer ziyaretçiler için hiçbir şeyi değiştirmez ama gerçekte ne gördüğünüzü gösterir.
# Windows (komut istemi)
ipconfig /flushdns
# Güncel macOS
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
# systemd-resolved kullanan Linux
resolvectl flush-caches
Microsoft, /flushdns ve /displaydns parametrelerini ipconfig komut sayfasında anlatır. Ardından tarayıcıyı tamamen kapatın; kendi kısa süreli belleği vardır.
İki genel çözümleyici temizleme de sunar; ad sunucusu değişikliğinden sonra veya bunları kullananlar için işe yarar: Google Public DNS Flush Cache aracı (Google, hem kayıtlı alan adını hem de eski yanıt döndüren tam adı temizlemenizi önerir) ve Cloudflare’in 1.1.1.1 önbellek temizleme aracı; burada alan adı ve kayıt türü seçilir. İnternet sağlayıcılarının çözümleyicileri temizlenemez: kopyalarının dolmasını beklemeniz gerekir.
Sık yapılan hatalar
- TTL’yi geçiş anında düşürmek. Çok geçtir: çözümleyiciler eski TTL ile yapılmış kopyayı tutar.
- Kaydı oluşturmadan adı denemek. Negatif önbellek hatayı uzatabilir.
- Bölgenin tamamını yeniden oluşturmadan ad sunucularını değiştirmek. Unutulan e-posta veya alt alan adı kayıtları, yeni sağlayıcıyı sorgulayan çözümleyiciler için çalışmaz.
- Eski sunucuyu çok erken kapatmak. Önbelleği dolmamış ziyaretçiler artık yanıt vermeyen bir sunucuya düşer.
- Yayılımın bittiğine kendi bilgisayarınızdan karar vermek. Yerel önbelleğiniz diğer çözümleyicileri temsil etmez.
- Çok düşük bir TTL’yi kalıcı bırakmak. Ad sunucularınıza gelen sorguları çoğaltır. Taşıma bitince yeniden yükseltin.
Sık sorulan sorular
DNS yayılımı ne kadar sürer?
Bir kaydı düzenlediğinizde en fazla eski TTL süresi kadar: 3600 saniyelik TTL ile bir saat, 86.400 saniyeyle 24 saat. Ad sunucusu değişikliğinde birkaç saatten 48 saate. Çoğu çözümleyici azami sürenin çok öncesinde güncellenir. Geriye yalnızca birkaç geç kalmış önbellek kalır.
DNS yayılımı hızlandırılabilir mi?
Tüm internet genelinde hayır: başkalarının önbelleklerini zorlayamazsınız. Değişiklikten önce TTL’yi düşürebilir, Google ve Cloudflare’in genel çözümleyicilerini temizleyebilir ve kendi önbelleklerinizi boşaltabilirsiniz. İnternet sağlayıcılarının çözümleyicileri temizlenemez.
Taşımadan önce hangi TTL seçilmeli?
300 saniye (5 dakika) gibi kısa bir değer; geçişten önce en az eski TTL süresi kadar uygulanmalı. Taşıma kararlı olunca 3600 saniyeye veya daha fazlasına yükseltin: kalıcı olarak çok düşük bir TTL sorguları çoğaltır. DNS sağlayıcınızın kabul ettiği alt sınırı kontrol edin.
Meslektaşım yeni siteyi görüyor, ben neden görmüyorum?
Farklı çözümleyicilerden geçiyorsunuz; yanıtı farklı zamanlarda önbelleğe aldılar. Karşılaştırmak için iki bilgisayardan da aynı genel çözümleyiciyi sorgulayın, ardından eski sürümü hâlâ gören bilgisayarın yerel önbelleğini temizleyin.
Yayılım sırasında e-postalarıma ne olur?
MX değişikliği de aynı kurallara tabidir: gecikme süresince bazı göndericiler hâlâ eski posta sunucusuna yazar. Geçiş bitene kadar onu açık tutun. Bir sunucu erişilemezse gönderen sunucular genellikle iletileri saklar ve birkaç gün boyunca yeniden dener.
Bilgisayarımın önbelleğini temizlemeli miyim?
Evet, ne gördüğünüzü doğrulamak için; ama diğer ziyaretçiler için hiçbir şey değişmez. Sisteminizin komutunu kullanın ve tarayıcıyı tamamen kapatın. Değer hâlâ eskiyse kopyayı internet sağlayıcınızın çözümleyicisi tutuyordur.
Çevrimiçi yayılım denetleyicileri neden farklı sonuçlar gösterir?
Her biri farklı ülkelerdeki çözümleyicileri sorgular ve onlar yanıtı farklı zamanlarda önbelleğe almıştır. TTL her yerde dolana kadar karışık sonuç normaldir. Yetkili ad sunucularının kendileri farklı yanıt veriyorsa SOA seri numaralarını karşılaştırın: sorun o zaman yayılımda değil, bölgededir.