nslookup komutu: kullanımı ve seçenekleri, kayıt sorgulama ve DNS sunucusu belirleme

Test ortamıRHEL ailesiAlmaLinux 9.8nslookup 9.16root hesabıDebian 12 normal hesap
Ağ komutlarınslookupKonum/usr/bin/nslookup

nslookup komutu, bir alan adını DNS sunucusuna sorup IP adreslerini ve MX, NS, TXT gibi DNS kayıtlarını getiren bir sorgulama komutudur. AlmaLinux 9 sunucusunda example.com kayıtlarını türe göre sorgulayıp sorulan DNS sunucusunu değiştirdiğimizde, aynı alan adı hangi sunucuya sorulduğuna göre farklı sonuç verdi: yanıtın başındaki Non-authoritative answer satırı kayboldu ya da ANY sorgusunun sonucu değişti.

Aşağıdaki çıktı, AlmaLinux 9.8 sunucusunda root hesabıyla çalıştırılarak alındı. Sunucuda ayarlı DNS sunucusunun adresi örnek değer 192.0.2.53 ile, paket sürüm numaraları da örnek değerlerle değiştirildi.

1️⃣ nslookup komutunun kullanımı

Temel biçim [nslookup -seçenek ad DNS-sunucusu] sırasıdır; seçenekler ve DNS sunucusu yazılmayabilir. Yalnızca bir ad yazarsanız nslookup o adın adresini sunucuda ayarlı DNS sunucusuna sorar.

nslookup example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
Name:	example.com
Address: 172.66.147.243
Name:	example.com
Address: 104.20.23.154
Name:	example.com
Address: 2606:4700:10::6814:179a
Name:	example.com
Address: 2606:4700:10::ac42:93f3

En üstteki Server ve Address satırları sorguyu alan DNS sunucusunu gösterir, sondaki #53 ise DNS bağlantı noktası numarasıdır. Kayıt türü belirtilmezse nslookup önce A kaydını (IPv4), sonra AAAA kaydını (IPv6) sorgular; bu yüzden iki IPv4 adresinin ardından iki IPv6 adresi geldi.

Non-authoritative answer, example.com kayıtlarını doğrudan yöneten sunucunun değil, bu değeri önbelleğinde tutan bir DNS sunucusunun yanıt verdiği anlamına gelir. Bu nedenle bir kayıt değiştirildikten hemen sonra değer gerçek değerden farklı olabilir.

2️⃣ nslookup seçenekleri

Seçenekler, adının önüne kısa çizgi konarak yazılır.

-type, -query veya kısa biçimi -q ile aynı seçenektir. 8.8.8.8 sunucusuna -q=mx ile sorulduğunda -type=mx ile aynı tek posta sunucusu satırı geldi.

nslookup -q=mx google.com 8.8.8.8
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
google.com	mail exchanger = 10 smtp.google.com.

Authoritative answers can be found from:

-timeout ve -retry, yanıt vermeyen bir DNS sunucusunun ne kadar bekleneceğini belirler. 192.0.2.1 belgelerde örnek için ayrılmış bir adres olduğundan orada yanıt veren sunucu yoktur.

nslookup -timeout=2 -retry=1 example.com 192.0.2.1
;; connection timed out; no servers could be reached

-timeout=2 -retry=1 ile çalıştırıldığında nslookup 2 saniye sonra [connection timed out] satırını yazdırıp bitti. -retry=2 ile 4 saniye, seçenek olmadan ise 15 saniye sürdü. Bir betiğin yanıt vermeyen bir sunucu yüzünden uzun süre takılmaması için iki değeri de düşürün.

-debug eklendiğinde yanıt paketinin soru ve yanıt bölümleri olduğu gibi yazdırılır.

nslookup -debug example.com 8.8.8.8
Server:		8.8.8.8
Address:	8.8.8.8#53

------------
    QUESTIONS:
	example.com, type = A, class = IN
    ANSWERS:
    ->  example.com
	internet address = 104.20.23.154
	ttl = 300
    ->  example.com
	internet address = 172.66.147.243
	ttl = 300
    AUTHORITY RECORDS:
    ADDITIONAL RECORDS:
