DNS 1: DNS Nedir?

Süleyman Düzdaban
Turk Telekom Bulut Teknolojileri
9 min readJan 4, 2023

DNS (Domain Name System), bilgisayar ağları arasında gerçekleştirilen erişimler sırasında isim ve IP adresleri için çeviri gerçekleştirilmesini sağlayan dağıtık ve hiyerarşik bir ağ sistemidir.

DNS’in Tarihi

IP adreslerinin kullanıldığı ilk ağ sistemlerinden ve aynı zamanda Internet’in de öncülü olan ARPANET döneminde ilk gelişmeler yaşanmıştır. Daha çok araştırma projelerine ilişkin kaynakları paylaşmak için, Internet’e göre oldukça küçük bir topluluk tarafından kullanıldığı halde bilgisayar ağları arası erişim ihtiyacı arttıkça ARPANET’e dahil olan bilgisayarları kullanan insanların kaynaklara erişmek için kullanmaları/bilmeleri gereken IP adreslerinin sayısı da artmıştır. Bu dönemde, IP adresine göre daha basit ve hatırlanabilir isimler kullanma fikri doğmuştur.

Stanford Research Institute tarafından, IP adresleri ile bu adreslere işaret edecek olan isimlerin (alan adları) tutulduğu HOSTS.txt isimli bir dosya yönetilerek ARPANET ağına dahil olan kullanıcılar ile paylaşılmasına başlanmıştır. Dosya, ARPANET ağındaki bilgisayarlar tarafından indirilerek işletim sistemi tipine göre değişen sabit bir konuma yüklenmekteydi. Temin edilen HOSTS.txt dosyasında yer almayan bir adrese erişmek isteyen kullanıcılar kendi bilgisayarlarındaki kopyayı düzenleyip IP adresi yerine isim kullanarak erişim sağlayabiliyorlardı. Bu yeni IP adresine diğer ARPANET kullanıcılarının da erişmesi isteniyorsa SRI tarafından yönetilen HOSTS.txt dosyasında düzenleme yapılması için geri bildirimde bulunulması gerekiyordu. ARPANET ağı büyüdükçe bu yapı yönetilebilir olmaktan uzaklaşmıştır (Uzun bir süre boyunca, HOSTS.txt dosyasına eklenmesi istenen yeni alan adları ile IP adresleri, SRI’da bu dosyayı yönetmekle görevli kişiye mesai saatleri içerisinde telefonla ulaşılarak gerçekleştirilirmiş).

Artık tek bir kurumun yönettiği, ilk “alan adı-IP veritabanı” olarak tanımlanabilecek bir HOSTS.txt dosyası bulunmuyor; fakat bu dosyanın her kullanıcı bilgisayarında tutulan kopyası hala kullanılmaktadır. Hatta bir alan adının hangi IP adresine işaret ettiğini öğrenmek için işletim sistemleri tarafından varsayılan olarak ilk önce bu dosyaya başvurulur.

Bu dosyanın içeriği yönetici yetkili kullanıcılar tarafından düzenlenebilir. Özellikle erişim testleri sırasında DNS kayıtlarını düzenlemeden yalnızca bu dosyanın içeriğinin düzenlenmesi yaygın bir uygulamadır. Güncel Windows işletim sistemlerinde bu dosya “%SystemRoot%\System32\drivers\etc” dizininde, Unix-temelli işletim sistemlerinde genellikle “/etc” dizininde “hosts” ismiyle yer alır.

Örnek bir hosts dosyası içeriği:

192.168.0.7 testapp.example.com
192.168.0.8 testdb.example.com

1983 yılında DNS, 1984 yılında ise ilk Unix DNS server uygulaması olan BIND yaratılmıştır.

BIND, hala Unix sistemlerde kullanılan en yaygın DNS server uygulamasıdır.
Windows sunucu işletim sistemlerinde ise yerleşik bir DNS server uygulaması yer alır ve bir rol olarak etkinleştirilebilir.

