Kurumsal Network Kurulumu

DNS Önbelleği Temizleme: flushdns, Chrome ve DNS Sunucusu

DNS önbelleği temizleme: Windows'ta ipconfig /flushdns, Chrome'da net-internals, sunucuda Clear-DnsServerCache. Hangisi neyi siler, ölçümleriyle anlattık.

İlker Pehlivan

DNS önbelleğini Windows’ta ipconfig /flushdns komutu temizler ve bunun için yönetici yetkisi gerekmez. Ama bu komut yalnız bilgisayarın kendi önbelleğini siler. Chrome adları kendisi çözer ve kendi önbelleğini tutar, flushdns ona dokunmaz. Bilgisayarın soru sorduğu DNS sunucusunun önbelleği de olduğu yerde kalır. Temizlikten sonra hâlâ eski adresi görüyorsanız bakılacak yer bu iki katmandır.

DNS nedir yazısında DNS’i bilinmeyen numaralar servisine benzetmiştik: ismi siz bilirsiniz, numarayı santral görevlisi bulur, siz de öğrendiğiniz numarayı deftere yazarsınız. Önbelleği temizlemek o defterden sayfa koparmaktır. Bir sonraki aramada numarayı yine santral görevlisine sorarsınız. Santral görevlisinin önündeki kart da eskiyse aynı eski numarayı ikinci kez alırsınız.

DNS önbelleği temizleme benzetmesi: masasında oturan bir adam not defterinin sayfasını kaldırıyor, yanındaki eski telefonun dibinde küçük bir not kâğıdı duruyor, arkada santral görevlisi kart dolabının önünde eski bir kartı okuyor
Defterden koparılan sayfa flushdns'tir. Telefonun dibindeki not tarayıcının, santral görevlisinin elindeki eski kart DNS sunucusunun önbelleğidir ve ikisi de yerinde kalır.

Bu yazıdaki her komutu üç makinede çalıştırdım: bir Windows 11 iş istasyonu, Windows Server 2025 üzerinde çalışan iç DNS sunucusu ve bir Ubuntu 24.04 sunucusu. Sonuçların bir kısmı beklenenden farklı çıktı. flushdns’ten sonra gelen cevap taze değildi, Chrome’da açılan adlar Windows önbelleğine hiç düşmedi ve 8.8.8.8’e gönderdiğim soruları Google’dan başka biri cevapladı.

Kurumsal ağlarda DNS’i nasıl kurduğumuzu kurumsal ağ kurulumu hizmetimizde anlattık. Komutu arıyorsanız doğrudan Windows bölümüne geçebilirsiniz.

DNS Önbelleği Ne Zaman Temizlenir?

DNS önbelleği sorun giderirken temizlenir, bakım işi olarak değil. Microsoft’un ipconfig belgesi de komutu böyle tarif ediyor: sorun giderme sırasında olumsuz cevapları ve sonradan öğrenilmiş kayıtları atmak için. Temizlemenin işe yaradığı üç durum vardır:

  1. Kayıt değişti, bu bilgisayar hâlâ eski adrese gidiyor. Örnekteki defterde eski numara silinmeden yenisi sorulmaz.
  2. Kaydı eklemeden önce adı sorguladınız. “Böyle bir ad yok” cevabı da önbelleğe girer ve kayıt eklendikten sonra da bir süre geri gelir.
  3. Bir site adıyla açılmıyor, IP adresiyle açılıyor. Arıza DNS’te olabilir ve temizlik onu sınamanın en ucuz yoludur.

Bilgisayarı hızlandırmak için düzenli temizlemek ise işe yaramaz, tersine çalışır. Beş farklı adı önce önbellek boşken, sonra hemen ikinci kez çözdüm. Sunucuya giden ilk sorgu 70 ile 87 milisaniye sürdü, önbellekten gelen ikinci cevap 0,64 ile 1,13 milisaniye. Temizlik bir şey bozmaz. Yalnız her adın ilk sorgusunu bu kadar uzatır.

Önbellek Üç Katmanda Durur: Hangi Komut Neyi Siler?

Bir DNS cevabı tek bir yerde değil, üç ayrı yerde saklanır. Her birini başka bir komut temizler ve hepsini aynı kişi temizleyemez:

KatmanNerede dururNasıl temizlenirKim temizleyebilir
TarayıcıChrome, Edge ve Firefox’un kendi belleğichrome://net-internals/#dns, Clear host cacheKullanıcı
İşletim sistemiWindows’ta DNS Client servisi, Ubuntu’da systemd-resolvedipconfig /flushdns, resolvectl flush-cachesKullanıcı, Linux’ta sudo ile
ÇözümleyiciKurumun iç DNS sunucusu, firewall, servis sağlayıcı, Public DNSClear-DnsServerCache, Google ve Cloudflare’in web araçlarıSunucunun yöneticisi, Public DNS’te tek ad için herkes

