DNS Nedir?

DNS Ingilizce ‘Domain Name System’ cümlesinin kısaltması olan ‘Etki Alanı Ad Sistemi’dir.

Bir başka deyişle genel veya yerel ağlar içerisindeki telefon rehberi veya size hangi kitabın nerede olduğunu söyleyen bir kütüphane görevlisidir. Bu rehber içerisinde ağa bağlı bilgisayarlar, servisler ve diğer kaynaklar yer alır. Nasıl ki telefon rehberlerinde bir girdinin adı bir telefon numarasına karşılık geliyor ise DNS de aynı bilgileri saklar ve yapılandırma ile bizim belirlediğimiz istemcilere sunar.

DNS, kaynakları çözümlerken telefon numarası yerine ağa bağlı her cihaza atanan ve sayısal bir etiket olan IP adresini kullanır. IP adresleri versiyon 4 (IPV4 örnek: 192.168.1.1) ve versiyon 6 (IPV6 örnek : e3e2:f857:b292:7423:898d:ff86:908e:ce4a) olarak iki çeşittir. Düşünsenize 1000 küsür adet  sunucunuz var ve bunların adreslerini her soran olduğunda çok kısa bir süre içerisinde söylemek zorundasınız ! DNS, insanları sayısız IP adresini akılda tutmak külfetinden kurtaran bir yapıdır.

DNS Nasıl Çalışır ?

Basit olarak DNS çözümleme süreci, bir bilgisayar adını  bir DNS sunucusu vasıtası ile bir IP adresine dönüştürme işlemidir. Örnek olarak tamamen hayal ürünü olan http://dnsnedir.com alan adını alalım. İstemcinin (client) http://dosya.dnsnedir.com adresine gitmek istediğini varsayarsak, DNS çözümleme süreci en yalın hali ile aşağıdaki şekilde ilerleyecektir.

  • İstemci DNS sunucusuna http://dosya.dnsnedir.com adresine gitmek istediğini ve bu bilgisayar adınına sahip olan sunucusunun IP adresini sorar

  • DNS sunucusu istemciye 192.168.1.2 adresini gönderir (tabiki var ise !)

  • İstemci http://192.168.1.2 adresine yönelir ve istediği bilgiye ulaşır

DNS Kayıtlarının Çeşitleri

Kullanım yerine göre DNS kayıtlarının birçok çeşidi var (https://en.wikipedia.org/wiki/List_of_DNS_record_types) ancak ben bu yazıda sadece genel DNS kayıtlarına değineceğim.

✔︎ SOA (Start of Authority) DNS Kaydı

Bu kayıt bir DNS bölgesi için hangi sunucunun cevapları vermekte yetkili olduğunu belirler. Örnek vermek gerekir ise daha önce örnekte sorduğumuz dnsnedir.com DNS bölgesi için SOA kaydı mesela dns1.dnsnedir.com sunucusuna çözümlenir.

✔︎ NS (Nameserver) DNS Kaydı

Verilen bir DNS bölgesinde kullanılacak yetkili ad sunucularını belirlemek için kullanılır.

✔︎ MX (Mail Exchange) DNS Kaydı

Bu kayıt istemciyi bizim faraziye örneğimiz dnsnedir.com alan adımız içerisindeki mesaj aktarım aracılarının listesiyle eşleştirir. Bir başka deyişle e-posta sunucularını dışarıdan gelen istemciye söyler.

✔︎ A DNS Kaydı

En yaygın olarak bilgisayar adlarını IP adresiyle eşlemek için kullanılır.

✔︎ AAAA DNS Kaydı

A DNS kaydının IPV6 standardında olan halidir.

✔︎ PTR DNS Kaydı

Bu kayıt ters DNS kaydı olarak da bilinir ve şimdiye kadar anlattığımız bilgisayar adı -> IP Adresi dönüşümünün tam tersini yapar. İstemci burada IP adresi ile gelir ve DNS sunucu içerisinde yer alan bilgisayar adına ulaşır, tabiki var ise !

✔︎ CNAME DNS Kaydı

Bu kayıt bir DNS A kaydına takma ad vermek için kullanılır. Mesela kullanıcılar yanlışlıkla http://dosyalar.dnsnedir.com yazarlarsa http://dosya.dnsnedir.com adresine yine de yönlendirilsinler isterseniz CNAME DNS kaydını kullanmalısınız.

✔︎ SRV (Service Record) DNS Kaydı

Bu kayıt istemcilerin DNS sunucudan hizmet konumlarını alabilmelerini sağlar. Örnek vermek gerekir ise bir SIP sunucusu için aşağıdaki şekilde bir DNS SRV kaydına ihtiyaç vardır.

_sip._tcp.dnsnedir.com. 86400 IN SRV 0 5 5060 sipserver.dnsnedir.com.

✔︎ TXT DNS Kaydı

TXT kayıtları birden fazla iş yapmak için kullanılır. Önceleri sadece istemcilere metin iletmek için kullanılsa da daha sonra bu kaydın esnekliği sayesinde makine-okunabilir-veri taşımak için kullanılıyor. Mesela eposta sunucularının spam ile savaşmasında, bir epostanın hakikaten çıktığı gösterilen (eposta header bilgisinde) etki alanından gelip gelmediğinin kontrolleri gibi değişik işlerde çok işe yarar. Bu kayıtlara da DKIM, DMARC ve SPF olarak değinmiş olayım. Bu kayıtlarla ilgili bilgileri başka gönderilerde yazacağım.

Açık Kaynak DNS Sunucuları nelerdir ?

Açık kaynak dünyasında en çok kullanılan DNS sunucusu servisi BIND (Berkeley Internet Name Domain) servisidir. Hemen hemen bütün Linux dağıtımlarının paket yöneticileri vasıtası ile kurulabilir veya kaldırılabilir. Konteyner mimarisi kullananlara özel Docker üzerinde koşması için hazır docker imajları bile var (bakınız : https://hub.docker.com/r/internetsystemsconsortium/bind9 ). Diğer DNS sunucu servislerinden bazılarını ise aşağıda listeledim.

  • PowerDNS

  • KnotDNS

  • CoreDNS (kubernetes içerisindeki varsayılan DNS sunucusudur)

Yukarıda saydığım DNS servislerinin (sunucularının) her birinin diğerlerine göre artıları ve eksileri var ancak bunlar arasında özellikleri ve kullanım kolaylığı açısından en yaygın olarak kullanlan BIND’dır.

Elimden gelen en yalın haliyle DNS, DNS çözümleme süreci, DNS kayıt tipleri ve kullanılabilecek DNS sunucularını anlattım. Artık DNS’in ne işe yaradığını ve basit olarak nasıl çalıştığını biliyorsunuz ! Bu noktadan sonra merak etmek, okumak, öğrenmek, denemek, sorunla karşılaşmak, sorunu tespit etmek, gidermek ve arkanıza yaslanıp ‘ben bu işi anladım’ demek size kalıyor !

Bol açık kaynaklı günler !