DNS kayıtlarını sorgularken en ulaşılabilir araç olan nslookup ın kullanımı görelim.
# Tipik kullanım
nslookup gokhankesici.com
Server: 172.16.227.2 Address: 172.16.227.2#53 Non-authoritative answer: Name: gokhankesici.com Address: 104.28.30.61 Name: gokhankesici.com Address: 2400:cb00:2048:1::681c:1f3d
Yukarıdaki tipik kullanımda gokhankesici.com adresinin IP adresi (A,AAA) kayıtlarını sorgular. Server kısmında DNS sorgusunun yapıldığı sunucuyu gösterir.
# DNS Server Belirtme
DNS sorgusunu kendi sistemimizde tanımlı DNS sunucuya değilde başka bir dns sunucuya da direkt sorabilirsiniz. Bunun için sorgulanacak adresin ardından dns sunucu adresi girilir.
nslookup gokhankesici.com 1.1.1.1
# Kayıt Alanı Sorgulama
Bir dns kaydı içerisinde yer alan kayıtları aşağıdaki gibi sorgulayabilirsiniz. -query ifadesinin sorgulayacağınız adresten önce gelmesine dikkat ediniz.
nslookup -query=A google.com nslookup -query=MX google.com nslookup -query=NS google.com nslookup -query=SOA google.com nslookup -query=TXT google.com nslookup -query=CNAME www.gmail.com
# Reverse DNS
IP den isme ulaşmak için hedef sunucu da PTR tanımının yapılmış olması gerekmektedir. Eğer tanımlıysa direkt ip vererek veya query typeını belirterek sorgulama yapabilirsiniz.
nslookup 8.8.8.8 nslookup -query=PTR 8.8.8.8
# Recursive, Iterative Query
Kayıtları sorgulamak dışında istekleri iki tipte iletiriz. Biri iterative, diğeri ise recursive. Özellikle Wiresharkla bir dns paketini açıp incelerseniz recursive ile ilgili flagi görebilirsiniz.
Örneğin google.com adresini sorguladığımızda dns sunucumuza yaptığımız istek recursivedir. DNS sunucumuz ile diğer isim sunucular arasındaki istekler ise iterativedir.
Özellikle name serverınız internete açıksa kesinlikle yönetmediğiniz kayıtlar için recursive sorgulara isim sunucumuzun cevap vermemesi beklenir. Yoksa isim sunucumuzu Googleın 8.8.8.8 DNS servisi gibi kullanabilirler.
Örneğin bir dns sunucusuna recursive istek yaptığımızda eğer recursive kabul ediliyorsa bize yanıt dönecektir.
nslookup -recurse gokhankesici.com 8.8.8.8 Server: 8.8.8.8 Address: 8.8.8.8#53 Non-authoritative answer: Name: gokhankesici.com Address: 104.28.30.61 Name: gokhankesici.com Address: 104.28.31.61
Eğer recursive aktifse ve isim sunucunda kayıt mevcutsa yine cevap dönecektir.
nslookup -recurse gokhankesici.com chris.ns.cloudflare.com Server: chris.ns.cloudflare.com Address: 173.245.59.85#53 Name: gokhankesici.com Address: 104.28.30.61 Name: gokhankesici.com Address: 104.28.31.61
Eğer recursive aktifse ve isim sunucusunda kayıt mevcut değilse isim sunucusundan red görüyor olacaksınız.
nslookup -recurse google.com chris.ns.cloudflare.com Server: chris.ns.cloudflare.com Address: 173.245.59.85#53 ** server cant find google.com: REFUSED
Iterative bir querye eğer isim sunucusunda kayıt mevcutsa cevap döner. Aksi durumda red görüyor olacaksınız.
nslookup -norecurse gokhankesici.com chris.ns.cloudflare.com Server: chris.ns.cloudflare.com Address: 173.245.59.85#53 Name: gokhankesici.com Address: 104.28.31.61 Name: gokhankesici.com Address: 104.28.30.61
# Interaktif Mod
Yukarıdaki komutlar interaktif olmayan moda örnektirler. İnteraktif modda ise nslookup aracı sizden sürekli direktif bekliyor. exit dediğinizde ise interaktif moddan çıkıyor. Örnek bir gösterim:
> nslookup > server 8.8.8.8 > set type=ns > gokhankesici.com > exit
Örneğin yukarıdaki interaktif moddaki komutlarda 8.8.8.8 dns sunucusuna gokhankesici.com un ns kaydını sorduk.
# Debugging
Interaktif modda iken set debug (veya d2 ) diyerek daha detaylı sonuçları görebilirsiniz. Çıktılar da işletim sistemi bazlı farklılıklar olabilir.
> set debug > gokhankesici.com Server: UnKnown Address: 172.16.227.2 ------------ Got answer: HEADER: opcode = QUERY, id = 3, rcode = NOERROR header flags: response, auth. answer questions = 1, answers = 1, authority records = 0, additional = 0 QUESTIONS: gokhankesici.com.localdomain, type = A, class = IN ANSWERS: -> gokhankesici.com.localdomain internet address = 104.28.30.61 ttl = 5 (5 secs) ------------ Name: gokhankesici.com.localdomain Address: 104.28.30.61