Örnekteki bilinmeyen numaralar servisinde karşılıkları şöyledir:

  • Tarayıcının önbelleği telefonun ekranına yapıştırdığınız küçük not kâğıdıdır. Defteri yırtsanız da kâğıt orada durur.
  • İşletim sisteminin önbelleği cebinizdeki defterdir. flushdns bu defterin sayfalarını koparır.
  • Çözümleyicinin önbelleği santral görevlisinin önündeki kart dosyasıdır. Ona yalnız santralin kendisi dokunabilir.
DNS önbelleğinin üç katmanı ve iki sorgu yolu. Windows'ta Chrome soruyu önce kendi belleğine, yani not kâğıdına sorar. Orada yoksa işletim sisteminin önbelleğine uğramadan doğrudan çözümleyiciye gider. Bu belleği Chrome'un Clear host cache düğmesi temizler. Diğer programlar önce işletim sisteminin önbelleğine, yani deftere bakar. Bu önbelleği ipconfig /flushdns temizler, hosts dosyasındaki satırlar ise kalır. İki yol çözümleyicinin önbelleğinde, yani santral görevlisinin kart dosyasında birleşir. Onu yalnız sunucunun yöneticisi Clear-DnsServerCache ile temizler. Çözümleyici yetkili sunucuya ancak elindeki kaydın TTL süresi dolunca yeniden sorar. Üç önbellek, iki yol: Chrome deftere uğramaz Chrome diğer programlar not kâğıdı defter kart dosyası Chrome'un belleği Windows DNS Client çözümleyici Clear host cache ipconfig /flushdns Clear-DnsServerCache yalnız yöneticisi siler hosts satırları kalır TTL dolunca kaydın aslı yetkili sunucu deftere uğramaz Her önbelleği başka bir komut siler. flushdns yalnız defteri boşaltır. Windows'ta Chrome soruyu deftere bırakmaz, çözümleyiciye kendisi sorar. Çözümleyicideki kart eskiyse iki yol da aynı eski cevabı alır. Kart, TTL dolunca yenilenir. DNS önbelleğinin üç katmanı ve iki sorgu yolu. Windows'ta Chrome soruyu önce kendi belleğine, yani not kâğıdına sorar. Orada yoksa işletim sisteminin önbelleğine uğramadan doğrudan çözümleyiciye gider. Bu belleği Chrome'un Clear host cache düğmesi temizler. Diğer programlar önce işletim sisteminin önbelleğine, yani deftere bakar. Bu önbelleği ipconfig /flushdns temizler, hosts dosyasındaki satırlar ise kalır. İki yol çözümleyicinin önbelleğinde, yani santral görevlisinin kart dosyasında birleşir. Onu yalnız sunucunun yöneticisi Clear-DnsServerCache ile temizler. Çözümleyici yetkili sunucuya ancak elindeki kaydın TTL süresi dolunca yeniden sorar. Üç önbellek, iki yol: Chrome deftere uğramaz Chrome diğer programlar not kâğıdı defter kart dosyası Chrome'un belleği Windows DNS Client çözümleyici · yalnız yöneticisi siler Clear host cache ipconfig /flushdns Clear-DnsServerCache hosts satırları kalır TTL dolunca kaydın aslı yetkili sunucu deftere uğramaz Her önbelleği başka bir komut siler. flushdns yalnız defteri boşaltır. Windows'ta Chrome soruyu deftere bırakmaz, çözümleyiciye kendisi sorar. Kart eskiyse iki yol da aynı eski cevabı alır.
Soru önce en yakın önbelleğe bakar ve cevabı orada bulursa bir sonrakine gitmez. Eski cevap hangi önbellekteyse silinmesi gereken de odur.

Windows’ta DNS Önbelleği Temizleme: ipconfig /flushdns

Üç katmanın en bilineni bilgisayarın kendisidir ve Windows’ta onu tek komut temizler. Yönetici olmayan bir oturumda ipconfig /flushdns ve PowerShell karşılığı Clear-DnsClientCache hatasız çalıştı. Microsoft’un Clear-DnsClientCache belgesi iki komutun aynı işi yaptığını yazıyor. Adımlar şunlardır:

  1. Start menüsüne cmd yazın ve Command Prompt’u açın. Run as administrator seçmeniz gerekmez.
  2. Önbellekte ne olduğunu görmek isterseniz ipconfig /displaydns yazın.
  3. Önbelleği temizlemek için ipconfig /flushdns yazın.