------------
Non-authoritative answer:
Name:	example.com
Address: 104.20.23.154
Name:	example.com
Address: 172.66.147.243
------------
    QUESTIONS:
	example.com, type = AAAA, class = IN
    ANSWERS:
    ->  example.com
	has AAAA address 2606:4700:10::6814:179a
	ttl = 300
    ->  example.com
	has AAAA address 2606:4700:10::ac42:93f3
	ttl = 300
    AUTHORITY RECORDS:
    ADDITIONAL RECORDS:
------------
Name:	example.com
Address: 2606:4700:10::6814:179a
Name:	example.com
Address: 2606:4700:10::ac42:93f3

Her kayda, normal çıktıda görünmeyen bir ttl = 300 eklendi. Bu, yanıtı alan DNS sunucusunun kaydı en fazla 300 saniye önbellekte tutabileceğini gösteren değerdir.

-norecurse, DNS sunucusundan başka sunuculara başvurmadan yalnızca elindeki değerle yanıt vermesini ister. Aynı 8.8.8.8 sunucusuna seçeneksiz sorulduğunda dört adres geldi, ancak -norecurse eklenince sorgu [SERVFAIL] ile bitti.

nslookup -norecurse example.com 8.8.8.8
Server:		8.8.8.8
Address:	8.8.8.8#53

** server can't find example.com: SERVFAIL
SeçenekKopyalaAçıklama
-type=Sorgulanacak kayıt türünü belirler; yazılmazsa önce A, sonra AAAA
-q=-type ile aynı seçenek, sorgulanacak kayıt türünü belirler
-timeout=İlk sorgunun yanıtı için bekleme süresi (saniye)
-retry=Yanıt gelmezse sorgunun gönderilme sayısı
-debugYanıt paketinin soru ve yanıtını TTL ile birlikte yazdırır
-norecurseBaşka sunuculara başvurmadan yalnızca o sunucudaki değerleri ister
SeçenekKopyalaAçıklama
-query=-type ile aynı seçenek, sorgulanacak kayıt türünü belirler
-port=Sorgulanacak bağlantı noktasını belirler, varsayılan 53
-versionSürümü yazdırıp çıkar

3️⃣ nslookup ile kayıt sorgulama (MX, NS, TXT, SOA)

-type= sonrasına bir kayıt türü yazılırsa yalnızca o kayıt sorgulanır. Değer büyük ya da küçük harfle yazılabilir.

-type= değeriİçerdiği bilgi
A · AAAAIPv4 adresi, IPv6 adresi
MXPostayı alan sunucu ve önceliği
NSAlan adının kayıtlarını yöneten ad sunucuları
TXTSPF gibi metin değerleri
SOABölgenin birincil ad sunucusu, yönetici e-postası, seri numarası, yenileme aralıkları
CNAMEBaşka bir ada bağlanan takma ad
PTRBir IP adresine bağlı ana makine adı (ters)
ANYO adın tüm kayıtlarını tek seferde ister

Posta sunucuları MX kaydıyla kontrol edilir.

nslookup -type=mx google.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
google.com	mail exchanger = 10 smtp.google.com.

Authoritative answers can be found from:

mail exchanger sonrasındaki 10 önceliktir. Birden fazla posta sunucusu varsa gönderen taraf teslimi en küçük sayılı sunucudan başlayarak dener. example.com için aynı sorgu [mail exchanger = 0 .] verdi; yalnızca tek bir nokta içeren MX, bu alan adının posta kabul etmediği anlamına gelir.

MX sorgusunun sonundaki [Authoritative answers can be found from:], yanıtla birlikte gelen yetkili ad sunucusu bilgilerini altında gösteren bir başlık satırıdır. Bu yazıdaki MX, NS ve TXT sorgularında yanıtta bu bilgi yoktu, bu yüzden başlık satırının altı boş kaldı.

NS kaydında alan adının kayıtlarını doğrudan yöneten ad sunucuları bulunur.

nslookup -type=ns example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
example.com	nameserver = hera.ns.cloudflare.com.
example.com	nameserver = elliott.ns.cloudflare.com.

Authoritative answers can be found from:

example.com alan adının iki ad sunucusu vardı. Bu iki sunucu, example.com için yetkili ad sunucularıdır.

TXT kaydına belirli bir biçim olmadan metin değerleri konabilir.

nslookup -type=txt example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
example.com	text = "_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9"
example.com	text = "v=spf1 -all"