IP (Internet Protocol) Adresi

En büyük bilgisayar ağları arası erişim sistemi olan Internet, ağlar arası erişim için IP (Internet Protocol) adreslerini kullanır. Örneğin bir kullanıcının, bilgisayarındaki web tarayıcı aracılığıyla amazon.com adresine erişmesi için kullanıcının IP adresi ile amazon.com’un IP adresi arasında erişim gerçekleştirilir.

Bir IP adresi (v4), nokta işareti (“.”) ile ayrılmış 0–255 arası 4 adet onluk sayıdan oluşur (Ör: 84.122.9.211).
Neredeyse her bilgisayar ya da bilgisayar ağı için farklı bir IP adresi kullanılması gerekmektedir.

Internet gibi geniş alan ağlarında olduğu gibi yerel ağlarda ve yerel ağlar arası erişim için de IP adresleri kullanılabilmektedir.

Alan Adı (Domain Name)

Bir ağ bölümünü temsil eden metinsel ifadelerdir.
Hem yerel ağlarda hem de Internet gibi ağlar arası erişimlerde kullanılabilirler.

Internet (DNS) alan adlarının özellikleri:

  • Alan adı tescil işlemiyle, isteyen herkes Internet’te kullanmak üzere bir alan adı edinebilir.
  • Yalnızca belirli bir ağ alanını temsil ettikleri için bu alanı (DNS zone) yönetme yetkisi alan adının sahiplerine verilebilir (delegasyon).
  • Genellikle IP adresi ya da alan adları da dahil diğer metinsel ifadelere işaret ederler.
  • Nokta (“.”) işareti ile ayrılmış bir biçimde kullanılarak alt alan adlarını da (apex domain ya da host name gibi FQDN) temsil edebilirler.
  • (Root Domain hariç) Internet alan adları için yalnızca harf, rakam ve tire (“-”) karakterleri kullanılabilir (Tire karakteri, alan adının ilk ve son karakterleri olarak kullanılamaz).
  • DNS’e kayıtlı tüm isimler (“com.”, “org.”, “amazon.com.”, “turkiye.gov.tr.” gibi) birer alan adıdır.

DNS alan adları “zone” denen bölümlerden oluşan hiyerarşik bir isim uzayı içerisinde yer alır.

Bu hiyerarşik yapının en üst seviyedeki ögesi, Root Zone yada Root Domain diye isimlendirilir. Root zone, nokta (“.”) karakteriyle temsil edilir (“turkiye.gov.tr” ile “turkiye.gov.tr.” ifadeleri aynı alan adına işaret eder); fakat Internet’te alan adları kullanılırken genellikle root zone’u ifade etmek için alan adlarının en sonunda yer alması gereken bu nokta karakteri göz ardı edilir (Web tarayıcınızın adres çubuğuna “google.com” yerine “google.com.” yazarak da erişmeyi deneyebilirsiniz).

DNS root zone’u barındıran toplam 13 adres bulunmaktadır. Bu adresler ve üzerindeki kayıtları düzenleyen kurumlar şunlardır:

Bu 13 farklı IP adresi yalnızca 13 farklı sunucuya tahsis edilmiş olmayıp Dünya üzerindeki farklı coğrafyalarda yer alan yüzlerce sunucuya tahsis edilmiş durumda olduğundan aslında root zone’u barındıran sunucuların sayısı 13 adet değildir.
DNS cache vb. mekanizmalarla temin edilemeyen DNS kayıtları için başlatılan DNS çözümleme işlemleri sırasında ilk olarak başvurulan sunuculardır.