CMD
ipconfig /flushdns
Çıktı
Windows IP Configuration

Successfully flushed the DNS Resolver Cache.

PowerShell’de aynı iş iki komutla görülür. Birincisi önbelleği listeler, ikincisi boşaltır:

PowerShell
Get-DnsClientCache
Clear-DnsClientCache

flushdns Sonrası Kalan Kayıtlar: hosts Dosyası

flushdns önbelleği sıfırlamaz, yalnız sonradan öğrenilmiş cevapları siler. Benim bilgisayarımda temizlikten önce 9 kayıt vardı, hemen sonra 3 kayıt kaldı. Kalan üç kayıt bilgisayarın kendi adına aitti:

Çıktı
Entry                     Type Status Section TimeToLive Data
-----                     ---- ------ ------- ---------- ----
1.240.27.172.in-addr.arpa   12      0       1     447312 ilker-ev.mshome.net
ilker-ev.mshome.net          1      0       1     447312 172.27.240.1
ilker-ev.mshome.net         28   9501       0          0

Bu satırlar hiçbir DNS sunucusundan gelmedi. Kaynakları C:\Windows\System32\drivers\etc\hosts.ics dosyasıdır: Windows’un bağlantı paylaşımı özelliğinin hosts dosyasının yanına yazdığı ikinci bir dosya. Microsoft’un ipconfig belgesi bu ayrımı açıkça yapıyor. /displaydns hosts dosyasından önceden yüklenen kayıtları da gösterir, /flushdns ise yalnız sonradan eklenenleri atar. Örnekteki defterin ilk sayfasına tükenmez kalemle yazdığınız numaralar sayfa koparınca gitmez.

Pratik sonucu şudur: hosts dosyasına elle yazılmış bir satır flushdns’ten sağ çıkar. Bir ad flushdns’e rağmen hep aynı yanlış adrese gidiyorsa sebep hosts dosyasındaki bir satır olabilir. Temizlikten birkaç saniye sonra listeye yeni satırlar da döner, çünkü arka planda çalışan uygulamalar adlarını hemen yeniden sorar.

Olumsuz Cevap Windows 11’de Beş Saniye Yaşıyor

“Böyle bir ad yok” cevabı da önbelleğe girer, ama Windows 11’de çok kısa süre. Var olmayan üç adı sorgulayıp önbelleği yarım saniyede bir okudum. Olumsuz kayıt üçünde de 4 ile 6 saniye arasında düştü.

Bu süre DNS’in kendi kuralından gelmiyor. RFC 2308 bu süreyi alan adının SOA kaydına bağlar ve sorguladığım alan adının SOA değeri 3600 saniyeydi. Windows bu süreyi kendi üst sınırıyla kesiyor. Microsoft’un güncel belgelerinde istemci tarafındaki varsayılan değeri bulamadım, yukarıdaki sayı ölçümdür.

Bu, yukarıdaki ikinci durumu değiştirir. Kaydı eklemeden önce sorguladıysanız bilgisayarınızdaki olumsuz cevap birkaç saniyede kendiliğinden düşer. Kayıt eklendikten sonra hâlâ “bulunamadı” alıyorsanız bekleten büyük ihtimalle bilgisayar değil, aradaki DNS sunucusudur. Windows Server’ın DNS rolü olumsuz cevapları fabrika ayarında 15 dakikaya kadar tutar.

Chrome ve Edge’de DNS Önbelleği Temizleme: net-internals

Windows önbelleğini temizlediniz. Ama Chrome o önbelleği hiç kullanmıyor olabilir. Bunu sınamak için Chrome’da daha önce açılmamış iki adres açtım: example.org ve www.iana.org. İkisi de Windows önbelleğine düşmedi. Aynı adı .NET ile, yani işletim sisteminin yoluyla çözünce kayıt hemen önbellekte göründü.

Sebebi Chrome’un kendi DNS istemcisidir. Chromium’un özellik listesinde AsyncDns adlı yerleşik çözümleyici Windows için fabrika ayarında açık. Chrome sistemin DNS sunucusu ayarını okur, ama soruyu Windows’un DNS Client servisine bırakmaz, kendisi sorar ve cevabı kendi belleğinde tutar. Bu yüzden flushdns Chrome’un notuna dokunmaz. Chrome’un önbelleği ayrı bir sayfadan temizlenir:

  1. Adres çubuğuna chrome://net-internals/#dns yazın. Edge’de adres edge://net-internals/#dns olur, sayfa aynıdır.
  2. Clear host cache düğmesine basın.
  3. Soldaki Sockets sekmesine geçin ve Flush socket pools düğmesine basın.

