Linux'te 'host' Komutu: DNS Araması ve Kullanımı

DNS sorunlarını çözmek için 'host' komutunun kullanımı. Alan adlarını IP'ye ve IP'yi alan adına çevirme. Temel ve ileri düzey sorgular.

L
Linuxize
0 görüntülenme
Linux'te 'host' Komutu: DNS Araması ve Kullanımı

Giriş

Bir alan adının çözümlenememesi, e-postaların geri dönmesi veya basitçe bir alan adının hangi IP adresine yönlendirildiğini öğrenmek istediğinizde, DNS'e doğrudan soru sormanın hızlı bir yoluna ihtiyaç duyarsınız. Linux'teki host komutu tam olarak bu amaçla tasarlanmıştır. Küçük, hızlı ve en yaygın sorulara tek satırlık temiz yanıtlar verir. Bu nedenle, daha karmaşık araçlara başvurmadan önce ilk durak olarak tercih edilir.

host komutu, BIND (Berkeley Internet Name Domain) paketinin bir parçasıdır ve adları adreslere, adresleri de adlara dönüştürür. nslookup komutunun kısa ve dig komutunun detaylı çıktısı arasında yer alır. Günlük DNS sorguları için yeterli bilgiyi sağlar.

host Komutu Hakkında Ön Bilgiler

Bu rehberde, host komutunun aşağıdaki kullanımlarını ayrıntılı olarak ele alacağız:

  1. İleri ve geri DNS sorguları (Forward & Reverse Lookup)
  2. Belirli DNS kayıt türlerini sorgulama (MX, NS, TXT, CNAME vb.)
  3. Özel bir DNS sunucusuna sorgu gönderme

host Komutunu Yükleme

host komutu, çoğu Linux dağıtımında BIND yardımcı programlarının bir parçası olarak gelir. Eğer sisteminizde yüklü değilse, aşağıdaki komutlarla kolayca kurabilirsiniz:

Ubuntu, Debian ve Türevlerinde Kurulum

sudo apt update
sudo apt install bind9-host

Fedora, RHEL ve Türevlerinde Kurulum

sudo dnf install bind-utils

Not: Bazı sistemlerde paket adı bind-utils yerine bind9-host olarak da geçebilir. Kurulum sırasında hata alırsanız, sisteminizdeki paket adı için apt search bind veya dnf search bind komutlarını kullanabilirsiniz.

Temel Kullanım: Komut Sözdizimi

host komutunun genel sözdizimi aşağıdaki gibidir:

host [SEÇENEKLER] AD [SUNUCU]

Parametreler:

  • AD: Çözümlenecek alan adı, ana bilgisayar adı veya IP adresi.
  • SUNUCU (isteğe bağlı): Sorguyu sistemin varsayılan DNS sunucusu yerine belirli bir sunucuya göndermek için kullanılır.

Alan Adını IP Adresine Çözümleme (Forward Lookup)

En yaygın kullanım, bir alan adını IP adreslerine dönüştürmektir. Bunun için herhangi bir seçenek kullanmadan komutu çalıştırmanız yeterlidir:

host example.com

Çıktı örneği:

example.com has address 23.215.0.136
example.com has address 96.7.128.175
example.com has IPv6 address 2600:1406:bc00:53::b81e:94c8
example.com has IPv6 address 2600:1406:3a00:21::173e:2e65
example.com mail is handled by 0 .

Açıklamalar:

  • has address satırları, alan adının IPv4 adreslerini gösterir.
  • has IPv6 address satırları, IPv6 adreslerini gösterir.
  • mail is handled by satırı, alan adının posta sunucularını belirtir. Burada 0 . ifadesi, RFC 7505'e göre boş MX kaydını temsil eder ve bu alan adının posta kabul etmediğini gösterir.

Önemli: DNS kayıtları dinamik olabilir. Yukarıdaki örnekteki adresler, gerçek adreslerden farklı olabilir. Birden fazla A kaydına sahip bir alan adı için host, her adres için ayrı bir satır yazdırır.

IP Adresini Alan Adına Çözümleme (Reverse Lookup)

Tersine, bir IP adresinden alan adını bulmak için IP adresini doğrudan komuta geçirin. host komutu, girdiğiniz değerin bir IP adresi olduğunu otomatik olarak algılar ve PTR (Pointer) kaydını sorgular:

host 8.8.8.8

Çıktı örneği:

8.8.8.8.in-addr.arpa domain name pointer dns.google.

Not: Ters DNS kayıtları (PTR), IP adresini kontrol eden kuruluş tarafından yapılandırılır. Bu nedenle, her IP adresinin ters DNS kaydı olmayabilir.

Belirli DNS Kayıt Türlerini Sorgulama

DNS, sadece IP adresleriyle sınırlı değildir. host komutunda -t seçeneğini kullanarak belirli kayıt türlerini sorgulayabilirsiniz. Örneğin:

MX (Mail Exchange) Kayıtlarını Sorgulama

Bir alan adının posta sunucularını öğrenmek için:

host -t MX gmail.com

Çıktı örneği:

gmail.com mail is handled by 5 gmail-smtp-in.l.google.com.
gmail.com mail is handled by 10 alt1.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 20 alt2.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 30 alt3.gmail-smtp-in.l.google.com.
gmail.com mail is handled by 40 alt4.gmail-smtp-in.l.google.com.

Açıklamalar:

  • Her satırdaki sayı, posta sunucusunun önceliğini (priority) gösterir. Daha düşük sayı, daha yüksek önceliği temsil eder.
  • Eşit önceliğe sahip sunucuların sırası değişebilir.

NS (Name Server) Kayıtlarını Sorgulama

Bir alan adının yetkili DNS sunucularını listelemek için:

host -t NS example.com