Hiyerarşik olarak ikinci sırada Top-Level Domain (TLD) olarak isimlendirilen “birinci seviye alan adları” yer alır. Bu zone içerisinde yer alabilecek alan adları ICANN (Internet Corporation for Assigned Names and Numbers) ve bağlı kuruluşları tarafından belirlenir ve sayıları sınırlıdır. “com”, “net”, “org” gibi genel alan adları (gTLD) ile “tr”, “uk”, “de” gibi ülke kodu alan adları (ccTLD) bu zone’da yer alan bazı alan adı örnekleridir. IP adreslerine ilişkin DNS çözümleme işlemlerinde kullanılan “arpa” alan adı da bu zone’da yer alan birinci seviye bir alan adıdır. Bu alan adlarının yetkili DNS sunucularına ait bilgiler root zone’da saklanır.

Üçüncü sırada, Second-Level Domain (SLD) olarak isimlendirilen “ikinci seviye alan adları” yer alır. Genellikle bir alan adı sahiplenmek isteyen kullanıcılar tarafından bu alan adları için tescil işlemleri gerçekleştirilir. Bazı örnek alan adları: amazon.com, turkiye.gov.tr, google.com.

Bazı ikinci seviye alan adları ise tıpkı birinci seviye alan adlarında olduğu gibi ICANN tarafından belirlenmiş ve tescil işlemine kapalıdır. “gTLD” ve “ccTLD” birleşiminden oluşan ve “ccSLD” olarak da adlandırılan bazı alan adları (Ör: “co.uk”, “com.tr”, “org.tr”, “gov.tr” vb.) bu kategoridedir. İkinci seviye alan adlarının yetkili DNS sunucularına ait bilgiler birinci seviye zone (TLD)’unda saklanır.

Noktayla ayrılmış her ifade, kendi sağındaki ifadenin (yani alan adının) alt alan adı (sub-domain) olarak adlandırılır.
En sağdan başlayarak noktayla ayrılmış her ifade kendi solundaki ifadenin yani alt alan adının yetkili DNS sunucularına ait bilgileri barındırır. Bu yüzden DNS çözümleme işlemi alan adlarının sağından başlar.

Bir ccSLD’nin veya bir TLD’nin yalnızca bir seviye altındaki alan adları için tescil işlemleri gerçekleştirilebilir. Zira, tescil işlemi gerçekleştirilerek sahip olunan bir alan adının tüm sub-domain’lerini kullanma hakkı da elde edilmiş olur. Bu yüzden örneğin “amazon.com” veya “turkiye.gov.tr” için tescil işlemi gerçekleştirilebilirken “login.amazon.com” veya “test.giris.turkiye.gov.tr” için tescil işlemi gerçekleştirilemez; bunun yerine bu sub-domain’ler (“host name” olarak da adlandırılırlar.) ait oldukları üst seviye domain’in bulunduğu DNS sunucudaki zone altında yönetilebilirler.

Alan Adı Tescil (Domain Name Registration)

Alan adı tescil işlemleri genellikle ICANN tarafından yetkilendirilmiş alan adı kayıt firmaları (registrar) ya da aracı kurumlar (reseller) aracılığıyla gerçekleştirilir (Bu kurumlardan bazıları: GoDaddy, Natro, Turkticaret vb.).

Tescil hizmeti veren bu kurumlar aracılığıyla satın alınan alan adının yetkili DNS sunucularının adresleri belirtilir.
Burada belirtilen DNS sunucu adresleri, bu kurumlar tarafından ilgili üst seviye zone’lara bildirilir.
Böylece alan adı için root DNS sunucuları aracılığıyla DNS çözümleme işlemi gerçekleştirilebilmesi sağlanmış olur.

“tr” alan adının sub-domain’leri için tescil işlemleri uzun yıllar boyunca Orta Doğu Teknik Üniversitesi’ne bağlı bir kuruluş olan “nic.tr” aracılığıyla yürütülmüştür.

12 Eylül 2022 itibariyle “nic.tr” tarafından sunulan hizmetler sonlandırılmış; bu yetkiler BTK (Bilgi Teknolojileri Kurumu)’ya bağlı bir kuruluş olan TRABİS (“tr” Ağ Bilgi Sistemi)’e devredilmiştir. TRABİS tarafından, alan adı tescil işlemleri ile ilgili olarak https://www.trabis.gov.tr/page/2 adresinde belirtilen kurumlar yetkilendirilmiştir.