Üçüncü adımın sebebi açık bağlantılardır. Chrome bir sunucuyla kurduğu bağlantıyı bir süre açık tutar ve yeniden kullanır. Önbellek temizlense bile açık bağlantı kapanana kadar istekler eski adrese gider. Sayfa bu düğmenin yanına “açık bağlantıları olan sayfaları bozabilir” uyarısını yazıyor, yani açık formlarınızı önce kaydedin.

Chrome'un net-internals DNS sayfası: example.com için Chrome'un çözdüğü adresler kırmızı çerçeveyle, Clear host cache düğmesi kırmızı okla işaretli
Aynı sayfadaki Lookup kutusu Windows'un değil, Chrome'un o adı hangi adrese çözdüğünü gösterir.

Bu sayfa yalnız temizlik için değil, teşhis için de işe yarar. Lookup kutusuna adı yazıp Chrome’un gördüğü adresi alabilir, Resolve-DnsName ile Windows’un gördüğüyle karşılaştırabilirsiniz. İkisi farklıysa Chrome ile Windows ya farklı önbellekten ya da farklı bir çözümleyiciden okuyordur. Sayfayı Chrome 154 ve Edge 154’te açtım. Firefox’ta karşılığı about:networking#dns sayfasındaki Clear DNS Cache düğmesidir. Firefox’un ayar listesindeki network.dnsCacheExpiration değerine göre bir cevabı fabrika ayarında 60 saniye tutar.

Linux ve macOS’ta DNS Önbelleği Temizleme

Linux’ta önbelleği hangi servisin tuttuğuna dağıtım karar verir. Ubuntu 24.04’te önbelleği systemd-resolved tutar ve temizleme komutu resolvectl flush-caches olur. Aynı adı iki kez sorup önbelleği boşalttım, sonra bir kez daha sordum:

Bash
resolvectl query example.com
resolvectl query example.com
sudo resolvectl flush-caches
resolvectl query example.com
Çıktı
-- Information acquired via protocol DNS in 25.4ms.
-- Data from: network

-- Information acquired via protocol DNS in 1.6ms.
-- Data from: cache

-- Information acquired via protocol DNS in 5.0ms.
-- Data from: network

Her sorgunun çıktısından yalnız son iki satırı bıraktım, çünkü okunacak yer onlardır:

  1. İlk sorgu ağdan geldi ve 25,4 milisaniye sürdü. Önbellekte bu ad yoktu.
  2. İkinci sorgu Data from: cache diyor ve 1,6 milisaniye sürdü. Cevap önbellekten, yani örnekteki defterden okundu.
  3. Temizlikten sonraki sorgu yine ağdan geldi, ama 5,0 milisaniye sürdü. Bu sayı bir sonraki bölümün konusudur.

sudo resolvectl statistics önbellekteki kayıt sayısını gösterir. Benim ölçümümde temizlikten önce 9, sonra 1 kayıttı. systemd-resolved kullanmayan bir dağıtımda önbelleği başka bir servis tutar ya da hiç önbellek yoktur, önce hangisinin çalıştığına bakılır.

macOS’ta Mac’im olmadığı için ölçüm yapmadım. Apple’ın OS X için yazdığı ve bugün arşivde duran destek sayfası komutu sudo killall -HUP mDNSResponder olarak veriyor.

Temizlik Sonrası Cevap Hâlâ Eski: Çözümleyicinin Önbelleği

Linux’taki 5 milisaniyelik sorgu temizlikten sonra ağdan geldi, ama ilk sorgudan beş kat hızlıydı. Soru büyük ihtimalle yetkili sunucuya kadar gitmedi, aradaki çözümleyicinin önbelleğinde cevap hazırdı. Bilgisayarınızın defterini kopardınız, örnekteki santral görevlisinin kart dosyası ise yerinde duruyor.

Bunu Windows’ta TTL üzerinden ölçtüm, yani bir cevabın önbellekte kalabileceği süre üzerinden. Yetkili sunucu example.com için TTL değerini 300 saniye veriyor. Taze bir cevap bu sayıyla gelir. Önbellekten gelen cevap ise TTL’den geriye kalan süreyle gelir. flushdns’i üç kez çalıştırdım ve her seferinde adı yeniden sordum. Üç turda da aynı iki adres geldi, değişen yalnız TTL oldu:

