DNS Önbelleği Nasıl Temizlenir? Windows, macOS ve Linux İçin
DNS kayıt değişikliği yapıldıktan sonra "neden hâlâ eski adresi görüyorum?" sorusu, sistemlerin yanlış çalışmasından değil çoğunlukla yerel önbellekten (cache) kaynaklanır. İşletim sisteminiz ve tarayıcınız, her DNS sorgusunu yeniden yapmaktan kaçınmak için önceki yanıtları hafızasına alır; bu karar performans açısından mantıklıdır, ancak değişikliklerin anlık görünmesini engeller.
Propagation süreci iki ayrı katmanda ilerler: birincisi yetkili nameserver'ların yeni kaydı dünyaya duyurması, ikincisi bu yeni kaydın yerel çözümleyicilere ve kullanıcı cihazlarına ulaşması. TTL değeri düşük tutulmuş bir kayıt, recursive DNS sunucularından saatler içinde temizlenebilir; ama bilgisayarınız veya router'ınız eski değeri saatlerce taşıyabilir.
Windows, macOS ve Linux'ta önbellek ayrı katmanlarda durur; birini boşaltmak diğerini dokunulmamış bırakır. Tarayıcı kendi çözümlemesini ayrıca tutar. Flush, kayıt henüz otoritede yanlışsa hiçbir şey düzeltmez; doğrulama dig ile otoriteye bakarak yapılır.
DNS Önbelleği Neden Yanıltıcı Sonuçlar Verir?
DNS sorgusunu ilk gerçekleştiren taraf bilgisayarınızdaki stub resolver'dır. Bu bileşen, yanıtı alınca kayıt türüne ve TTL değerine göre hafızasında tutar. Bir sonraki sorgu aynı domain için geldiğinde, ağa çıkmadan önce önbellekteki kaydı döndürür. Bu davranış normal ve kasıtlıdır; çoğu durumda DNS trafiğini önemli ölçüde azaltır.
Sorun, bir A kaydını veya CNAME'i güncelledikten sonra ortaya çıkar. Yetkili nameserver hemen yeni değeri sunar; ancak bilgisayarınız eski TTL süresi dolana kadar kendi deposundaki eski kaydı kullanır. Yanlış kayıt hâlâ otoritedeyse rollback flush'tan önce gelir. Özellikle TTL önceden yüksek bırakılmışsa, 3600 saniye veya daha fazlası yaygındır, bu bekleme ciddi bir süreye uzayabilir. Değişiklik öncesinde TTL'i geçici olarak 300 saniyeye düşürmek bu pencereyi daraltan standart bir yöntemdir; ancak bu düşüşün etkili olabilmesi için eski TTL süresi kadar önceden yapılması gerekir.
Propagation testi sırasında bir online DNS sorgulama aracı yeni IP'yi gösterse de kendi tarayıcınız eski siteyi açıyorsa, sorun nameserver'larda değil kendi önbelleğinizdedir. Temizleme komutunu çalıştırmak bu durumu dakikalar içinde çözer. Önce doğru katmanı hedef aldığınızdan emin olun: işletim sistemi önbelleği ve tarayıcı önbelleği farklı yerlerdir, biri temizlendiğinde diğeri otomatik sıfırlanmaz.
Windows'ta DNS Önbelleği Temizleme
Windows, DNS çözümlemelerini kendi önbellek servisi (DNS Client) üzerinden yönetir. Komut İstemi veya PowerShell'i yönetici olarak açmanız yeterlidir; her iki ortam da aynı komutu kabul eder.
ipconfig /flushdns
Komut başarıyla çalıştığında "Windows IP Yapılandırması: DNS Çözümleyici Önbelleği Başarıyla Temizlendi" mesajını görürsünüz. Windows 10 ve 11'de ek bir adım gerekmez.
Temizleme sonrası önbellekte ne kaldığını görmek isterseniz şu komutu kullanabilirsiniz:
ipconfig /displaydns
Bu komut, o an önbellekte tutulmuş kayıtları ve kalan TTL sürelerini listeler. Temizleme doğru çalıştıysa liste boş gelir ya da yalnızca az önce yapılan sorgular görünür.
PowerShell üzerinden daha sessiz bir alternatif de mevcuttur:
Clear-DnsClientCache
Bu komut herhangi bir çıktı vermez ve otomasyon betiklerinde tercih edilir. Betik içinde temizlemenin gerçekleştiğini doğrulamak için hemen ardından Get-DnsClientCache çalıştırabilirsiniz; boş sonuç döndürmesi önbelleğin sıfırlandığını gösterir.
Windows'ta DNS Client servisi bazen sorun çıkarabilir. Komut doğru görüntülense bile servis çökmüş olabilir. Şüphe duyarsanız services.msc üzerinden "DNS Client" servisini yeniden başlatabilirsiniz ya da PowerShell'den şunu çalıştırabilirsiniz:
net stop dnscache && net start dnscache
macOS'ta DNS Önbelleği Temizleme
macOS, sürümler arasında komut sözdizimi farklılaşan bir platformdur. Yanlış komut hata vermeden hiçbir şey yapmayabilir; bu yüzden hangi sürümü kullandığınıza göre doğru komutu seçin.
macOS Ventura, Monterey, Big Sur ve sonrası:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
macOS Catalina ve Mojave:
sudo killall -HUP mDNSResponder
macOS Sierra ve High Sierra:
sudo killall -HUP mDNSResponder
sudo dscacheutil -flushcache
Komutlar Terminal uygulamasında çalıştırılır. sudo kullandığınız için sistem şifrenizi girmeniz istenir; bu normaldir. Başarılı bir işlem genellikle hiçbir çıktı üretmez; komut satırı tekrar görünüyorsa işlem tamamlanmıştır.
mDNSResponder, macOS'ta DNS çözümlemesini yöneten merkezi servistir. -HUP sinyali bu servisi yeniden başlatmadan önbelleği sıfırlar; servis çalışmaya devam eder, yalnızca önbelleği boşaltır. Bu yüzden komut sonrasında mevcut bağlantılar kesilmez ve açık uygulamaları kapatmanıza gerek kalmaz.
Sürümünüzü bilmiyorsanız sol üst köşedeki Apple menüsü - Bu Mac Hakkında yolundan öğrenebilirsiniz. Eski macOS sürümlerinde farklı komutlar geçerliydi; ancak bu sürümler güvenlik güncellemesi almadığından üretim ortamında kullanılması önerilmez.
Linux'ta DNS Önbelleği Temizleme
Linux dağıtımları arasında DNS önbellek yönetimi daha çeşitlidir. Hangi servisin kurulu olduğuna göre komut değişir. Önce sistemde hangi DNS daemon'ının çalıştığını tespit edin:
systemctl status systemd-resolved
systemctl status nscd
systemctl status dnsmasq
Aktif olan servise göre aşağıdaki komutlardan birini kullanın.
systemd-resolved kullanan sistemler (Ubuntu 18.04+, Fedora, Debian 12+):
sudo systemd-resolve --flush-caches
Daha yeni systemd sürümlerinde alternatif komut:
sudo resolvectl flush-caches
Temizleme sonrası önbellek istatistiklerini doğrulamak için:
sudo resolvectl statistics
nscd (Name Service Cache Daemon) kullanan sistemler:
sudo service nscd restart
dnsmasq kullanan sistemler:
sudo service dnsmasq restart
Bazı minimal Linux kurulumlarında yerel DNS önbelleği hiç yoktur. Bu durumda işletim sistemi her sorguyu doğrudan yapılandırılmış DNS sunucusuna gönderir ve temizleme adımı gereksizdir. Bunu teyit etmek için /etc/resolv.conf dosyasını inceleyip 127.0.0.53 veya 127.0.0.1 gibi loopback adreslerinin listelenip listelenmediğine bakabilirsiniz; bu adresler yerel bir çözümleyicinin varlığına işaret eder.
Sunucu ortamlarında, özellikle yük dengeleyici veya ters vekil kullanan yapılarda, her düğüm kendi önbelleğini tutar. Birden fazla sunucu varsa temizleme işlemini her birinde ayrı ayrı çalıştırmanız gerekebilir; betik tabanlı SSH döngüsü bu adımı tek seferde yapmanızı sağlar.
Tarayıcı DNS Önbelleği Ayrı Bir Sorundur
İşletim sistemi DNS önbelleği temizlense bile tarayıcı kendi DNS önbelleğini koruyabilir. Chrome ve Chromium tabanlı tarayıcılar buna özellikle dikkat çekicidir; işletim sistemi düzeyinde yapılan temizliğe rağmen eski IP'yi sunmaya devam edebilirler.
Chrome ve Edge için DNS önbelleğini temizlemek üzere adres çubuğuna şunu yazın:
chrome://net-internals/#dns
Açılan sayfada "Clear host cache" düğmesine tıklayın. Aynı sayfada "Sockets" sekmesine geçip "Flush socket pools" seçeneğini de çalıştırmanız önerilir; açık soket bağlantıları eski DNS bilgisini bir süre daha taşıyabilir ve salt önbellek temizlemesi bu durumu çözmez.
Firefox, tarayıcı yeniden başlatıldığında DNS önbelleğini genellikle sıfırlar; ek bir adım gerekmez. Yeniden başlatmak istemiyorsanız about:config üzerinden network.dnsCacheExpiration değerini geçici olarak 0 yapıp ardından eski değerine döndürmek de önbelleği temizler.
Tarayıcı DNS önbelleği ile işletim sistemi DNS önbelleği bağımsız çalışır. Birini temizlemek diğerini etkilemez. Propagation sorunlarını test ederken her ikisini de temizlemek daha güvenilir sonuç verir.
Sık DNS değişikliği yapılan ortamlarda, örneğin özel domain ayarlarken, her iki önbelleği temizlemek standart bir alışkanlık haline getirin. Bu adımı atlamak, sorunun hâlâ devam ettiği izlenimi verebilir; oysa kayıt zaten doğru yayınlanmış olabilir.
Önbellek Temizleme Ne Zaman Sorunu Çözmez?
Önbelleği temizlemek yalnızca yerel katmandaki eski veriyi siler. Sorunun kaynağı başka bir yerdeyse temizleme işe yaramaz. Bu ayrımı erken görmek vakit kazandırır.
ISP'nin recursive sunucusu hâlâ eski kaydı tutuyorsa: Bilgisayarınız DNS sorgusunu genellikle internet sağlayıcınızın recursive sunucusuna iletir. O sunucunun önbelleği de TTL süresine göre dolana kadar devam eder. Bu durumda DNS sunucu ayarını geçici olarak 1.1.1.1 veya 8.8.8.8 gibi bağımsız bir adrese çevirmek, ISP önbelleğini atlayarak doğrudan sorgu yapmanızı sağlar. Subdomain yapılandırması üzerinde çalışıyorsanız bu adımı test sürecine dahil etmek iyi bir alışkanlıktır.
TTL süresi henüz dolmadıysa: Bir nameserver TTL'i dikkate almak zorundadır. 86400 saniyelik (24 saatlik) bir TTL ile yapılan kayıt değişikliği, en az 24 saat boyunca dünya genelindeki çözümleyicilerde eski değerle karşılaşabileceğiniz anlamına gelir. Değişiklik öncesinde TTL'i düşürmemiş olmak bu durumu kaçınılmaz kılar.
Kayıt henüz yetkili nameserver'da yayınlanmadıysa: Bazı kontrol panellerinde kayıt güncelleme işlemi anlık gerçekleşmez. Panel "kaydedildi" dese de nameserver'a propagate olması dakikalar veya daha uzun sürebilir. Durumu netleştirmek için yetkili nameserver'ı doğrudan sorgulayın:
nslookup example.com ns1.nameserver.com
Nameserver doğrudan sorgulandığında eski değer dönüyorsa sorun yerel önbellekte değil, kaynaktadır. Yerel temizleme bu durumda yardım etmez.
Router önbelleği: Ev ve ofis router'larının büyük çoğunluğu da DNS önbelleği tutar. Bilgisayarı yeniden başlatmak router'ı sıfırlamaz. Router'ı yeniden başlatmak veya Wi-Fi bağlantısını kesip tekrar açmak bu katmanı temizler. Kurumsal yönlendiricilerde yönetim arayüzünden DNS servisini yeniden başlatmak da aynı etkiyi verir ve ağı kesmeden yapılabilir.
DNS önbelleği temizleme, karmaşık görünse de aslında basit bir doğrulama adımıdır. Kayıt değişikliği yaptıktan sonra önce yerel önbelleği temizleyin, ardından tarayıcı önbelleğini de sıfırlayın; sorun devam ediyorsa DNS sunucusunu geçici olarak bağımsız bir adrese çevirip tekrar test edin.
Google Workspace veya Microsoft 365 gibi servislerin DNS kayıtlarını kurarken propagation testi sırasında bu adımları uygulamak, kurulumun gerçekten tamamlanıp tamamlanmadığını daha net görmenizi sağlar. Yerel önbellekten gelen yanıtlar "başarılı" gösterse bile servis henüz aktif olmayabilir; tersi de geçerlidir.
Domain transferi sonrasında nameserver değişikliği yapıldıysa önbellek temizleme tek başına yetmeyebilir. TTL sürelerini ve ISP önbellek durumunu da göz önünde bulundurun; gerekirse recursive DNS sunucusunu değiştirerek testi tekrarlayın.