Authoritative answers can be found from:

v=spf1 -all, bu alan adıyla posta gönderebilecek hiçbir sunucu olmadığını belirten bir SPF değeridir. Bir alan adında birden fazla TXT kaydı varsa bu şekilde her satırda bir tane görünür.

SOA kaydı, bölgenin temel bilgilerini içerir.

nslookup -type=soa example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
example.com
	origin = elliott.ns.cloudflare.com
	mail addr = dns.cloudflare.com
	serial = 2418004112
	refresh = 10000
	retry = 2400
	expire = 604800
	minimum = 1800

Authoritative answers can be found from:

origin birincil ad sunucusudur; mail addr ise yöneticinin e-posta adresinde @ işaretinin nokta olarak yazıldığı değerdir. serial, kayıtlar her değiştiğinde artan seri numarasıdır; refresh, retry ve expire ise ikincil ad sunucularının kayıtları birincil sunucuyla eşitlerken kullandığı süre değerleridir (saniye). minimum, olmayan bir kayda verilen yanıtın önbellekte tutulma süresidir.

Takma adlar CNAME kaydıyla kontrol edilir. www.github.com sorgulandığında bunun github.com için bir takma ad olduğunu söyleyen tek satır geldi.

nslookup -type=cname www.github.com
Server:		192.0.2.53
Address:	192.0.2.53#53

www.github.com	canonical name = github.com.

-type=any, o adın tüm kayıtlarını tek seferde ister. Sunucuda ayarlı DNS sunucusuna sorulduğunda A, AAAA, MX ve NS kayıtları birlikte geldi.

nslookup -type=any example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
Name:	example.com
Address: 172.66.147.243
Name:	example.com
Address: 104.20.23.154
Name:	example.com
Address: 2606:4700:10::6814:179a
Name:	example.com
Address: 2606:4700:10::ac42:93f3
example.com	mail exchanger = 0 .
example.com	nameserver = hera.ns.cloudflare.com.
example.com	nameserver = elliott.ns.cloudflare.com.

Authoritative answers can be found from:

Aynı sorgu 8.8.8.8 sunucusuna gönderildiğinde yalnızca bir [hinfo = “RFC8482”] satırı ve bir imza satırı döndü.

nslookup -type=any example.com 8.8.8.8
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
example.com	hinfo = "RFC8482" ""
example.com	rdata_46 = HINFO 13 2 3600 20261029212708 20261027192708 34505 example.com. 2YBHcD7GmqHiW6E7e8Lx3z/gPoCsLbYw/Uegjy801hQ+4fYp5U7wKqc2 NXOONd8WS0xjgzfW5Dn0akDqdjltOw==

Authoritative answers can be found from:

RFC 8482, ANY sorgusuna tüm kayıtlar yerine kısa bir yanıt verilmesine izin veren belgedir. Bu yüzden gereken kayıtlar türleri tek tek belirtilerek sorgulanır.

4️⃣ nslookup ile DNS sunucusu belirleme

Adın arkasına bir DNS sunucusu yazılırsa nslookup, sunucuda ayarlı DNS sunucusu yerine o sunucuya sorar.

nslookup example.com 8.8.8.8
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	example.com
Address: 104.20.23.154
Name:	example.com
Address: 172.66.147.243
Name:	example.com
Address: 2606:4700:10::6814:179a
Name:	example.com
Address: 2606:4700:10::ac42:93f3

Server satırı 8.8.8.8 olarak değişti ve dört adres, sunucuda ayarlı DNS sunucusunun yanıtıyla aynıydı. Ad sunucularını değiştirdikten sonra yeni değerlerin her genel DNS sunucusuna yayılıp yayılmadığını kontrol ederken bu biçim kullanılır.

NS sorgusunda çıkan ad sunucularından biri DNS sunucusu olarak belirtilirse yetkili sunucuya doğrudan sorulmuş olur.

nslookup example.com elliott.ns.cloudflare.com
Server:		elliott.ns.cloudflare.com
Address:	2606:4700:58::a29f:2ce4#53

Name:	example.com
Address: 104.20.23.154
Name:	example.com
Address: 172.66.147.243
Name:	example.com
Address: 2606:4700:10::6814:179a
Name:	example.com
Address: 2606:4700:10::ac42:93f3

