DNS servisi internet ve yerel ağımızda isimlerin ip karşılığını bulmamıza yarayan bir servistir. Örneğin www.astronur.com a giderken aslında bilgisayarımız IP yapılandırmamız da tanımlı olan DNS sunucusuna www.astronur.com un ip adresi nedir diye sorar, DNS sunucusu ip bilgisini verdikten sonra bilgisayarımız ikinci adımda direkt o ip adresine bağlanır. Yani bilgisayar ve sunucular arası iletişim ip adresi üzerinden olur ancak biz tüm ipleri ezberleyemeyeceğimiz ve bilemeyeceğimiz için DNS servisi kullanılır. Bu nedenle DNS servisi önemli bir servistir.
Peki örneğin www.astronur.com a girerken bilgisayarımız IP yapılandırmasında bulunan DNS sunucusuna www.astronur.com u sordu ve ip adresini (1.1.1.1) öğrenip o ip adresine bağlandı. Daha sonra sitedeki Vmware kategorisine tıkladığımda bilgisayarım yine DNS sunucusuna mı soracak www.astronur.com ip adresi ne diye? Cevap hayır. Bir kere öğrendikten sonra www.astronur.com adresinin ip adresini RAM de DNS Cache tablosunda saklayacak. Böylece her seferinde DNS sunucusuna sorarak hem zaman kaybetmeyecek hemde DNS sunucusunu boşuna meşgul etmeyecek.
Peki senaryoyu ilerletelim. Ben hosting firmamı değiştirdim diyelim. Böylece eskiden www.astronur.com için 1.1.1.1 olan ip adresim 2.2.2.2 olarak değişti. www.astronur.com a daha önce girenler o zaman halen 1.1.1.1 e mi gitmeye çalışacak? Bunun da cevabı hayır. Çünkü bilgisayar DNS sunucusundan www.astronur.com un adresini öğrendikten sona bunu RAM da DNS Cache tablosuna kaydeder dedim ama bunu ömürlük yapmaz tabii ki.
Bilgisayar IP Yapılandırmasındaki DNS sunucusundan www.astronur.com un ip adresini öğrendiği esnada bu adresin DNS kaydının TTL süresini de öğrenir. TTL (Time to Live) yaşama süresidir. Yani DNS sunucuları bilgisayarlara verdikleri “www.astronur.com un ip si 1.1.1.1 dir” yanıtında “bu bilgini TTL değeri olan örneğin 1 saat için RAM da DNS Cache tablona yaz, bana 1 saat içinde tekrar sorma” der. Bilgisayar da RAM deki DNS Cache tablosuna bu bilgiyi de yazar ve gerçekten 1 saat içinde tekrar www.astronur.com için DNS sunucusuna sormaz. 1 Saat geçtikten sonra bilgisayar RAM deki DNS Cache tablosundan “www.astronur.com – 1.1.1.1” kaydını siler ve yeniden www.astronur.com un ipsi gerekirse yeniden DNS sunucusuna sorar. Böylece benim yeni ip adresim olan 2.2.2.2 yi öğrenir.
Bu durumda bir öncelik sırası diye bir kavram çıkıyor. Yani bilgisayar www.astronur.com un ip sine ihtiyacı olduğunda hangi sırayla ne işlem yapar? Bunun cevabı aşağıdaki gibidir.
- Host Dosyasına Bak
- DNS Cache Tablosuna Bak
- IP Yapılandırmasında tanımlı DNS sunucusuna sor
1- Host Dosyası
Bilgisayarlar DNS Cache Tablosundan önce diskte kayıtlı olan host dosyasına bakarlar. Bu host dosyası Windows İşletim sistemlerinde C:\Windows\System32\drivers\etc dizininde hosts isimli dosyada (uzantı yok dikkat) Linux işletim sistemlerinde /etc dizininde hosts dosyasındadır (uzantı yok dikkat) görünümleri aşağıdaki gibidir.
Host dosyası aslında normal kullanım için değil çokcası testlerde, sorun çözme adımlarında kullanılır. Yine örnekleyecek olursak www.astronur.com 1.1.1.1 sunucusunda yayınlanıyor. Ben siteyi 2.2.2.2 ip li hostinge taşıdım. Eğer www.astronur.com için olan DNS kaydını 2.2.2.2 olarak güncellersem herkes yeni sunucudan siteye erişecek ama ben öncesinde kendim test etmek istiyorum. Yani sadece benim bilgisayarım www.astronur.com için 2.2.2.2 ipsini öğrensin ve 2.2.2.2 ye bağlansın. Böylece ben 2.2.2.2 sunucusu üzerindeki sitemi gözden geçirdikten sonra DNS kaydını değiştirip herkesin 2.2.2.2 yi kullanmasını sağlayabilirim.
Bunun için host dosyama www.astronur.com ipsi 2.2.2.2 dir şeklinde bir satır girmem gerek. windows ve linuxlar için aşağıdaki gibi olmalı.
Host dosyalarına www.astronur.com için 2.2.2.2 yi tanımladığımda ping sonuçlarına dikkat ederseniz www.astronur.com için 2.2.2.2 ye gidiyor bilgisayarlar.
2-DNS Cache Tablosu
Bilgisayar isim çözümlemesi yapacağı zaman host dosyasından sonra DNS Cache tablosuna bakar. DNS Cache tablosu bilgisayarların RAM inde saklanır. Buradaki amaç öğrenilen bilginin tekrar tekrar DNS sunucusuna sorulmaması ve daha hızlı işlem yapılabilmesidir. DNS Cache tablosu RAM de tutulduğundan bilgisayar yeniden başlatıldığında sıfırlanacaktır ve bilgisayar kullanılmaya başladıkça yeniden içerisi dolmaya başlayacaktır. Şuan RAM de aktif DNS Cache tablomuzu windows işletim sistemli bilgisayarlarda cmd ve powershell ile aşağıdaki gibi görebiliriz.
Her 2 çıktıda da TTL değerlerini görebilirsiniz. Buradaki değerler Cacheden silinmesine kalan süre saniye cinsindendir.
Şimdi Şöyle bir senaryo düşünelim. Ben 13:34 de www.astronur.com a girdim ve bu esnada DNS Cache tabloma www.astronur.com için 1.1.1.1 bilgisi 1 saat TTL süresiyle yazıldı. Yani 14:34 e kadar bilgisayarım artık DNS sunucusuna www.astronur.com u sormayacaktır. Öteyandan www.astronur.com un sahibi (ki oda ben oluyorum :) ) hosting firmasını değiştirdi ve artık 2.2.2.2 ip sinden yayın yapıyor. Bu durumda benim 14:34 e kadar beklemem mi gerek DNS Cache tablomdaki 1.1.1.1 in silinmesi için. DNS Cache tablosunda www.astronur.com için bir kayıt varsa bilgisayar ikinci ve üçüncü adımları işletmez. Bunun cevabı da hayır. DNS Cache tablosunu ister bilgisayarımı yeniden başlatarak istersem de aşağıdaki komutları kullanarak temizleyebilirim.
Bu noktada DNS Admin ler için de DNS sunucusuna bir kayıt eklerken TTL değerini nerden belirleyebileceğinden bahsedeyim. Windows DNS konsolunda “View\Advanced” seçeneğini aktifleştirelim. Böylece TTL alanı görünmeye başlayacak.
Burada varsayılanda TTL değeri 1 saat gelir. Burayı istediğiniz gün/saat/dakika/saniye olarak değiştirebilirsiniz. Örneğin şu sıralar bir uygulamanızın sunucusu sık sık değişiyorsa TTL değerini 5 dk gibi kısa süre vererek sunucu değiştikten sonra clientler en fazla 5 dakika sonra uygulamanızın yeni ipsini öğrenirler. Ancak işler normale döndüğünde bunu yeniden uzun bir süre ile değiştirmenizi öneririm çünkü bu durumda uygulamanın ip si değişmediği halde client bilgisayarlar 5 dakikada bir DNS sorgusu gerçekleştirir.
3 – DNS Sunucusuna Sor
Host dosyası ve ve DNS Cache de olmayan sorgular için bilgisayarlar IP Yapılandırmasında bulunan DNS sunucusuna sorgu göndererek www.astronur.com un ip adresini öğrenecektir ve bunu TTL süresi kadar DNS Cache tablosuna yazacaktır.
Mümkün olduğunca çok teknik detaya girmeden anlatmaya çalıştım. Sorunuz olursa yorum bölümünden yazabilirsiniz.