URL vs Domain Name, DNS vs HTTP(S) (vd.)

Bilkent Üniversitesi’nin web sayfasına erişmeyi deneyin.

Bu web sayfasına birkaç farklı yöntemle erişebilirsiniz. Örneğin web sayfasının alan adını biliyorsanız web tarayıcınızın adres çubuğuna yalnızca “bilkent.edu.tr” yazarak Enter’a bastığınızda web sayfasına ulaşabilirsiniz.
Sayfanın alan adını bilmiyorsanız Google gibi bir arama motorunda “bilkent üniversitesi” ifadesini arattığınızda muhtemelen arama sonuçları arasındaki en üstte yer alan bağlantı Bilkent Üniversitesi’nin web sayfasına erişmenizi sağlayacaktır.

Web sayfasının adresini bildiğinizi varsayarak devam edelim (Arama motoru sonuçlarından ilgili olanı seçtiğiniz takdirde de süreç neredeyse aşağıda açıklandığı gibi işleyecektir).

Web tarayıcınızın adres çubuğuna yalnızca “bilkent.edu.tr” yazıp Enter’a bastığınızda web sayfasının içeriği görüntülenecektir.
Fakat web tarayıcınızın adres çubuğundaki ifade “https://w3.bilkent.edu.tr/www/" şeklinde görüntülenmeye başlar (Adresin bu şekilde göründüğünden emin olmak için tarayıcınızın adres çubuğuna bir defa tıklayın ve klavyenizdeki sol yön tuşu ya da Home tuşuyla imleci en sola taşıyın. Ayrıca adres çubuğundaki ifadelerin tümünü seçtikten sonra bir metin editörüne yapıştırarak da tam ifadeyi görebilirsiniz).

https://w3.bilkent.edu.tr/www/" ifadesi bir alan adı değil, (alan adını da içeren) bir URL (Uniform Resource Locator)’dir.

Bu ifade içerisinde yer alan “https://” ifadesi, web tarayıcı tarafından ilgili web sayfasının içeriğinin tutulduğu adreslere erişmek, içeriği yüklemek ve biçimlendirmek için HTTPS (Hypertext Transfer Protocol Secure) uygulama protokolünün kullanılacağını/kullanıldığını belirtir. HTTP(S) web sayfalarını yayınlamak ve görüntülemek için kullanılan standart protokoldür. Modern tarayıcıların tamamı, herhangi bir protokol belirtilmediği takdirde, adres çubuğuna girilen adrese önce HTTPS ile, HTTPS desteklenmiyorsa HTTP ile erişmeyi dener. “https://” ya da “http://” ifadeleri tarayıcı tarafından otomatik olarak adres çubuğuna eklenir.

“http” ifadesi adres çubuğuna girilen adresin 80. port’una, “https” ifadesi ise 443. port’una erişileceği anlamına gelir. Eğer HTTP protokolü için 80'den, HTTPS için de 443'ten farklı bir port kullanmak istiyorsanız URL içerisinde alan adından hemen sonra iki nokta (“:”) karakteri ve ardından erişmek istediğiniz port numarasını girebilirsiniz. 80 ve 443 ilgili protokoller için standart port numaraları olduğu için tarayıcılar tarafından varsayılan olarak adres çubuğunda görüntülenmezler; fakat “http://bilkent.edu.tr" ile “http://bilkent.edu.tr:80" ifadesi; “https://bilkent.edu.tr" ile de “https://bilkent.edu.tr:443" ifadesi aynı anlama gelir ve birbirleri yerine kullanılabilir.

URL içerisindeki “w3.bilkent.edu.tr” (ve en başta girdiğimiz “bilkent.edu.tr”) ifadesi alan adını ifade eder.

