DNS Nedir?
Domain Name System [DNS] (Alan Adı Sistemi) dağıtık yapıda bir veritabanıdır. Bu sistem makina isimlerini IPv4 (ya da ipv6) adreslere ya da IPv4 adresleri makina isimlerine çevirmeye yarar. Ayrıca bir alan için gerekli eposta sunucusunun adreslerini ya da alanadı sunucularının hangi IP adreslerinde bulunduğunu daha teknik bir ifade ile RR(Resource Records)'ları tutar. DNS yapısı gereği hızlı olmalıdır. Bu yüzden yapılan sorgulamalar eğer 512 bayttan küçük ise ya da yapılan işlem asıl DNS sunucusu ile yardımcı DNS sunucusu arasında bölge transferi değilse UDP üzerinden yapılacaktır. DNS sisteminin yazarları DNS için gerekli bilgileri diğer Internet araçlarında olduğu gibi RFC'lerde tanımlamışlardır (RFC 1034 ve 1035). Bu belgelere bakarsanız içinde bir kaç kod ve bölge soayalarının nasıl yazılacağını bulursunuz.
BIND'de (Berkeley Internet Name Daemon) yazılırken bu kriterler dikkate alınmıştır. Fakat bu sistemde gereksiz karmaşıklıkta kodlar ve bunun getirdiği güvenlik problemleri vardır. Fakat djbdns bu karmaşadan uzak ve güvenli bir yazılımdır. Bunun sonucu olarakta "two-thumbs-up bir daemon" olmaya bizce hak kazanmıştır. Hatta bizce bind 9.1.X ve ileriki sürümlerinde kullanılan "Dns-sec sistemi" bile bind için bir çözüm olmaktan çok uzaktır. Sonuçta temel yani "daemon Internet"in ilk zamanlarından kalmıştır. Şu an IPv4'te yaşanılan güvenlik sorunları da aynı sebepten oluşmaktadır.
Bu yüzden köklü bir değişim olması gerekliliği savunulmuş ve IPv6 ortaya atılmıştır. Bind içinde benzer model söz konusu olmadıkçca djbdns popüleritesini sürdürecektir. (Haklı bir popülerite !!!).
Genel olarak dns yazılımlarının yaptığı iki vazife vardır. Bind kullananlar eğer çok profesyenel değillerse ya da bu konu ile alakalı kitap okunmamışsa bu iki olguyu karıştırabilmektedirler. Bunlar:
Resolving (Çözümleme): Aranılan bir kaydı bulma işlemi
Mesela
http://www.yildiz.edu.tr/ adresine karşılık gelen IPv4 adresinin 193.140.1.1 olmasının bulunması. Çözümleme yapan yazılımlar iki çeşit işlem yaparlar; ardışık çözümeme ve ardışık olmayan çözümleme. Sorgularda gönderilen RD (recursion required - ardışık gerekli) bitlerine göre sorgunun türü belirlenir. Ardışık olmayan sorgulara cevap veren sunucular cevap olarak ardışık isim sunucuları verirler.
Sonuç olarak yapılan bir sorgu ardışık ise
http://www.yildiz.edu.tr/ için doğrudan 193.140.1.1 IP'si ya da "makina bulunamadı" cevabı verilebilir. Fakat ardışık olmayan bir sorguda cevabı bulmak için başka bir isim sunucusunun IP'sini verebilir. Ardışık olmayan sorgular aynı zamanda yinelemeli sorgular olarak daa bilinirler.
Authoritive Nameserving (Yetkili İsim Sunumu)
Bir alan hakkında bilgi bulunduran sunucudur. Mesela yildiz.edu.tr alanının MX, NS, A (Bunlar - Resource Record - Özkaynak Kaydı olarak bilinir) kayıtlarının tutulduğu isim sunucusudur.
CANLI BIR ÖRNEK
Bir sorgu nasıl yapılır. Mesela
http://www.yildiz.edu.tr/ adresinin IPv4 karşılığı nedir? Bunun için çözümleyici ya da sizin bilgisayarınız Internet'te birkaç yetkili isim sunucusunu gezmek zorundadır. İlk başta " . " sunucularından tr TLD'si için yetkili isim sunucu IP'si bulunur. Bunun IP'si (ki bu IP'nin makina ismi ülkemiz için ns1.metu.edu.tr ya da ns2.metu.edu.tr'dir) alındıktan sonra bu yetkili isim sunucuya "edu.tr." i barındıran yetkili isim sunucu IP'si sorulacak ve bu işlem böylece devam edecektir ve sonuç olarak 193.140.1.1 adresini sizin makinanız ya da /etc/resolv.conf dosyanızda bulunan çözümleyicinin yildiz.edu.tr'nin yetkili isim sunucusundan aldığı bilgilere göre belleğinde belli bir müddet tutacaktır. Bu süreye TTL (time to live - yaşam süresi) denir. Bu süre boyunca çözümleyici gerekli bilgileri belleğinde saklayacaktır. DjbDNS için aksi belirtilmezse bu süre 42 dakikadır. Kurulacak göre bu süre 5 saniye de yapılabilir. (Nitekim birden fazla www sunucunuz var ve bunlar arasında döner turnuva kullanarak yük dengelemesi yapmak istersek bu saniye değeri kullanılacaktır).