SorguSorulan sunucuAdreslerTTL
Yetkili sunucu, TCP ilehera.ns.cloudflare.com104.20.23.154, 172.66.147.243300
flushdns sonrası, 1. turbilgisayarın DNS ayarı (8.8.8.8)8.6.112.0, 8.47.69.0256
flushdns sonrası, 2. tur (20 sn sonra)bilgisayarın DNS ayarı (8.8.8.8)8.6.112.0, 8.47.69.0295
flushdns sonrası, 3. tur (20 sn sonra)bilgisayarın DNS ayarı (8.8.8.8)8.6.112.0, 8.47.69.0130

Tabloda üç şey okunur:

  1. Hiçbir tur 300 ile gelmedi. flushdns’ten sonra bile cevap tazelenmedi, yukarıdaki bir önbellekten geldi.
  2. TTL geri saymadı, zıpladı. 256’dan sonra 295, sonra 130 geldi. Aynı adresin arkasında birden çok önbellek var ve her biri kendi saatini tutuyor. Bir geçiş sırasında aynı ofiste bazı kullanıcıların yeni, bazılarının eski adresi görmesinin bir sebebi budur.
  3. Adresler yetkili sunucununkilerden farklı. Bu farka bölümün sonunda döneceğim.

Kurumun DNS Sunucusunda Önbellek Temizleme

Active Directory kullanan bir kurumda örnekteki santral görevlisinin kart dosyası kurumun kendisinindir, çünkü bilgisayarlar adları Domain Controller’daki iç DNS sunucusuna sorar. Windows Server’da o önbelleği görmek için DNS Manager’da View → Advanced seçilir. Bu seçenek açılmadan Cached Lookups klasörü listede hiç görünmez. Klasör alan adı ağacına göre dizilir: example.com için .(root) → com altına bakılır.

Windows Server DNS Manager'da Cached Lookups klasörü ve com altında önbellekteki example kaydının iki A satırı, ikisi de kırmızı çerçeveyle işaretli
İç DNS sunucusunun önbelleği: kurumdaki her bilgisayar bu klasördeki cevabı alır.

Önbelleği temizlemek için sol ağaçta sunucunun adını seçin ve Action menüsünden Clear Cache’e basın. Komutla aynı iş Clear-DnsServerCache -Force ile yapılır. Show-DnsServerCache önbelleğin içini listeler:

PowerShell
Show-DnsServerCache | Where-Object HostName -eq 'example.com'
Clear-DnsServerCache -Force
Show-DnsServerCache | Where-Object HostName -eq 'example.com'
Çıktı
HostName                  RecordType Type       Timestamp            TimeToLive      RecordData
--------                  ---------- ----       ---------            ----------      ----------
example.com               A          1          0                    00:04:41        104.20.23.154
example.com               A          1          0                    00:04:41        172.66.147.243
example.com               RRSIG      46         0                    00:04:41        [A][ECDsaP256Sha256][34505]

İkinci listeleme boş döndü. Ölçümü iç DNS sunucusuna soru soran Ubuntu makinesinden de izledim. Temizlikten önce example.com 273, on beş saniye sonra 257 saniyelik TTL’le geldi: her istemci aynı cevabı, aynı saatten geri sayarak aldı. Temizlikten hemen sonra TTL 299’du, cevap yetkili sunucudan tazelenmişti. Temizlikte 27 kayıt kaldı: 13 root server’ın adları, IPv6 adresleri ve localhost. Sunucu soru sormaya bu kök kayıtlardan başlar.

Sunucunun eski kaydı süre dolmadan kendiliğinden yenilemesini beklemek de boşunadır. Microsoft’un Set-DnsServerCache belgesine göre önbellek kilidi (cache locking) fabrika ayarında yüzde 100’dür: sunucu önbellekteki bir kaydı TTL süresinin tamamı boyunca yenisiyle değiştirmez. Aynı belgeye göre fabrika ayarında bir kayıt en çok bir gün, olumsuz cevap en çok 15 dakika tutulur. Sunucu DNS forwarder üzerinden dışarı soruyorsa, forwarder’ın da kendi önbelleği olduğunu unutmayın.

Ağ cihazlarının da kendi adlarına sordukları adlar için ayrı önbellekleri vardır. FortiGate’in adres nesneleri ve güncelleme sunucuları için tuttuğu önbelleği diagnose test application dnsproxy 1 temizler. İstemciler adına ilettiği soruları ise lab ölçümümde önbelleğe almadı. İkisini FortiGate DNS ayarı yazısında ölçtüm. Switch’in ad önbelleğini ise clear host * siler. Eski cevabın orada ne kadar kaldığını switch DNS ayarı yazısında ölçtüm.

