DNS Nedir, Nasıl Çalışır?

Her makinada nameserver, dhcp veya elle atatanmış olduğu için oradaki domain sunucularına sorar (Recursive). TLD(TopLevelDomain)‘e sorar o sunucuda .com kaydı tutan sunuculara sordurur burdan com.tr domainlerini tutan sunucuya yönlendirir buradan da mertcangokgoz.com.tr sunucusunun ip adresini önbelleğe alır ve bundan sonraki isteklerde bu yapılan işlemler tekrardan gerçekleşmez.

DNS(Domain Name System) website adreslerini ip adreslerine çevirmek için geliştirilmiştir. 2003 yıllından sonra web sitelerinin sayısı ip adreslerini geçmeye başlayacağı için tek bir makinada birden fazla site bulunmaya başlamıştır.

dns sunucusu, dns nasıl yapılandırılırPin
Photo by Christina @ wocintechchat.com on Unsplash

İşletim sistemi ilk olarak gelen DNS kaydını /etc/hosts veya /system32/drivers/etc/hosts dosyalarına bakar varsa direk bu ip adresini kullanır. Eğer herhangi bir kayıt yoksa, DHCP sunucusunun bize atadığı DNS sunucusu olan örneğin 1.1.1.1 ip adresli DNS sunucusuna “mertcangokgoz.com.tr” alan adını sorar.

1.1.1.1’de ki DNS sunucusu mertcangokgoz.com.tr alan adının ip adresini bilmese de *.tr kayıtlarını tutan nic.tr sunucusuna “mertcangokgoz.com.tr” sorar, en son mertcangokgoz.com.tr alan adının geriye doğru geçtiği rotalarda yer alan DNS sunucularına ip adresi eklenir ve 1.1.1.1 bize istediğimiz alan adının ip adresini döndürür. Bizim yaptığımız bu işlem den hemen sonra 1.1.1.1 ip adresli DNS sunucusuna birisi veya birileri mertcangokgoz.com.tr sorarsa bu işlemler tekrardan yaşanmaz ve cevap direk olarak 1.1.1.1 üzerinden gönderilir.

fiber optik kablo, fiber kablo görsel, dns fiber temsiliPin
Photo by Kirill Sh on Unsplash

Artık 1.1.1.1’in kendi içinde “mertcangokgoz.com.tr” kaydı bulunur olduğu için daha sonraki DNS isteklerinde yapılan son aşamadaki işlem DNS isteklerini hızlandırır.

  • Hostname: Makinaya verilen kimlik bilgisi.
  • Domain: Bir grup bilgisayarın oluşturduğu ağa verilen kimlik bilgisi.

mertcangokgoz.com.tr içinde mail ve web siteleri olabileceği için DNS kayıt tipleri vardır bunlar genellikle:

  • A: Website kayıtları için.
  • MX: Mail atmak istenildiğinde sorulan DNS kaydıdır.
  • TXT: Text, validation için kullanılabilir.
  • CNAME: Yönlendirme yapmak istenildiği zaman kullanılır mesela wiki.mertcangokgoz.com.tr domainini data.mertcangokgoz.com.tr‘ye linkleyebiliriz.
  • AAAA: IPv6 kayıtları için.
$ nslookup
> server
Default server: X.X.X.X
Address: X.X.X.X#53
$ dig mertcangokgoz.com.tr
...
mertcangokgoz.com.tr.       2846    IN  A   139.179.179.3
...
$ dig MX mertcangokgoz.com.tr # MAIL Server
mertcangokgoz.com.tr.       7200    IN  MX  10 mail.mertcangokgoz.com.tr.
$ nslookup postaci.mertcangokgoz.com.tr
...
Server:     192.168.42.129
Address:    192.168.42.129#53
...
$ dig NS mertcangokgoz.com.tr # DNS Serverleri
...
mertcangokgoz.com.tr.       7199    IN  NS  venus.mertcangokgoz.com.tr.
mertcangokgoz.com.tr.       7199    IN  NS  tor.mertcangokgoz.com.tr.
...