URL içerisindeki “/www/” ifadesi görüntülenen sayfanın içeriğinin, bu içeriğin tutulduğu adreslerdeki konumunu ifade eder. Alan adından sonraki ilk “/” karakterinden itibaren, varsa, “?” ya da “#” karakterlerine kadarki ifadelerin tamamıdır. Konum, genellikle web sayfasının içeriğinin tutulduğu adresteki bir klasör ya da dosya adına işaret eder.

Adres çubuğuna “bilkent.edu.tr” ifadesini girdiğimiz halde bu adresin “w3.” ve “/www/” ifadelerini de içerecek şekilde değiştirilmesine neden olan şey ise HTTP redirection işlemidir. Bu işlem genellikle HTTP sunucu, HTTP gateway (Load Balancer, Web Application Firewall vb.) ya da HTTP proxy uygulamaları tarafından gerçekleştirilir ve web tarayıcılar aracılığıyla kullanıcıların farklı adreslere yönlendirilmesi sağlanır.

Bu başlık altında buraya kadar anlatılan adres değişikliği (tarayıcının adres çubuğundaki ifadelerin değiştirilmesi) ve yönlendirme (HTTP redirection ile kullanıcıların farklı adreslere yönlendirilmesi) işlemlerinin hiçbiri DNS tarafından gerçekleştiril(e)mez. Web sayfalarının içeriğinin görüntülenmesi, erişilen görünür adreslerin değiştirilmesi ve kullanıcıların farklı adreslere yönlendirilmesi yalnızca HTTP(S) protokolü kapsamında, web tarayıcı ve HTTP(S) sunucular gibi bu protokolün bileşenleri vasıtasıyla gerçekleştiril(ebil)ir.

Web tarayıcı, web sayfasının içeriğini görüntüleyebilmek için bu içeriği HTTP sunuculardan temin eder. Internet’te ağlar ya da bilgisayarlar arası erişim IP adresleri ile gerçekleştirildiğinden web tarayıcı, HTTP sunucuların IP adreslerine ihtiyaç duyar. İşte yalnızca bu aşamada, IP adresini öğrenmek için web tarayıcı DNS’e başvurma ihtiyacı duyabilir (IP adresini öğrendikten sonra gerçekleştirilecek olan yönlendirme, görünür adres değişikliği vb. işlemler de yine DNS’in kapsamı dışındadır).

DNS’e başvurması gerektiğinde ise URL içerisinden yalnızca alan adını ayıklayarak bu alan adına (örneğimizde “bilkent.edu.tr”) yönelik isim çözümleme sürecini başlatırlar (Bir web sayfasının içeriği, adres çubuğuna girdiğiniz alan adından farklı alan adlarına da erişmenizi gerektirebilir. Bu durumda yalnızca adres çubuğuna girdiğiniz alan adı için değil sayfanın içeriğinin yüklenebilmesi için diğer alan adlarına yönelik DNS sorgulaması da gerçekleştirilmesi gerekir. Web tarayıcılar bu adresler için isim çözümleme sürecini otomatik olarak başlatırlar. Örneğin “bilkent.edu.tr”ye erişmeyi denediğinizde önce “bilkent.edu.tr” için isim çözümleme gerçekleştirilir ardından, HTTP sunucular tarafından adres çubuğundaki alan adının “w3.bilkent.edu.tr” olarak değiştirilmesi, yani artık “w3.bilkent.edu.tr” adresine de erişmemiz gerektiği bildirildiği için tarayıcı bu adres için de isim çözümleme sürecini başlatır).

Bilkent Üniversitesi’nin web sayfasına erişmek için “bilkent.edu.tr” alan adı yerine bu alan adının işaret ettiği IP adresini kullanacak olursak bir isim çözümlemeye ihtiyaç duyulmayacağından web tarayıcı tarafından DNS’e başvurulmayacaktır.

Web tarayıcıda yeni boş bir sekme açın ve adres çubuğuna “https://139.179.10.40" ifadesini girerek Enter’a basın. Sertifika doğrulamayla ilgili uyarıyı, riski kabul ederek atlayın. Bu işlemden sonra adres çubuğundaki ifade “https://139.179.10.40" yerine yine “https://w3.bilkent.edu.tr/www/" olarak değiştirilecek ve web sayfasının içeriği yine başarıyla görüntülenecektir.