Her Eski Cevap Önbellekten Gelmez: İç DNS’teki Bayat Kayıt

Sunucunun önbelleğini temizlediğiniz hâlde iç ağdan sorulan bir ad hâlâ eski adrese gidiyorsa, cevap önbellekten değil kaydın kendisinden geliyor olabilir. Önbellekteki bir cevap TTL’i dolunca kendiliğinden düşer. İç DNS’e elle yazılmış bir A kaydı ise siz silene kadar durur ve Clear-DnsServerCache ona dokunmaz.

Ayrımı yapmanın en hızlı yolu aynı adı iki ayrı çözümleyiciye sormaktır. Adı önce iç DNS sunucusuna, sonra bir Public DNS’e Resolve-DnsName komutunun -Server parametresiyle sorarsınız. Cevaplar ayrışıyorsa ve iç sunucunun önbelleği boşsa, DNS Manager’da Forward Lookup Zones altında o adı taşıyan zone’u açın ve elle yazılmış kaydı arayın. Kaydı düzeltmek, önbellek temizliğinin yapamadığını yapar.

Google ve Cloudflare’in Önbelleğini Tek Ad İçin Boşaltmak

Bilgisayarınız Public DNS (internetteki herkese açık DNS sunucusu) kullanıyorsa o önbelleğe de kısmen ulaşabilirsiniz. Google’ın Flush Cache aracı tek bir adı ve tek bir kayıt türünü Google Public DNS’in önbelleğinden siler. Cloudflare’in Purge Cache aracı aynı işi yalnız 1.1.1.1 için yapar. Google’ın SSS sayfası kendi aracının iki sınırını yazıyor:

  1. Coğrafi konuma göre cevap veren alan adları boşaltılamaz. Bu adlar sorana göre farklı adres döndürdüğü için önbellekte tek bir kayıt olarak durmaz.
  2. Önbellekteki süreler genellikle altı saatle sınırlıdır. Araç kullanılmasa da eski cevap en geç bu sürede düşer.

Servis sağlayıcınızın DNS sunucusunu ise siz temizleyemezsiniz. Orada tek yol TTL’in dolmasını beklemektir.

8.8.8.8’e Sorduğunuz Soruyu Başkası Cevaplıyor Olabilir

Tablodaki üçüncü satıra dönelim. Bilgisayarımın DNS ayarı 8.8.8.8, ama gelen adresler yetkili sunucununkilerden farklıydı. Aynı soruyu 8.8.8.8’e TCP ile sorduğumda ise yetkili sunucunun adresleri TTL 300 ile geldi. Cevabı kimin verdiğini anlamak için soruyu orada hiçbir sunucunun olmadığı bir adrese gönderdim. 192.0.2.1, RFC 5737 ile belge örnekleri için ayrılmış bir adrestir:

PowerShell
Resolve-DnsName example.com -Server 192.0.2.1 -QuickTimeout
Çıktı
Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
example.com                                    AAAA   221   Answer     2a06:98c1:3122:8000::
example.com                                    AAAA   221   Answer     2a06:98c1:3123:8000::
example.com                                    A      130   Answer     8.6.112.0
example.com                                    A      130   Answer     8.47.69.0

Var olmayan bir sunucu cevap verdi. UDP 53’e giden DNS sorularını bir katman yakalıyor ve kendi seçtiği çözümleyiciye soruyor. Aynı komut -TcpOnly ile çalıştırıldığında cevap gelmedi.

Soruyu kimin cevapladığını Google’ın kendi kaydı da gösteriyor. Google’ın o-o.myaddr.l.google.com adı, soruyu getiren çözümleyicinin adresini döndürür. UDP ile sorduğumda dönen adres Google’ın değil başka bir şirketin adres bloğundaydı. TCP ile sorduğumda ise Google’ın kendi çözümleyicisi göründü. Dönen adresler sahte değildi, example.com’u barındıran Cloudflare’in adresleriydi.

Yakalayanın yerini ayrıca ölçtüm ve cevap ne modem ne servis sağlayıcı çıktı. Aynı modemin arkasındaki bir Linux sunucunun soruları yakalanmadı. Sonra bilgisayardan, ilk yönlendiricide ömrünü dolduracak bir soru gönderdim. Modemin geri gönderdiği hata mesajı paketin başlığını taşır ve o başlıkta hedef artık 192.0.2.1 değil, başka bir çözümleyicinin adresiydi. Paket bilgisayardan çıkarken değiştirilmişti. Araya giren, bu bilgisayarda kurulu bir erişim aracıydı.

