Alan adı sistemi (DNS - Domain Name System), alan adlarının
(www.magmalinux.com gibi) internet üzerinde dağıtık, hiyerarşik bir
düzende durduğu bir sistemdir. İnternetin telefon rehberi gibi
düşünülebilir. Alan adı sistemi içerisinde isimlere karşılık telefon
numarası yerine, internetteki sunucuların IP adresleri kayıtlıdır.
DNS, bir alan adının IP adresini bulmayı ya da bir IP adresinin alan
adını bulmayı sağlar. DNS’in olmadığı bir dünya da yaşıyor olsaydık
Google’a erişirken www.google.com yazmak yerine 64.233.167.99 gibi bir
IP adresi yazıyor olurduk (İnternet’e bağlı her bilgisayarın bir IP
adresi olduğunu hatırlayın). Her ziyaret edeceğimiz web sayfası için
başka bir IP adresi ezberlediğimizi hayal edin. Bu hayal sizi yeterince
korkuttuysa, DNS’in bulunduğu dünyamıza geri dönebilirsiniz. DNS’in
olduğu bir dünyada ise bilmeniz gereken tek IP adresi, DNS sunucunuzun
IP adresidir.
Peki ya milyonlarca alan adının kaydı nerede tutuluyor? Nasıl
tutuluyor? Milyonlarca kullanıcının aynı anda yaptığı sorguya nasıl
yanıt veriliyor? Tüm bunlar olurken, milyonlarca DNS kaydı nasıl
güncelleniyor? Eğer DNS’in ilk günlerindeki gibi tüm alan adı bilgileri
tek bir merkezde tutuluyor olsaydı, yukarıdaki sorular bizim için
gerçek bir kabus olurdu. Neyse ki, DNS sisteminin dağıtık dizin yapısı
sayesinde, hiyerarşik yapıda birleşen her DNS sunucusunda, bir alan
adının sadece belli bir kısmıyla ilgili bilgi tutulur.
DNS hiyerarşisinin en tepesinde kök alan adı sunucuları (root nameservers) vardır. Şu an sayıları 13 olan kök sunucuları, her DNS sorgusunun başladığı yerdir.
Kök sunucuları sadece kendisinden bir alt seviyedeki .com, .net, .org, .tr gibi üst düzey alan adları (Top-Level Domains - TLD) sunucularının IP adreslerini bilir.
Örneğin www.magmalinux.com gibi bir adresi sorgularken, sorguladığımız DNS sunucusunun bu alan adı hakkında hiçbir bilgisi yok ise, sorguladığımız DNS sunucusu kök sunucularına bu alan adını sorar. Kök sunucuları sadece kendinden bir alt seviyedeki TLD sunucularının adreslerini bildiğinden, .com adreslerinin bilgilerini tutan TLD sunucusunun IP adresini verir. DNS sunucusu dönen bu cevap üzerine www.magmalinux.com adını com TLD sunucusunu sorar. com TLD sunucusu sadece kendinden bir alt seviyedeki magmalinux.com adının DNS sunucusunun adını (ns0.magmalinux.com) ve IP adresini (78.188.112.56) bilir ve bu bilgiyi bizim sorguladığımız DNS sunucusuna gönderir. Sorguladığımız DNS sunucusu son olarak ns0.magmalinux.com DNS sunucusuna www.magmalinux.com adını sorar. Eğer ns0.magmalinux.com DNS sunucusu www.magmalinux.com adını tanımlamışsa, ilgili adın IP adresi önce sorguladığımız DNS sunucusuna, bu sunucu tarafından da bize gönderilir. Görüldüğü gibi, DNS sunucuları aynı zamanda hakkında bilgi sahibi olmadığı alan adlarını öğrenmek için çözücü (resolver - DNS istemcisi) işlevini de görür.
DNS sistemi;
olmak üzere üç bileşenden oluşmalıdır.
Bölge dosyaları bir alan adını ya da bir alt alan adını açıklayan kayıtlar içerir. Bölge dosyalarının içerdiği kayıtlara şöyle bir bakacak olursak:
A kaydı, MX kaydı gibi kelimeleri anlamadıysanız, okumaya devam edin. Yazının ilerleyen kısımlarında bunlara ayrıntılı olarak değinilecektir.
Ters Bölge Dosyaları IP adresine karşılık gelen alan adı araştırılırken kullanılan dosyalardır. Ters bölge dosyaları içinde IP adresine karşılık alan adı bulunan PTR kayıtları vardır. Genel kullanım alanlarından bir tanesi, spam e-postaları engellemek amacıyla gönderenin IP adresi tersine sorgulanarak, gönderen e-posta adresinin alan adı kısmıyla uyuşup uyuşmadığına bakılmasıdır.
DNS sunucusunun en temel görevi “www.google.com’un IP adresi nedir?” gibi sorulara yanıt vermektir. Genellikle DNS sunucusuna sorulan soruların büyük bir kısmı, hakkında hiçbir bilgi sahibi olmadığı alan adlarıyla ilgilidir. DNS sunucusu yazılımları bu tip sorulara da yanıt verirler. Böyle bir sorgu cevaplandırılırken aşağıdaki yöntemlerden biri kullanılır:
Özyinelemeli sorgu, çözücünün (resolver - DNS istemcisi) sorgunun tam yanıtını istediği sorgulardır. DNS sunucusu sorgunun tam yanıtına ulaşana kadar araştırmaya devam eder. Özyinelemeli sorguları destekleyen ama “google.com” için yetkili olmayan bir DNS sunucusunun, “www.google.com” alan adının IP adresini araştırırken geçtiği adımlara bakalım:
Özyinelemeli olmayan sorgu, DNS sunucusunun sorguya kısmen yanıt verdiği sorgudur. DNS sunucusu, çözücüye “www.google.com” alan adı için IP adresini dönmek yerine, bu alan adının IP adresini bilebilecek başka bir sunucunun IP adresini döner. Tüm DNS sunucular bu çeşit sorguları desteklemelidir. Özyinelemeli olmayan sorguları destekleyen fakat “google.com” için yetkili olmayan bir DNS sunucusuna, “www.google.com” alan adının IP adresi sorulduğunda gerçekleşecek adımları inceleyelim:
Windows ve çoğu Unix’lerde DNS çözücüler olabildiğince küçük tasarlanmış çözücülerdir (stub resolvers). Yani özyinelemeli olmayan sorguları takip edebilecek yetenekleri yoktur. Dolayısıyla kişisel bilgisayarınız için DNS sunucusu belirliyorsanız, özyinelemeli sorguları destekleyen bir sunucu belirtmelisiniz.
DNS sunucumuzun (birincil DNS sunucusu) arızalanması ya da herhangi bir
sebeple çalışmaması durumunda, ağımızın hayati noktası olan DNS
sorgularını geçici bir süre yanıtlaması için başka bir sunucuyu
(ikincil DNS sunucusu) yedekte tutmalıyız.