magmalinux-dns-nedir

1  DNS Nedir?

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.

1.1  Neden DNS’e ihtiyaç duyuyoruz?

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.

1.2  DNS Nasıl Milyonlarca Alan Adı Bilgisini Tutar?

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.

1.3  DNS Hiyerarşisi

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.

1.4  DNS Sistemi Bileşenleri

DNS sistemi;

  • alan adı bilgilerini dağıtık dizine açan ve alan adı sorgularına cevap veren bir nameserver (ad sunucusu   DNS sunucusu)
  • dağıtık dizine açılacak alan adı bilgileri
  • gerektiğinde DNS sorguları yapacak bir çözücü (resolver) uygulama ya da kütüphane

olmak üzere üç bileşenden oluşmalıdır.

1.5  Bölge Dosyaları

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:

  • Bölgenin başladığı adres ve bu bölgeye ait genel özellikler (bir SOA kaydı)
  • Her bilgisayar adı (hostname) için bir A kaydı (IPv6 için AAAA kaydı)
  • E-posta sunucusunun bulunduğu bilgisayar için MX, Ad sunucusu için NS kaydı
  • Herhangi bir alt alan adı (subdomain) başka bir alan adı sunucusu tarafından yönetilmesi için vekalet verilecekse, bu alt alan adı için NS kaydı
  • Herhangi bir alt alan adının vekalet verilmesi durumunda, alan adı sunucularının bu alt alan adına erişebilmesi için gereken A ya da AAAA kaydı

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.

1.6  Ters Bölge Dosyaları

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.

1.7  DNS Sorguları

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 (Recursive Query): Sorulan sorunun yanıtı tam gönderilir. Yani soru “www.google.com un IP adresi” ise dönecek cevap www.google.com un IP adresi olur. Her DNS sunucusu bu tip sorgulamayı kabul etmeyebilir.
  • Özyinelemeli Olmayan Sorgu (Non-Recursive Query – Iterative Query): Soru “www.google.com un IP adresi” ise, soruyu soran istemci, www.google.com adresini bilebilecek başka bir DNS sunucusuna yönlendirilir (Kök DNS sunucusu, com TLD sunucusu ya da google.com sunucusu). Her DNS sunucusu bu tip sorguları kabul etmelidir.

1.7.1  Özyinelemeli Sorgular

Ö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:

  1. Çözücü, DNS sunucusuna “www.google.com’un IP adresi ne?” diye sorar.
  2. DNS sunucusu yerel tablosuna (ön belleğine) bakar. Eğer burada bulamazsa,
  3. DNS sunucusu, kök sunucularından bir tanesine “www.google.com” IP adresini öğrenmek için istekte bulunur.
  4. Kök sunucusu, DNS sunucusuna .com adresleri için bir TLD sunucusu adresi döner.
  5. DNS sunucusu, com TLD sunucusuna “www.google.com” IP adresini öğrenmek için istekte bulunur.
  6. TLD sunucusu, DNS sunucusuna “google.com” alan adı için yetkili DNS sunucusu adresini döner.
  7. DNS sunucusu, “google.com” DNS sunucusuna “www.google.com” IP adresini sorar.
  8. “google.com” DNS sunucusundan dönen cevap, ilk başta sorguyu başlatan çözücüye gönderilir.

1.7.2  Özyinelemeli Olmayan Sorgular

Ö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:

  1. Çözücü, DNS sunucusuna “www.google.com’un IP adresi ne?” diye sorar.
  2. DNS sunucusu yerel tablosuna (ön belleğine) bakar. Eğer burada bulamazsa,
  3. DNS sunucusu, çözücüye kök sunucularından bir tanesinin adresini döner.
  4. Çözücü, kök sunucusuna “www.google.com” IP adresini öğrenmek için istekte bulunur.
  5. Kök sunucusu, çözücüye .com adresleri için bir TLD sunucusu döner.
  6. Çözücü, com TLD sunucusuna “www.google.com” IP adresini öğrenmek için istekte bulunur.
  7. TLD sunucusu, çözücüye “google.com” alan adı için yetkili DNS sunucusu adresini döner.
  8. Çözücü, “google.com” DNS sunucusuna “www.google.com” IP adresini sorar.
  9. “google.com” dan çözücüye dönen cevapla sorgu sonlanmış olur.

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.

1.8  Birincil ve İkincil DNS sunucuları

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.