Kendi bilgisayarınızda bu testte cevap alıyorsanız önce o bilgisayardaki yazılımlara bakın. DNS sorularını kendi seçtiği çözümleyiciye yönlendiren üç yaygın yazılım türü vardır:

  1. VPN istemcisi. Bağlıyken soruları kendi çözümleyicisine gönderir.
  2. Güvenlik yazılımı. Web filtresi sunan bazı ürünler soruları kendi sunucusuna çevirir.
  3. Erişim engeli aşma aracı. Soruları başka bir çözümleyiciye yönlendirmek bu araçların sık kullandığı bir ayardır.

Çalışan servislerin listesine Get-Service ile bakmak ilk adımdır.

Önbellek açısından sonucu şudur: bu bilgisayarda temizlenmesi gereken kart dosyası, yani örnekteki santral görevlisinin dosyası, benim seçtiğim 8.8.8.8’in değil, sorunun yönlendirildiği çözümleyicinindir. Ona ulaşamazsınız, Google’ın aracı da onu boşaltmaz. Kendi bilgisayarınızda aynı testi yukarıdaki tek komutla yapabilirsiniz. Cevap geliyorsa bir değişikliği doğrularken yetkili sunucuya TCP ile sorun. Böyle bir bilgisayarda aradaki önbelleklere uğramayan yol odur.

DNS Önbelleği Temizlendi mi? Doğrulama

Temizliğin işe yarayıp yaramadığını katman katman kontrol edersiniz. Her madde yazıda ölçülmüş bir şeye karşılık gelir:

  1. Windows önbelleği: Get-DnsClientCache -Entry example.com boş dönmeli ya da yeni adresi göstermeli. Önbelleğin tamamına bakarsanız hosts dosyalarından gelen satırların kaldığını görürsünüz, bu normaldir.
  2. Cevabın tazeliği: Resolve-DnsName example.com -Type A çıktısındaki TTL’i yetkili sunucunun verdiği TTL’le karşılaştırın. Yetkili sunucunun adını Resolve-DnsName example.com -Type NS verir. Ona -Server ve -TcpOnly ile sorun. TTL yetkili sunucunun değerine eşit ya da çok yakınsa cevap tazedir, belirgin düşükse bir önbellekten gelmiştir.
  3. Tarayıcı: chrome://net-internals/#dns sayfasındaki Lookup kutusu Chrome’un gördüğü adresi gösterir. Windows’un gördüğüyle aynı olmalıdır.
  4. İç DNS sunucusu: Show-DnsServerCache listesinde eski adres kalmamalıdır. Önbellek boş olduğu hâlde sunucu eski adresi veriyorsa kayıt zone’a elle yazılmış olabilir, iç DNS’teki bayat kayıt bölümüne bakın.

Dört kontrol de yeni adresi gösteriyor ama sayfa hâlâ eskiyse sorun büyük ihtimalle DNS’te değildir. Aşağıdaki hata listesinin beşinci maddesi o durumu anlatıyor.

DNS Önbelleği Temizlemede Sık Yapılan Hatalar

Aşağıdaki hataların ortak noktası, temizliğin neyi sildiğini bilmeden yapılmasıdır:

  1. Bilgisayarı hızlandırmak için düzenli temizlemek. Temizlik hiçbir şeyi hızlandırmaz. Ölçümde önbellekli cevap en çok 1,13 milisaniye, önbelleksiz sorgu en az 70 milisaniye sürdü.
  2. Komut zincirini anlamadan çalıştırmak. ipconfig /release ve /renew DHCP adresini bırakıp yeniden alır ve bağlantıyı bir an keser. /registerdns bilgisayarın kendi adını DNS sunucusuna yeniden kaydettirir. netsh winsock reset ise kendi yardım metnine göre Winsock kataloğunu temiz duruma döndürür. Üçünün de DNS önbelleğiyle ilgisi yoktur.
  3. Tarayıcıyı unutmak. Chrome ve Edge flushdns’ten etkilenmez. Kendi sayfalarından temizlenir.
  4. hosts dosyasını unutmak. Önbelleği her katmanda temizlediğiniz hâlde bir ad hep aynı yanlış adrese gidiyorsa son bakılacak yer C:\Windows\System32\drivers\etc\hosts dosyasıdır, Linux ve macOS’ta /etc/hosts. Oradaki bir satır o ad için DNS’in cevabını ezer ve hiçbir temizlik onu silmez. Devraldığınız bir sunucuda ya da ikinci el bir dizüstü bilgisayarda o satırı yıllar önce başka biri yazmış olabilir. Dosyanın nasıl okunduğunu ve nslookup’ın onu neden görmediğini DNS nedir yazısında anlattık.
  5. Sorun DNS değilken önbellek temizlemek. Tarayıcı kalıcı bir yönlendirmeyi (301) ve HSTS kararını önbelleğe alır, sunucu düzelse bile ona bir daha sormaz. Bu iki tuzağı HTTP yazımızda anlattık. DNS kontrolleri yeni adresi gösterirken sayfa eski davranıyorsa bakılacak yer bunlardır.
  6. Değişiklikten önce TTL’i düşürmemek. Önbelleği temizlemek, örnekteki benzetmeyle, yalnız sizin defterinizi siler, başkalarınınkini değil. Bir geçişi herkes için kısaltmanın yolu kaydı değiştirmeden önce TTL’i düşürmektir.