Bu kez Non-authoritative answer satırı kayboldu. Değer, kayıtları yöneten sunucunun doğrudan verdiği yanıt olduğu için önbellekten geçmemiş güncel değerdir. Server satırının hemen altındaki Address bölümünde bu ad sunucusunun IPv6 adresi göründü.

Var olmayan bir ad sorgulandığında [NXDOMAIN] görünür. .invalid hiç kullanılmaması için ayrılmış bir üst düzey alan adı olduğundan, adın var olmadığı yanıtı döndü.

nslookup example.invalid
Server:		192.0.2.53
Address:	192.0.2.53#53

** server can't find example.invalid: NXDOMAIN

Buna karşılık no-such-host.example.com, NXDOMAIN yerine [No answer] ile bitti. Bu, sorgulanan kaydın yanıtta olmadığı anlamına gelir; adın kendisinin olmadığı NXDOMAIN durumundan farklı bir sonuçtur.

nslookup no-such-host.example.com
Server:		192.0.2.53
Address:	192.0.2.53#53

Non-authoritative answer:
*** Can't find no-such-host.example.com: No answer

5️⃣ nslookup ile ters sorgu

Ad yerine bir IP adresi yazılırsa nslookup PTR kaydını sorgular ve o adrese bağlı ana makine adını bulur.

nslookup 8.8.8.8
8.8.8.8.in-addr.arpa	name = dns.google.

Authoritative answers can be found from:

8.8.8.8.in-addr.arpa, IPv4 adresinin tersten yazılıp sonuna in-addr.arpa eklenmesiyle oluşan addır. Bu adın PTR kaydının değeri olan dns.google., 8.8.8.8 adresinin ana makine adıdır.

Ters sorguda en üstteki iki Server satırı görünmedi. Aynı adres bir Debian 12 sunucusunda nslookup 9.18 ile sorgulandığında da görünüm aynıydı.

6️⃣ nslookup etkileşimli modu

nslookup bağımsız değişken olmadan çalıştırılırsa > istemiyle etkileşimli moda girilir. Birden fazla adı ve kayıt türünü art arda sorgularken komutu her seferinde baştan yazmak gerekmez.

nslookup
> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> set type=mx
> google.com
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
google.com	mail exchanger = 10 smtp.google.com.

Authoritative answers can be found from:
> set type=txt
> example.com
Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
example.com	text = "_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9"
example.com	text = "v=spf1 -all"

Authoritative answers can be found from:
> exit

server ile sorgulanacak DNS sunucusunu değiştirip set type= ile kayıt türünü belirlerseniz, sonrasında yalnızca ad yazmak o ayarlarla sorgulamaya yeter. exit yazınca kabuğa dönülür.

set all, geçerli tüm ayar değerlerini yazdırır.

nslookup
> set type=txt
> set all
Default server: 192.0.2.53
Address: 192.0.2.53#53

Set options:
  novc			nodebug		nod2
  search		recurse
  timeout = 0		retry = 3	port = 53	ndots = 1
  querytype = txt     	class = IN
  srchlist = example.internal
> exit

querytype, önceden belirlenen txt değerine geçmişti. retry = 3 ve port = 53 değiştirilmemiş varsayılan değerlerdir.

7️⃣ Linux'ta nslookup kurulumu ve dig ile host karşılaştırması

Linux'ta nslookup çalıştırıldığında [command not found] görünürse BIND araçları paketini kurun. AlmaLinux sunucusunda nslookup, bind-utils paketinden geliyordu.

rpm -qf /usr/bin/nslookup
bind-utils-9.16.20-30.el9_8.2.x86_64

Debian 12 sunucusunda bu paket bind9-dnsutils idi. Eski ad dnsutils, bind9-dnsutils paketini kuran bir geçiş paketi olarak duruyordu.

dpkg -S /usr/bin/nslookup
bind9-dnsutils: /usr/bin/nslookup

RHEL tabanlı sistemlerde bind-utils paketi aşağıdaki komutla kurulur.

dnf install bind-utils

Debian tabanlı sistemlerde bind9-dnsutils paketi kurulur.

apt install bind9-dnsutils

Aynı pakette dig ve host da bulunur. Üç komut da DNS sorgular, ancak çıktılarının görünümü farklıdır.