$ dig . ns # TopLevelDomain listesi
...
.                       94359   IN      NS      c.root-servers.net.
.                       94359   IN      NS      f.root-servers.net.
.                       94359   IN      NS      j.root-servers.net.
.                       94359   IN      NS      d.root-servers.net.
.                       94359   IN      NS      e.root-servers.net.
.                       94359   IN      NS      a.root-servers.net.
.                       94359   IN      NS      l.root-servers.net.
.                       94359   IN      NS      h.root-servers.net.
.                       94359   IN      NS      k.root-servers.net.
.                       94359   IN      NS      m.root-servers.net.
.                       94359   IN      NS      g.root-servers.net.
.                       94359   IN      NS      i.root-servers.net.
.                       94359   IN      NS      b.root-servers.net.
...
$ dig mertcangokgoz.com.tr a @a.root-servers.net
...
;; AUTHORITY SECTION:
tr.                     172800  IN      NS      ns21.nic.tr.
tr.                     172800  IN      NS      ns22.nic.tr.
tr.                     172800  IN      NS      ns31.nic.tr.
tr.                     172800  IN      NS      ns41.nic.tr.
tr.                     172800  IN      NS      ns42.nic.tr.
tr.                     172800  IN      NS      ns91.nic.tr.
tr.                     172800  IN      NS      ns92.nic.tr.
...
$ dig mertcangokgoz.com.tr a @ns21.nic.tr.
; <<>> DiG 9.10.3-P4-Debian <<>> mertcangokgoz.com.tr a @ns21.nic.tr.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32917
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 3
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mertcangokgoz.com.tr.              IN      A

;; AUTHORITY SECTION:
mertcangokgoz.com.tr.           43200   IN      NS      venus.mertcangokgoz.com.tr.
mertcangokgoz.com.tr.           43200   IN      NS      tor.mertcangokgoz.com.tr.

$ dig mertcangokgoz.com.tr a @mail.mertcangokgoz.com.tr

Bu sunucular recursive olmayan isteklere yanıt vermez.

$ dig mertcangokgoz.com.tr @

; <<>> DiG 9.10.3-P4-Debian <<>> mertcangokgoz.com.tr @
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14270
;; flags: qr aa rd; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;mertcangokgoz.com.tr.            IN      A

;; ANSWER SECTION:
mertcangokgoz.com.tr.     86400   IN      CNAME   mertcangokgoz.com.tr.
mertcangokgoz.com.tr.         86400   IN      A       

;; AUTHORITY SECTION:
mertcangokgoz.com.tr.         86400   IN      NS      venus.mertcangokgoz.com.tr.
mertcangokgoz.com.tr.         86400   IN      NS      tor.mertcangokgoz.com.tr.

;; ADDITIONAL SECTION:
ns1.mertcangokgoz.com.tr.     86400   IN      A       
ns2.mertcangokgoz.com.tr.     86400   IN      A       

;; Query time: 8 msec
;; SERVER: #53()
;; WHEN: Mon Jul 23 11:22:12 +03 2018
;; MSG SIZE  rcvd: 145

$ dig mertcangokgoz.com.tr @8.8.8.8

; <<>> DiG 9.10.3-P4-Debian <<>> mertcangokgoz.com.tr @8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15285
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;mertcangokgoz.com.tr.            IN      A

;; ANSWER SECTION:
mertcangokgoz.com.tr.     21599   IN      CNAME   mertcangokgoz.com.tr.
mertcangokgoz.com.tr.         21599   IN      A       188.166.45.9

İlk sorguda 86400 iken google sunucusunda 21599 olmasının nedeni google’ın dns sunucusunun önbelleğinde bu domainin kaydının olmasıdır.

Scapy

$ scapy
>>> ip = IP(dst="192.168.42.129",version=4)
>>> ud = UDP(sport=61,dport=53)
>>> dn = DNS(rd=1,qd=DNSQR(qname="linux.org.tr"))
>>> send(ip/ud/dn)

Wireshark üzerinden dönen dns sorgusunu inceleyebilirsiniz.

$ hping3 # Paket üretmek için kullanılabilir
$ hping3 --udp --destport 53 --rand-source <NSServer> --flood

Sistem Uzmanı, Linux Hacısı, El-Kernel

Yorum yapın