İçeriğe geç
ipkontrol.net

DNS

dig Komutu Kullanımı

Linux ve Mac’te ayrıntılı DNS sorgulama; +short ve +trace kullanımı.

dig, DNS sorgusunu en ayrıntılı gösteren komut satırı aracı. Linux ve macOS'ta hazır geliyor; Windows'ta BIND paketiyle ya da WSL içinde kullanılabiliyor. nslookup'tan farkı, yanıtın ham yapısını bölüm bölüm basması: sunucunun ne dediğini yorumlanmış değil, olduğu gibi görüyorsunuz.

nslookup çıktısının okunmasını nslookup kullanımı yazısında anlattık. Komut satırı olmadan sorgu yapmak isterseniz DNS sorgulama aracımız aynı kayıtları tarayıcıda gösteriyor. Bu yazı dig'e özgü üç şeye odaklanıyor: çıktının bölümleri, +trace ve +short.

Temel sözdizimi

KomutNe yapar
dig ornek.comA kaydını varsayılan çözümleyiciye sorar
dig ornek.com MXKayıt türü belirtir (AAAA, MX, TXT, NS, CNAME, SOA)
dig @1.1.1.1 ornek.comBelirli bir sunucuya sorar
dig -x 8.8.8.8Ters sorgu: adresin PTR kaydı
dig ornek.com +shortYalnızca yanıt değerleri
dig ornek.com +traceKökten başlayıp zinciri adım adım izler

Sıra esnek: dig MX ornek.com @8.8.8.8 de aynı işi yapıyor. @ ile başlayan her şey sunucu, + ile başlayan her şey seçenek olarak okunuyor.

Çıktının bölümleri

Düz bir dig ornek.com çıktısı beş parçadan oluşuyor. Her parçanın başında ;; ile başlayan bir başlık var.

HEADER: sorgunun kaderi burada

İlk satırlardaki status: alanı sorgunun sonucunu söylüyor:

statusAnlamı
NOERRORSorgu başarılı. Yanıt bölümü boş olsa bile ad var, yalnızca o türde kayıt yok
NXDOMAINAd hiç yok
SERVFAILSunucu yanıt üretemedi: yetkili sunucuya ulaşamadı ya da DNSSEC doğrulaması başarısız
REFUSEDSunucu size bu soruyu cevaplamayı reddetti

"NOERROR ama yanıt yok" durumu en çok karıştırılanı. Örneğin dig ornek.com AAAA NOERROR dönüp ANSWER bölümünü boş bırakıyorsa, alan adı çalışıyor ama IPv6 adresi tanımlanmamış demektir.

Hemen yanındaki flags: alanı yanıtın niteliğini veriyor:

  • qr — bu bir yanıt (her yanıtta var).
  • aa — yetkili yanıt: soruyu alan adının kendi sunucusu cevapladı. Önbellekten gelen yanıtta yok.
  • rd — siz özyinelemeli çözüm istediniz.
  • ra — sunucu özyinelemeli çözüm yapabiliyor. Yetkili sunucuya doğrudan sorduğunuzda genellikle yok.
  • ad — yanıt DNSSEC ile doğrulandı. Anlamını DNSSEC nedir yazısında anlattık.

QUESTION ve ANSWER

QUESTION bölümü ne sorduğunuzu tekrar ediyor; yazım hatasını burada yakalarsınız. ANSWER bölümündeki her satır beş sütun:

SütunÖrnekAnlamı
Adornek.com.Sondaki nokta kökü temsil ediyor
TTL287Kaydın önbellekte kalacağı kalan saniye
SınıfINİnternet; pratikte hep bu
TürAKayıt türü
Değer93.184.215.14Kaydın içeriği

TTL sütunu çözümleyiciye sorduğunuzda geri sayan bir değer: komutu birkaç saniye arayla iki kez çalıştırırsanız düştüğünü görürsünüz. Bu, yanıtın önbellekten geldiğinin işareti. Yetkili sunucuya sorduğunuzda ise tanımlı tam değer görünür. Değişikliğin neden hemen yayılmadığını DNS TTL nedir yazısı anlatıyor.

AUTHORITY, ADDITIONAL ve alt bilgi