KomutÇıktıKullanım yeri
nslookupServer satırı + yanıt, etkileşimli modBirden fazla adı ve kaydı art arda sorgulama
digYanıt paketinin tüm bölümleri; +short ile yalnızca değerlerBetikte yalnızca değerleri almak
hostHer kayıt için tek satırlık cümleA, AAAA ve MX'i tek seferde kontrol etme
host example.com
example.com has address 172.66.147.243
example.com has address 104.20.23.154
example.com has IPv6 address 2606:4700:10::6814:179a
example.com has IPv6 address 2606:4700:10::ac42:93f3
example.com mail is handled by 0 .

host, hiçbir seçenek olmadan da A, AAAA ve MX kayıtlarını tek seferde sorgulayıp her birini tek satırlık bir cümle olarak yazdırdı. dig komutuna +short eklenirse yalnızca IP adresleri kalır.

dig +short example.com
104.20.23.154
172.66.147.243

Betikte yalnızca değerleri almak için dig +short daha kolay işlenir; birden fazla adı art arda kontrol etmek için ise nslookup etkileşimli modu daha rahattır.

🌏 Buraya kadar okuduysanız
Aynı bilgiyi komut olmadan görmenin yolu
nslookup ile kontrol ettiğiniz ad sunucuları ve kayıtlar web üzerinde de aynen sorgulanabilir. Whois alan adı sorgulama, buna whois komutunun kayıt bilgilerini ve bitiş tarihini de ekleyip hepsini tek ekranda gösterir.
Yeni başlayanlar Terminal veya CMD açmadan yalnızca alan adını girmeniz yeterli. Kayıt kuruluşu, kayıt tarihi, bitiş tarihi ve durum düzenli biçimde gösterilir, bitişe kalan gün sayısı da birlikte görünür.
Uzmanlar Whois'te kayıtlı ad sunucularını gerçek DNS yanıtlarıyla yan yana karşılaştırabilir; A, AAAA, NS, MX ve TXT kayıtlarını, TTL değerini ve Whois ham metnini de kontrol edebilirsiniz.
Alan adı sorgulamayı aç

🔲 nslookup komutu simülatörü

Aşağıdaki simülatörde kayıt türünü ve DNS sunucusunu değiştirerek nslookup komutunu kendiniz yazabilirsiniz.

nslookup komutu simülatörünslookup 9.16
[root@server work]#
Yalnızca tarayıcınızın içinde çalışır; yanıtlar gerçek sorgulardan alınan değerleri içeren sanal bir DNS'ten gelir ve ↑↓ ile daha önce yazdığınız komutları geri çağırırsınız.

🔢 SSS & önerilen içerikler

Windows'taki nslookup komutunda da ilk bağımsız değişken sorgulanacak ad, ikincisi DNS sunucusudur. Bağımsız değişken olmadan çalıştırılırsa > istemiyle etkileşimli moda girer. Windows'taki çıktı ifadeleri Linux'takinden farklı olabilir.

nslookup, sorgulardan biri bile başarısız olursa çıkış kodu 1 ile biter. NXDOMAIN veren example.invalid sorgusundan sonra çıkış kodu yazdırıldığında 1, example.com sorgusundan sonra ise 0 çıktı.

-type=aaaa eklenirse yalnızca AAAA kaydı sorgulanır. example.com için çalıştırıldığında IPv4 adresi olmadan yalnızca iki IPv6 adresi geldi.

ℹ️ Satış ortaklığı bildirimi
Bu sitenin içeriklerinde satış ortaklığı bağlantıları bulunur. Bir ziyaretçi bu bağlantılar üzerinden ürün veya hizmet satın alırsa bu site satıcıdan komisyon alır. Bu süreçte alıcının ödediği tutar (kampanya indirimlerinde tutar düşer↓) artmaz. Yayımlanan fiyat, indirim ve stok bilgileri yazının yazıldığı zamana aittir ve gerçek durumdan farklı olabilir; bu yüzden satın almadan önce son bilgiyi satıcıdan kontrol etmenizi rica ederiz. Ürünler kendi ölçütlerimize göre seçilir ve değerlendirilir; komisyon alınıp alınmaması tanıtım sırasını veya değerlendirme içeriğini etkilemez.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

İnsan olduğunuzu kanıtlayın: 10   +   9   =