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
| Komut | Ne yapar |
|---|---|
| dig ornek.com | A kaydını varsayılan çözümleyiciye sorar |
| dig ornek.com MX | Kayıt türü belirtir (AAAA, MX, TXT, NS, CNAME, SOA) |
| dig @1.1.1.1 ornek.com | Belirli bir sunucuya sorar |
| dig -x 8.8.8.8 | Ters sorgu: adresin PTR kaydı |
| dig ornek.com +short | Yalnızca yanıt değerleri |
| dig ornek.com +trace | Kö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:
| status | Anlamı |
|---|---|
| NOERROR | Sorgu başarılı. Yanıt bölümü boş olsa bile ad var, yalnızca o türde kayıt yok |
| NXDOMAIN | Ad hiç yok |
| SERVFAIL | Sunucu yanıt üretemedi: yetkili sunucuya ulaşamadı ya da DNSSEC doğrulaması başarısız |
| REFUSED | Sunucu 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 | Örnek | Anlamı |
|---|---|---|
| Ad | ornek.com. | Sondaki nokta kökü temsil ediyor |
| TTL | 287 | Kaydın önbellekte kalacağı kalan saniye |
| Sınıf | IN | İnternet; pratikte hep bu |
| Tür | A | Kayıt türü |
| Değer | 93.184.215.14 | Kaydı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:
- Kök sunucular —
.için NS kayıtları (a.root-servers.net … m.root-servers.net). - Üst düzey alan —
com.için sorumlu sunucular; kökten biri bunu söylüyor. - Alan adının yetkili sunucuları —
ornek.com.için NS kayıtları;comsunucularından biri söylüyor. - 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 yeri | Muhtemel sebep |
|---|---|
| 2. blokta alan adının NS'i yok | Alan adı süresi dolmuş ya da kayıtlı değil |
| 3. blokta NS var ama 4. blok gelmiyor | Yetkili 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çenek | Ne işe yarar |
|---|---|
| +noall +answer | Yalnızca ANSWER bölümü, ama tam satır olarak (TTL görünür) |
| +dnssec | İmza kayıtlarını (RRSIG) da ister |
| +tcp | Sorguyu TCP ile gönderir; UDP engelli ağlarda test için |
| -4 / -6 | Sorguyu yalnızca IPv4 ya da IPv6 üzerinden gönderir |
| +time=2 +tries=1 | Bekleme 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.