AUTHORITY bölümü, ad hakkında yetkili olan sunucuları ya da (NXDOMAIN durumunda) bölgenin SOA kaydını gösteriyor. ADDITIONAL bölümü bu sunucuların adreslerini ve EDNS bilgisini taşıyor. En alttaki satırlar küçük ama işe yarar:

  • Query time — yanıt süresi. 0-1 ms çoğunlukla yerel önbellek demek.
  • SERVER — soruyu gerçekte hangi sunucunun cevapladığı. Ayarladığınızı sandığınız DNS'in gerçekten kullanıldığını burada doğrularsınız.
  • MSG SIZE — yanıtın boyutu; çok büyük yanıtlar TCP'ye düşer.

+trace: zinciri adım adım okumak

dig ornek.com +trace çözümleyicinin önbelleğini tamamen atlıyor ve adı kendisi çözüyor. Çıktı dört bloktan oluşuyor:

  1. Kök sunucular — . için NS kayıtları (a.root-servers.net … m.root-servers.net).
  2. Üst düzey alan — com. için sorumlu sunucular; kökten biri bunu söylüyor.
  3. Alan adının yetkili sunucuları — ornek.com. için NS kayıtları; com sunucularından biri söylüyor.
  4. Son yanıt — yetkili sunuculardan birinin verdiği A kaydı.

Her bloğun altında ;; Received … from … satırı hangi sunucunun bu bilgiyi verdiğini yazıyor. Zincirin koptuğu yer sorunun yeri:

Kopma yeriMuhtemel sebep
2. blokta alan adının NS'i yokAlan adı süresi dolmuş ya da kayıtlı değil
3. blokta NS var ama 4. blok gelmiyorYetkili sunucu yanıt vermiyor ya da NS yanlış sunucuyu gösteriyor
+trace doğru, düz sorgu eski adresÇözümleyicinin önbelleği; TTL dolunca düzelir

Üçüncü satır en pratik kullanımı: kayıt değiştirdiniz ve "hâlâ eski adres geliyor" diyorsunuz. +trace yeni adresi veriyorsa kayıt doğru, bekleyen yalnızca önbellek. NS kayıtlarının ne yaptığını DNS NS kaydı yazısında ayrıca anlattık.

+short ile betik yazmak

+short bütün süsü atıp yalnızca değeri basıyor. Bu, çıktıyı başka bir komuta aktarmayı kolaylaştırıyor:

  • dig +short ornek.com — her satırda bir adres; CNAME varsa önce hedef ad, sonra adres gelir.
  • dig +short ornek.com @ns1.saglayici.com — yetkili sunucudaki güncel değer.
  • dig +short -x 1.1.1.1 — adresin ters DNS adı.

Betik yazarken CNAME'e dikkat: +short çıktısının ilk satırı her zaman adres değil. Yalnızca adres istiyorsanız rakamla başlayan satırları süzün. Alan adının yetkili sunucularındaki değerin herkese yayılıp yayılmadığını görmek için aynı komutu birkaç genel çözümleyiciye (@1.1.1.1, @8.8.8.8, @9.9.9.9) sırayla sormak yeterli.

İşe yarayan diğer seçenekler

SeçenekNe işe yarar
+noall +answerYalnızca ANSWER bölümü, ama tam satır olarak (TTL görünür)
+dnssecİmza kayıtlarını (RRSIG) da ister
+tcpSorguyu TCP ile gönderir; UDP engelli ağlarda test için
-4 / -6Sorguyu yalnızca IPv4 ya da IPv6 üzerinden gönderir
+time=2 +tries=1Bekleme süresi ve deneme sayısı; betikte takılmayı önler

Sıkça sorulan sorular

dig komutu ne işe yarar?

DNS sorgusunu ayrıntılı gösterir: yanıt durumu, bayraklar, TTL, yetkili sunucular ve yanıt süresi. Linux ve macOS’ta hazır gelir.

dig çıktısında NOERROR ama yanıt boş ne demek?

Alan adı var ama sorduğunuz türde kayıt tanımlı değil. Örneğin AAAA sorgusunda bu, alan adının IPv6 adresi olmadığı anlamına gelir.

dig +trace ne işe yarar?

Önbelleği atlayıp adı kök sunuculardan başlayarak kendisi çözer. Kayıt değişikliğinin yetkili sunucuda doğru olup olmadığını ve zincirin nerede koptuğunu gösterir.

Windows’ta dig var mı?

Hazır gelmez. BIND paketiyle ya da WSL içinde kullanılabilir; ek kurulum istemiyorsanız Windows’ta nslookup aynı sorguların çoğunu yapar.

dig çıktısındaki aa bayrağı ne demek?

Yanıtın alan adının yetkili sunucusundan geldiğini gösterir. Önbellekten gelen yanıtta aa bayrağı bulunmaz.