Sonuç: Temizlik Yalnız Kendi Defterinizi Siler

Girişteki benzetmeye dönersek: flushdns, bilinmeyen numaralar servisinden öğrendiğiniz numaraları yalnız kendi defterinizden siler. Örnekteki santral görevlisinin kart dosyası, yani DNS sunucusunun önbelleği, ve telefonunuzun ekranındaki not kâğıdı, yani tarayıcının önbelleği, yerinde kalır. Ölçümde üç şey beklenenden farklı çıktı:

  1. Temizlikten sonra gelen cevap taze değildi. Yetkili sunucunun 300 saniyesi yerine 256, 295 ve 130 saniyelik cevaplar geldi.
  2. Chrome Windows önbelleğini hiç kullanmadı. Açılan adlar Windows’un defterine düşmedi.
  3. 8.8.8.8’e giden soruları başkası cevapladı. Orada hiçbir sunucu olmayan bir adres bile cevap verdi.

Değişikliği hâlâ göremiyorsanız soru şudur: eski numara hangi defterde duruyor? Kavramın kendisini, TTL’i ve geçiş öncesi hazırlığı DNS nedir yazısında anlattık. Kurumunuzun DNS düzenini kurumsal ağ kurulumu hizmetimiz kapsamında kuruyor ve yönetiyoruz.

DNS Önbelleği Temizleme Hakkında Sık Sorulan Sorular

Vermez. Komut yalnız sonradan öğrenilmiş cevapları siler, hosts dosyasından yüklenen kayıtlar yerinde kalır ve Windows 11'de yönetici yetkisi de istemez. Tek bedeli, her adın bir sonraki sorgusunun DNS sunucusuna gitmesidir. Ölçümümde önbellekten gelen cevap 0,64 ile 1,13 milisaniye, sunucuya giden sorgu 70 ile 87 milisaniye sürdü. Bu fark ad başına bir kez ödenir.
Üç sebep vardır ve sırayla bakılır. Birincisi tarayıcıdır: Chrome Windows'ta adları kendisi çözer, flushdns onun önbelleğine dokunmaz. İkincisi bilgisayarın soru sorduğu DNS sunucusudur: o sunucu eski cevabı TTL süresi dolana kadar vermeye devam eder. Üçüncüsü sorunun DNS olmamasıdır: tarayıcının sakladığı kalıcı yönlendirme ya da sayfa önbelleği aynı belirtiyi verir.
Kaydın TTL değeri kadar sürer, çünkü her çözümleyici eski cevabı bu süre dolana kadar saklar. TTL 300 ise beş dakika, 86400 ise bir güne kadar. Google Public DNS önbelleğindeki süreleri genellikle altı saatle sınırladığını yazıyor. Geçişi kısaltmanın yolu, kaydı değiştirmeden bir iki gün önce TTL'i 300 saniyeye düşürmektir.
İki ayrı kişi. Bilgisayarın ve tarayıcının önbelleğini kullanıcı kendisi temizler. Kurumun iç DNS sunucusunun önbelleğini ise yalnız o sunucunun yöneticisi temizleyebilir: Windows Server'da DNS Manager'daki Clear Cache komutu ya da Clear-DnsServerCache -Force. Firewall ve switch gibi ağ cihazlarının kendi adlarına sordukları adlar için ayrı önbellekleri vardır ve onlar da ayrıca temizlenir.
İlker Pehlivan
Yazan

BT Danışmanı | Ağ, Sistem ve Güvenlik Yönetimi

İlker Pehlivan, karmaşık BT altyapılarını ölçeklenebilir ve güvenli sistemlere dönüştürür. Buradaki rehberleri kendi laboratuvarında kurup ölçerek yazar.

LinkedIn

Benzer Makaleler

Kurumsal Network Kurulumu altındaki diğer 114 makale