Bir alan adı yerine IP adresi kullandığımız için web tarayıcı tarafından DNS’e başvurulmayacağından emin olduğumuz için “139.179.10.40” adresinden “w3.bilkent.edu.tr” adresine yönlendirilmemizi sağlayan işlemi DNS dışındaki bir bileşenin (örneğimizde, HTTP sunucu ile web tarayıcı) gerçekleştirdiğinden de emin olabiliriz (Adres çubuğundaki ifade “https://w3.bilkent.edu.tr/www/" olarak değiştirildikten sonra “w3.bilkent.edu.tr” alan adı için DNS’e başvurulabilir fakat bu yönlendirme sonrası bir işlemdir). Zira, bu metnin yazıldığı tarih itibariyle “139.179.10.40” IP adresini “w3.bilkent.edu.tr” ile ilişkilendiren herhangi bir DNS kaydı bile bulunmamaktadır. Yine “w3.bilkent.edu.tr”nin IP adresi olan “139.179.10.110” ile bu adresleri ilişkilendiren herhangi bir DNS kaydı da bulunmamaktadır.

(Örneğin Hacettepe Üniversitesi’nin web sayfası olan “https://hacettepe.edu.tr" için HTTP sunucularda bir yönlendirmeye ihtiyaç duyulmamış. Adres çubuğuna “https://193.140.216.43" ifadesini girip Enter’a basın. “hacettepe.edu.tr” alan adı için DNS’e başvurulmayacak, web sayfasının içeriği başarıyla görüntülenecek, herhangi bir yönlendirme gerçekleştirilmeyecek ve adres çubuğundaki ifade IP adresi olarak kalmaya devam edecektir.)

DNS yalnızca alan adları ve IP adresleri için çözümleme gerçekleştirmek üzere kullanılabilir bir sistemdir. Bu yüzden URL’nin alan adı dışındaki hiçbir bölümü DNS’in kapsamına girmez.

Örneğin alan adından IP adresine işaret eden bir A kaydı, alan adı için “bilkent.edu.tr/www” ya da “http://bilkent.edu.tr" ya da “https://bilkent.edu.tr:8185/www/index.php?id=3129#take-me-here" ifadeleri kullanılarak oluşturulamaz (DNS sunucu uygulamaları sözdizimi kontrolü sırasında hata tespit ederek değişikliğe izin dahi izin vermez). DNS sorguları da URL değil, yalnızca alan adları ya da IP adresleri kullanılarak yapılabilir.

Bu açıklamalardan anlaşılacağı üzere, DNS aracılığıyla alan adının işaret ettiği IP adresinin başarıyla temin edilmesinden sonra tespit edilecek sorunların (adres çubuğundaki URL’nin beklenen değer ile değiştirilmemesi, beklenen web sayfası içeriğinin görüntülenmemesi, kullanıcıların farklı bir adrese yönlendirilmemesi vb.) sebebi, DNS dışında aranmalıdır. Bu uyarı, yukarıdaki örnekte ele aldığımız A kaydı dışındaki diğer DNS kayıt tiplerine (MX, PTR, SRV, CNAME, NS vd.) yönelik sorgulamalar için de geçerlidir.

Bu yüzden örneğin “bilkent.edu.tr” ile “139.179.10.40” arasında ilişki kuran bir A kaydı için,

  • “bilkent.edu.tr’yi 139.179.10.40'a yönlendirir (İng. ‘redirecting’)”

ifadesi değil;

  • “bilkent.edu.tr için 139.179.10.40 adresine işaret eder (İng. ‘pointing’)”

ya da

  • “bilkent.edu.tr’yi 139.179.10.40 ile eşleştirir (İng. ‘mapping’)”

ifadeleri kullanılır.

--

--