Domain name system (DNS), alan adlarını (örneğin, www.dijitalzade.com) IP adreslerine (örneğin, 192.0.2.34) çözümlemek için kullanılan sisteme verilen isimdir. İnternet dünyasının telefon rehberi olarak da adlandırılan DNS sayesinde internet kullanıcılarının web sitelerine ulaşmak için hatırlaması zor olan ip adreslerini kullanmak yerine o ip adresine bağlı, karşılık gelen domain adreslerini kullanabilmesi sağlanmıştır.
DNS sunucuları (DNS Servers), insanların 192.168.1.141 (IPv4) gibi IP adreslerini veya 4400:ac00:2046:1::m987:12a2 (IPv6) gibi daha karmaşık IP adreslerini ezberleme ihtiyacını ortadan kaldırır. Domain name system dünyanın pek çok farklı lokasyonuna dağıtılmış merkeziyetsiz çok sayıda serverın hiyerarşik iletişiminden oluşur. Domain name system içerisinde gerçekleşen çözümlemeler hiyerarşik bir yapıda ihtiyaca göre serverların birbiri arasında iletişim kurması ile gerçekleşir. İstemciden gönderilen istek sonrası, DNS sorgusunun yanıtlanıp yanıtlanamayacağına bağlı olarak, sorgu olumlu yanıtlanana ve tarayıcıya bir IP adresi döndürülebilene kadar sorgu ile ilgili DNS sunucularının dahil olduğu bir zincir sorgu gerçekleştirilir.
İstemci (kullanıcı) tarafından bir domain adresine bağlantı kurmak için gönderilen istek domain (DNS) resolver aracılığı ile DNS serverlarına iletilir ve ilgili domain adresine bağlı olan ip adresi yanıt olarak istemciye döndürülür. DNS tarafından iletilen ip adresi kullanılarak HTTP bağlantısı kurulur ve istemci (client) – server iletişimi sağlanır.
Eğer bir bilgisayar (domain – etki alanı adı) domain name sistemi içerisinde çözülemezse ilgili domainin barındırıldığı ip adresi çözümlenemez. Bu durumda domainin barındırıldığı ana bilgisayarla bağlantı, kullanıcı server ip adresini bilmediği sürece kurulamaz. Günlük kullanım düşünüldüğünde bu durum ağ üzerinde (internette) gezinmenin DNS olmadan oldukça zorlu (neredeyse imkansız) olduğu anlamına gelir.
Domain Name System (DNS) Öncesi Dönem ve Kısa DNS Tarihi
1980’lerde günümüz domain name system kullanıma girmeden önce, özellikle internetin gerçekten küçük, belirli ip adres ve serverlardan oluştuğu dönemde, tüm ana bilgisayar adları (domainler) ve bunlara karşılık gelen ip adresleri, “HOSTS.TXT” adlı tek bir dosyada barındırılmaktaydı.
Bu sistem Advanced Research Projects Agency Network veya ARPANET dizini olarak biliniyordu ve Elizabeth Feinler tarafından yönetilmekteydi.
ARPANET’te artan sayıda ana bilgisayarla birlikte, bilgisayar adlarını IP adreslerine veya tam tersine çözümlemek için dağıtılmış, hiyerarşik bir sisteme duyulan ihtiyaç artmıştır. 1980’lere gelindiğinde, bu sistem sürdürülemeyecek kadar verimsiz hale gelmiş ve 1983’te, başlangıçta tek bir merkezi olan dosya sistemi, içinde her adres bulunan birden çok sunucu ve konum arasında dağıtılarak domain name system (alan adı sistemi) oluşturulmuştur.
Domain Name System Server (Name Server) Nedir?
Domain name system (DNS), istemci-sunucu modelini kullanan dağıtılmış bir veritabanı sisteminden oluşur. Bu veritabanının düğümleri domain name system server adı verilen sunuculardan oluşur. Domain name system server (DNS Server) yada name server, DNS kayıtlarının saklanmasından ve DNS çözümlemesi sürecinden sorumlu sunucu (sunuculara) verilen isimdir.
Her domain, o etki alanı (domain) ve ona bağlı tüm etki alanlarının barındırıldığı sunucu (veya sunucular) hakkında bilgi yayınlayan en az bir yetkili DNS sunucusuna sahiptir.
Örneğin: A, AAA, CNAME aynı domain name sisteminde farklı işlevler için farklı IP adreslerine ve domainlere sahip olabilen DNS kayıtlarıdır ve bu kayıtlara ait tüm bilgiler yetkili name server tarafından saklanır.
DNS Server Tipleri
Bir DNS çözümlemesi sürecine dahil olan birkaç farklı sunucu türü vardır. Aşağıdaki listede, örnek bir DNS sorgusunun gerçekleşmesinde görev alan sunucu tipleri listelenmiştir.
DNS Recursor (Resolver) Server
DNS Recursor (Resolver) Server, bir istemci ile bir DNS name server arasında aracı görevi gören servera verilen isimdir. DNS Resolver Server bir DNS çözümlemesi sırasında, istemciden DNS sorgularını alır ve bunları name serverlara iletir. Kullanıcının eriştiği ilk kaynak olan resolver server üzerinde daha önce gerçekleştirilen bir DNS sorgusuna ait kayıtlar önbelleğe alınmışsa ise DNS resolver server ilgili DNS kayıtlarını istemciye döndürür. Eğer önbelleğe alınmış herhangi bir kayıt yok ise resolver ilgili sorguyu bir sonraki üst düzey sunucuya gönderir ve yanıtları alır.
Yetkili name serverlardan DNS kayıtlarını (IP Adreslerini) alan Recursor server, yetkili serverdan gelen yanıt içerisinde belirtilen TTL (time to live) süresi boyunca ilgili kayıtları önbellekte tutar ve tekrarlı isteklerde önbellek yanıtlarını istemciye döndürür.
Çoğu internet kullanıcısı, kendi ISS’leri (İnternet Servis Sağlayıcıları) tarafından otomatik olarak sağlanan bir DNS çözümleyici kullanır, ancak başka seçenekler de mevcuttur; Örneğin Google recursor server yada Cloudflare recursor server gibi.
Root Name Server
Root name server, DNS resolver sunucusunun alınan bir DNS sorgusu ile alakalı önbellek bulundurmadığı durumda sorguyu yönlendirdiği ilk sunucuya verilen isimdir. Bir root name server, herhangi bir DNS sorgusu ile alakalı bilgilere sahip olabilecek tüm sunucuları barındıran bir kök dizin sunucusudur.
DNS Root name sunucuları, DNS resolver serverlar tarafından bilinir ve recursive serverların DNS kayıtları arayışındaki ilk duraktır. Bir kök sunucu (Root name server), bir alan adını içeren recursor serverın sorgusunu kabul eder ve root server, DNS resolver’ı o etki alanının uzantısına (.com, .net, .org, vb.) dayalı olarak bir TLD name servera yönlendirecek şekilde yanıt verir.
Örneğin: Bir istemciden www.example.com adresine ulaşmak için DNS sorgusu alan DNS resolver server, daha öncesinde bu sorgu ile alakalı bir önbellek (cache) barındırmıyorsa, ilk olarak alakalı Root servera ilgili isteği iletir. Devamında root server .com uzantılı DNS kayıtlarını barındıran ilgili name serverın ip adresini DNS resolvera yanıt olarak döndürür. DNS resolver ilgili domainin barındırıldığı ip adreslerini barındıran yetkili name servera ulaşana kadar benzer süreç farklı name server seviyelerinde gerçekleşir.
Root name serverlar, İnternet Tahsisli İsimler ve Sayılar Kurumu (ICANN) adlı kar amacı gütmeyen bir kuruluş tarafından denetlenir.
TLD Name Server
TLD name server, alan adlarında kullanılan ortak alan adı uzantısına ait DNS kayıtlarını barındıran top level domain serverlara verilen isimdir. TLD name serverlar, bir url’in son . sının devamında kullanılan ortak alan adı uzantısına göre o alan adı uzantısını paylaşan tüm alan adları için bilgileri tutar.
Örn: .com, .net, .org, .io gibi.
Örneğin, .com TLD name server, .com uzantılı tüm alan adları ile alakalı DNS kayıtlarını barındırır. Eğer bir kullanıcı example.com’a ulaşmaya çalışıyorsa, DNS resolver ilk olarak root name server’a ulaşır ve root name serverdan .com uzantılı DNS kayıtlarını barındıran .com name serverının ip yanıtını alır. Devamında DNS resolver ilgili .com TLD ad sunucusuna yetkili name servera ulaşmak üzere yeni bir sorgu gönderir.
TLD name sunucularının yönetimi, Internet Assigned Numbers Authority (IANA) tarafından gerçekleştirilir. TLD name serverlar IANA tarafından 2 ayrı gruba ayrılarak yönetilmektedir.
Generic Top Level Domains (Genel üst düzey alan adları): Bunlar ülkeye özgü olmayan alan adlarıdır ve en iyi bilinen genel TLD’lerden bazıları .com, .org, .net, .edu ve .gov’dur.
Country Code Top Level Domains (Ülke kodlu üst düzey alan adları): Bunlar, bir ülkeye veya eyalete özgü tüm alan adlarını içerir.
Örnekler: .tr, .jp, .uk, .ru vb.
Authoritative Name Server (Yetkili Ad Sunucusu)
Authoritative Name Server, Bir istemci tarafından ulaşılmak istenen domaine ait nihai DNS (A, AAA, CNAME) kayıtlarının tutulduğu DNS sunucusuna verilen isimdir.
Klasik bir recursive DNS sorgusu gerçekleşirken DNS resolver sırasıyla Root Name Server, TLD Name Server ve daha sonrasında TLD name serverdan aldığı yetkili name server ip si ile authoritative Name Server yani ulaşılmak istenen domainin DNS kayıtlarının tutulduğu yetkili DNS name serverına ulaşır.
Yetkili ad sunucusu, istemci tarafından ulaşılmak istenen domainin IPV4 (A kaydı) yada IPV6 (AAA kaydı) bilgisini DNS resolver’a TTL bilgisi ve ek DNS bilgileri ile iletir. Alınan IPV4 yada v6 bilgisine göre DNS resolver domainin barındırıldığı IP’yi istemciye iletir ve network bağlantısı sağlanır.
DNS Zone Nedir?
DNS Zone (DNS bölgesi), belirli bir kuruluş veya yönetici tarafından yönetilen, DNS ad alanının idari bir parçasına verilen isimdir. DNS bölgesi, yetkili name serverda DNS bileşenlerinin daha ayrıntılı denetimine izin veren bir yönetim alanıdır. DNS (Domain Name System) bir çok ayrılmış DNS bölgesinden oluşur ve bu DNS bölgelerinin bir veya daha fazlasından yetkili bir DNS sunucusu sorumludur. DNS zonelar kullanılarak yetkili name server üzerinde yeni DNS kayıtları oluşturulabilir ve bir alan adına (domaine) ait farklı kaynaklar istenilen şekilde kontrol edilebilir.
Bir DNS bölgesi birden çok subdomain içerebilir ve aynı sunucuda (Yetkili Name Serverda) birden çok bölge bulunabilir.
DNS Bölgesine yapılan her giriş “DNS / resource record (kaynak kaydı)” olarak isimlendirilir. Her kaynak kaydı, farklı bir kayıt türüyle ilişkilendirilir ve farklı bilgiler içerir. Örneğin: Bir domainin A kaydına girilen bir IP yada bir subdomain için girilen canonical name (CName) kaydı.
DNS zonelara ait tüm kayıtlar, bilgiler klasik bir metin dosyası içerisinde yetkili DNS serverda saklanır.
Birincil ve İkincil DNS Sunucuları Nedir?
Domain name system içerisinde gerçekleşen DNS sorgularının oluşturacağı yükün tek bir server üzerinde baskı yaratması ve olası server yanıt verememe, bağlantı hatası (çökme) gibi durumların önüne geçmek adına yetkili DNS serverın yükünün dağıtılmasında Birincil Name Server ve İkincil Name Server olmak üzere yedek DNS serverlar kullanılır. En az bir sunucunun her zaman kullanılabilir olması için birincil ve ikincil name serverlar birbirinden bağımsız ve yedekli olarak tasarlanmıştır.
İkincil ad sunucusu (Name Server), verilerini düzenli aralıklarla birincil ad sunucusuyla karşılaştırır ve genel DNS sorgu süreci içerisinde yedek sunucu görevi görür.
DNS (Domain Name System) Nasıl Çalışır ?
DNS çözümleme (DNS lookup), bir ana bilgisayar adının (www.dijitalzade.com gibi) bilgisayar dostu bir IP adresine (192.168.1.1 gibi) dönüştürülmesi sürecine verilen isimdir. En temelde ulaşılmak istenen domainin (alan adının) barındırıldığı server ile veri alışverişinin sağlanabilmesi adına kurulması gereken network bağlantısında gerekli olan IP adresi, DNS içerisinde gerçekleşen hiyerarşik sorgular ile belirlenir ve saklanır.
İnternete bağlı olan tüm cihazlara özel olarak verilen IP adresi, cihazlarla ve alan adlarının barındırıldığı sunucularla ağ üzerinden bağlantı kurulması için gereklidir.
DNS çözümlemesinin temel süreci şu adımlardan oluşur ;
- İstemci (Kullanıcı) bir tarayıcı üzerinden bağlanmak istediği domaine yönelik girdi gerçekleştirir.
- Tarayıcı, domainin hangi IP veya ağ adresine karşılık geldiğini bulmak için ağa (internete), recursive (Özyinelemeli) DNS sorgusu adı verilen bir mesaj gönderir.
- Tarayıcı tarafından gönderilen DNS Sorgusu, genellikle internet servis sağlayıcısı (ISS) tarafından otomatik olarak sağlanan DNS resolver serverına gönderilir. DNS resolver server, bağlanılmak istenen adrese yönelik DNS kayıtlarını önbelleğinde tutuyor ise yanıt olarak direkt bellekte tutulan bilgileri döndürür. Ancak mevcut değilse recursive (Özyinelemeli) DNS sorgusu çalışmaya devam eder.
- DNS kayıtları DNS resolver’ın önbelleğinde mevcut değil ise DNS resolver sırasıyla Root Server, TLD Server ve Yetkili Name Serverlar üzerinde istemciden gönderilen DNS sorgusunu gerçekleştirir.
- Üç sunucu türü de birlikte çalışır ve Resolver, sorgulanan IP adresini içeren bir DNS kaydı alana kadar Resolverı yönlendirir.
- Sorgu ve yönlendirme işlemi ilk olarak Root serverdan başlar ve Root server sorgu atılan domainin alan adı uzantısına göre resolver’ı ilgili TLD Name Serverına yönlendirir.
- DNS resolver, Root serverdan sonra ulaşılan TLD Name Serverda aynı DNS sorgusunu gerçekleştirir.
- DNS sorgusu sonrası TLD Name Server, DNS resolver servera, DNS kayıtlarından sorumlu yetkili name serverın ip adresini döndürür.
- TLD name server tarafından paylaşılan yetkili name serverın ip si ile DNS resolver isteği yetkili name servera iletir ve yanıt olarak domainin barındırıldığı ip adresine ulaşır. (Yetkili DNS Name Serverın sağlıklı çalıştığı durumda)
- Daha sonra DNS çözümleyici (Resolver) web tarayıcısına başlangıçta istenen etki alanının IP adresiyle yanıt verir ve bağlanılmak istenen web sayfası tarayıcıda yüklenir.
DNS Sorgu Tipleri Nelerdir ? (DNS Queries)
Tipik bir DNS çözümlemesinde üç tür sorgu tipi gerçekleşir. Aşağıdaki DNS sorgusu türleri, DNS çözümlemesinde farklı noktalarda gerçekleşen başlıca sorgulardır ;
Recursive Query (Özyinelemeli Sorgu)
Recursive bir sorguda, bir DNS istemcisi, bir DNS sunucusunun (Local DNS Recursive Resolver) istemciye istek gönderilen domain çözümlemesi ile alakalı bir IP kaydını yada hata mesajını döndürmesini iletir.
DNS resolver, DNS istemcisi tarafından gönderilen Domain çözümlemesi isteğini işleme alır ve istek ile alakalı başarılı IP çözümlemesini yada hata mesajını DNS istemcisine iletir.
Iterative Query (Yinelemeli Sorgu)
Bu sorgu türünde bir DNS istemcisi, bir DNS sunucusunun verebileceği en iyi yanıtı döndürmesine izin verir. Yine DNS resolver ile DNS serverları arasında gerçekleşen bu sorgu türünde, sorgulanan DNS sunucusunun sorgu adıyla alakalı bir kaydı yoksa, sorgulanan Name Server, domain namespace içerisinden daha düşük düzey yetkili bir DNS sunucusuna referans döndürür.
DNS Resolver daha sonra name serverdan iletilen diğer name server adresine sorguyu iletir. Bu işlem, DNS çözümlemesi gerçekleşip yetkili name serverdan tam bir IP yanıtı alınana kadar veya hata, zaman aşımı meydana gelene kadar sorgu zincirindeki ek DNS sunucularıyla devam eder.
Non-recursive Query (Özyinelemeli Olmayan Sorgu)
Non-recursive Queries (Özyinelemeli olmayan sorgular), recursive DNS resolver’ın yanıtı nereden alacağını zaten bildiği sorgulardır. Bu sorgu türünde yanıt daha öncesinde ya DNS resolver’da önbelleğe alınmıştır ya da DNS resolver, root ve TLD sunucularını atlamayı ve doğrudan belirli bir yetkili sunucuya gitmeyi bilir.
Tipik olarak, bir DNS sunucusu, ek bant genişliği tüketimini önlemek ve DNS içerisindeki sunuculara ekstra yük binmesini engellemek için DNS kayıtlarını önbelleğe alır.
DNS Cache (Önbellek) Sistemi
DNS kayıtlarını önbelleğe almanın amacı, bir DNS sorgusuna yanıt almak için gereken süreyi azaltmak ve DNS sunucularına binmesi muhtemel yükü azaltmaktır.
DNS kayıtlarını önbelleğe almadaki temel strateji, DNS sorgusunun daha erken çözülebilmesi ve DNS arama zincirinin daha kısa olması için verileri talep eden istemciye daha yakın bir yerde verilerin depolanmasını içerir. Böylece sorguyu gerçekleştiren istemcinin sorgu süresinde bir performans artışı ve sunucu tarafında CPU/Bandwith maliyetinde optimizasyon sağlanır.
DNS verileri birkaç yerde önbelleğe alınabilir. Bazı yaygın olanlar aşağıdakilerdir ;
Browser (Tarayıcı)
Günümüzde yaygın olarak kullanılan Apple Safari, Google Chrome ve Mozilla Firefox gibi çoğu tarayıcı, belirli bir süre için varsayılan olarak DNS verilerini önbelleğe alır. Tarayıcı DNS önbelleği, bir DNS isteği Local DNS resolver’a gönderilmeden önce kontrol edilen ilk kaynaktır.
İstemci bir domaine bağlanmak istediğinde ilk önce tarayıcının DNS önbelleği kontrol edilir. Tarayıcılarda DNS önbellekleme yapılmasının en temel amacı DNS isteğini gerçekleştiren istemciye en yakın uygulamada DNS kayıtlarının tutulması ve bu sayede DNS sorgusunu süresinin kısaltılmasını sağlamaktır.
İşletim Sistemi
İşletim sistemi düzeyindeki DNS çözümleyici (resolver), bir DNS sorgusu isteği, isteğin gönderildiği ana makineden ayrılmadan önceki ikinci ve son yerel duraktır. Bir uygulama üzerinden domaine yönelik çözümleme isteği gönderildiğinde ilk olarak tarayıcı önbelleği ve devamında isteğin gönderilmesinde kullanılan yerel bilgisayarda istek gönderilen kaynağa yönelik herhangi bir önbelleğin bulunup bulunmadığı kontrol edilir.
DNS sorgu süresinin kısaltılması ve sorgu maliyetlerinin azaltılması adına istemci tarafından uygulanan bu sistem ile DNS recursive resolver üzerinden bilgisayar dışındaki bir sunucuya istek gönderilmeden önce istemci iç kaynaklarının kullanılması sağlanır.
Eğer işletim sistemi “DNS client” üzerinde DNS çözümlemesi istenen kaynağa ait bir önbellek mevcut değil ise istek DNS resolver sunucusuna iletilir.
Recursive Resolver (DNS Resolver)
Bir DNS sorgusunun yanıtı, DNS resolver sunucusu üzerinde de önbelleğe alınabilir. DNS Resolver sunucuları yanıt döndürmek için gerekli kayıtlardan bazılarına sahip olabilir ve DNS sorgusu sürecini kısaltmak için DNS çözümleme sürecindeki bazı adımları atlayabilir.
DNS istemcisi üzerinden gelen isteklere yönelik önbellek, DNS resolver üzerinde mevcut ise herhangi bir recursive query gerçekleşmeden DNS resolver yanıtı DNS istemcisine iletebilir.
Örneğin DNS Resolver, önbelleğinde barındırdığı bilgilere göre DNS çözümleme sürecini kısaltmak için yetkili Name Server ip sini bildiği domainler için TLD ve Root name serverları es geçebilir. Böyle bir senaryoda resolver A / AAA kaydına sahip olmadığı ancak Name server ip lerini bildiği durumda Root ve TLD serverlara istek göndermeden doğrudan yetkili name serverlara ulaşarak sorgu isteğinde bulunabilir.