TXT Kayıtlarını Sorgulama

TXT kayıtları genellikle SPF, DKIM gibi e-posta doğrulama bilgilerini veya alan adı doğrulama dizelerini içerir:

host -t TXT example.com

CNAME Kayıtlarını Sorgulama

Bir alan adının başka bir alan adına yönlendirildiğini (alias) öğrenmek için:

host -t CNAME www.example.com

ANY Kayıt Türünü Sorgulama

-a seçeneği, ayrıntılı çıktı verir ve ANY kayıt türünü sorgular. Ancak, birçok DNS sunucusu RFC 8482'ye göre ANY sorgularına minimal yanıt verir:

host -a example.com

Uyarı: -a seçeneği, tüm DNS kayıtlarını geri getirmez. Belirli kayıt türlerini sorgulamak için -t seçeneğini kullanmanız önerilir.

Belirli Bir DNS Sunucusuna Sorgu Gönderme

Varsayılan olarak, host komutu sisteminizde yapılandırılmış DNS sunucularına sorgu gönderir. Farklı bir sunucuya sorgu göndermek için, son parametre olarak sunucu adresini ekleyin. Bu, DNS değişikliklerinin yayılmasını kontrol etmek için kullanışlıdır:

host example.com 1.1.1.1

Bu örnekte, sorgu Cloudflare'ın 1.1.1.1 sunucusuna gönderilir. Eğer yanıt yerel sunucudan farklıysa, sunucuların önbelleklerinde farklı zaman aşımı değerleri olabilir. Yerel önbelleği temizlemek için sisteminize göre systemd-resolve --flush-caches veya sudo service nscd restart gibi komutları kullanabilirsiniz.

Yaygın Kullanılan Seçenekler

Aşağıdaki seçenekler, temel sorguların ötesinde çoğu kullanım durumunu kapsar:

Seçenek Açıklama
-t TYPE Belirli bir kayıt türünü sorgular (A, AAAA, MX, NS, TXT, CNAME, PTR, SOA vb.).
-a ANY kayıtlarını ayrıntılı çıktıyla sorgular. Sunucu minimal yanıt verebilir.
-v Çıktıyı dig komutuna benzer şekilde ayrıntılı hale getirir.
-W SECONDS Yanıt gelene kadar belirtilen saniye kadar bekler. Zaman aşımı süresini ayarlar.
-R NUMBER Başarısız UDP sorgularını yeniden deneme sayısını ayarlar.
-4 Sadece IPv4 kullanarak sorguları gerçekleştirir.
-6 Sadece IPv6 kullanarak sorguları gerçekleştirir.

Sık Kullanılan Komut Örnekleri

Aşağıda, host komutunu kullanırken sıkça karşılaşılan görevler için örnekler bulunmaktadır:

Görev Komut
Bir alan adını çözümlemek host example.com
Bir IP adresini tersine çözümlemek host 8.8.8.8
Bir alan adının posta sunucularını listelemek host -t MX gmail.com
Bir alan adının yetkili DNS sunucularını listelemek host -t NS example.com
Bir alan adının TXT kayıtlarını görüntülemek host -t TXT example.com
ANY kayıtlarını ayrıntılı olarak sorgulamak host -a example.com
Belirli bir DNS sunucusuna sorgu göndermek host example.com 1.1.1.1
Zaman aşımı süresini ayarlamak host -W 2 example.com
Sadece IPv4 kullanarak sorgulamak host -4 example.com
Sadece IPv6 kullanarak sorgulamak host -6 example.com

Sıkça Sorulan Sorular (SSS)

host, dig ve nslookup arasındaki fark nedir?

host komutu, kısa ve okunabilir yanıtlar verir. Bu nedenle hızlı sorgular için idealdir. dig komutu, ayrıntılı ve yapılandırılmış çıktı sağlar ve hata ayıklama için tercih edilir. nslookup komutu ise eski bir etkileşimli araçtır ve hala yaygın olarak kullanılmaktadır.

Ters DNS araması nasıl yapılır?

IP adresini doğrudan komuta geçirin. Örneğin:

host 8.8.8.8

Komut, girdiğiniz adresin bir IP olduğunu algılar ve karşılık gelen PTR kaydını sorgular.

host komutu "not found: 3(NXDOMAIN)" hatasını neden verir?

NXDOMAIN yanıtı, adı DNS'de bulunamadığı anlamına gelir. Bunun nedenleri şunlar olabilir:

  • Alan adında yazım hatası olabilir.
  • Kayıt henüz oluşturulmamış olabilir.
  • DNS değişiklikleri henüz yayılmamış olabilir.

Bu durumda, adın doğru yazıldığından emin olun ve kayıtların oluşturulduğunu doğrulayın. Eğer yeni bir kayıt oluşturduysanız, değişikliklerin yayılması için biraz zaman tanıyın.

host komutu belirli bir DNS sunucusuna sorgu gönderebilir mi?

Evet. Sunucu adresini son parametre olarak ekleyin. Örneğin:

host example.com 1.1.1.1

Bu, DNS değişikliklerinin yayılmasını kontrol etmek için farklı sunucuların yanıtlarını karşılaştırmak amacıyla kullanılır.

Sonuç

host komutu, terminalden "bu ad hangi adrese çözümlenir?" sorusuna hızlı yanıtlar almanın en kolay yoludur. Eğer bir sorgu daha fazla soru işareti oluşturursa, daha ayrıntılı çıktı için dig komutuna başvurun. E-posta doğrulama gibi durumlarda whois komutunu kullanabilirsiniz.

İpucu: host komutunu kullanırken, çıktıyı daha okunabilir hale getirmek için çıktıları bir dosyaya yönlendirebilirsiniz:

host example.com > dns_output.txt

Kaynak

Linuxize