Bir alan adının hangi IP'ye baktığını, e-postalarının nereye gittiğini veya nameserver değişikliğinin yayılıp yayılmadığını öğrenmek için terminalde hızlıca sorgu almak, sunucu yönetiminin en sık tekrarlanan işlerinden biridir. Bu iş için elimizde birkaç araç var; dig ayrıntılı çıktısıyla derin analiz için idealken, nslookup daha çok Windows dünyasından tanıdık gelir. Arada bir yerde duran host komutu ise günlük hayatta en çok işe yarayan seçenek olmasına rağmen çoğu zaman hak ettiği ilgiyi görmez.
host, adından da anlaşılacağı gibi bir alan adını IP'ye ya da bir IP'yi alan adına çeviren, tek satırlık temiz cevaplar veren bir DNS sorgu aracıdır. Ekranı gereksiz bölümlerle doldurmaz; sorduğunuz şeyin cevabını okunabilir bir cümleyle önünüze koyar. Bu yazıda host komutunu kurulumdan ileri kullanıma kadar, gerçek sunucu senaryolarıyla birlikte adım adım ele alacağız. Amacımız, bir sorun çıktığında terminale host yazıp saniyeler içinde teşhis koyabilecek pratikliği kazandırmak.
host Komutu Nedir ve Neden Kullanılır#
host, BIND (Berkeley Internet Name Domain) paketiyle birlikte gelen basit bir DNS arama yardımcı programıdır. Tek başına ele alındığında yaptığı iş şudur; bir isim verirsiniz, o ismin karşılık geldiği IP adres(ler)ini döndürür veya bir IP verirsiniz, ona karşılık gelen alan adını (PTR kaydını) söyler. Bunu yaparken çıktıyı insan gözü için düzenler, makine ayrıntılarını gizler.
host'un asıl gücü sadeliğindedir. dig size TTL değerlerinden otorite bölümüne, sorgu süresinden bayrak durumlarına kadar her şeyi verir; bu bazen tam ihtiyacınız olan şeydir, çoğu zaman da fazlalıktır. Gün içinde "bu domain hangi IP'ye bakıyor" ya da "MX kayıtları doğru mu" gibi sorulara cevap ararken host ile tek satırlık net bir yanıt almak, ekran dolusu çıktıyı gözle taramaktan çok daha hızlıdır. DNS kavramlarına yeni başlıyorsanız önce DNS nedir yazımızdaki temel mantığı okumanızı, sonra bu araca dönmenizi öneririm.
Bir başka avantajı, neredeyse her Linux dağıtımında ve sunucuda hazır bulunmasıdır. SSH ile bağlandığınız bir web sunucusunda, bir konteynerin içinde ya da bir kurtarma ortamında dig yüklü olmasa bile host çoğunlukla oradadır. Bu da onu "her yerde çalışan" güvenilir bir ilk teşhis aracı yapar.
host Komutunu Kurmak#
Çoğu sistemde host zaten kuruludur. Kurulu olup olmadığını kontrol etmek için basit bir sürüm sorgusu yeterlidir:
host -V
# host 9.18.x ...
Eğer "command not found" hatası alıyorsanız, aracı içeren paketi kurmanız gerekir. host, dig ile aynı pakette (bind-utils ya da dnsutils) gelir. Dağıtımınıza göre kurulum komutları şöyledir:
# Debian / Ubuntu
sudo apt update
sudo apt install dnsutils -y
# RHEL / CentOS / Rocky / AlmaLinux
sudo dnf install bind-utils -y
# Alpine (konteyner ortamları için sık)
apk add bind-tools
Kurulumdan sonra tekrar host -V çalıştırıp sürüm bilgisini görüyorsanız her şey hazırdır. Kendi sunucunuzun DNS altyapısını bu tür komutlarla rahatça yönetebilmek için yönetimli bir zemin isterseniz sunucu yönetimi hizmetimiz bu tarafın yükünü üstlenir.
Temel Kullanım — Alan Adı Sorgulama#
host'un en yalın hali, komutun ardından bir alan adı yazmaktır. Bu, o ismin A (IPv4) ve AAAA (IPv6) kayıtlarıyla varsa MX kayıtlarını da içeren özet bir cevap döndürür:
host clou.tr
# clou.tr has address 203.0.113.10
# clou.tr has IPv6 address 2001:db8::10
# clou.tr mail is handled by 10 mail.clou.tr.
Çıktı tam olarak beklediğiniz gibi düz bir Türkçe... daha doğrusu düz bir İngilizce cümledir; "has address" ifadesinden sonra IPv4 adresini, "has IPv6 address" ile IPv6 adresini ve "mail is handled by" ile posta sunucusunu görürsünüz. Hiçbir yerde başlık, bayrak ya da bölüm ayrımıyla uğraşmazsınız.
Sadece belirli bir kayıt tipiyle ilgileniyorsanız çıktıyı daraltmak mümkündür. Örneğin yalnızca IPv4 adresini istiyorsanız -4 bayrağını, sadece IPv6 için -t AAAA kullanabilirsiniz. Çıktının tümünü değil de belirli bir satırı ayıklamak için basit bir grep de sık kullanılır:
host clou.tr | grep "has address"
# clou.tr has address 203.0.113.10
Bir alt alan adını (subdomain) sorgulamak da aynı derecede basittir. blog.clou.tr veya panel.clou.tr gibi bir kaydın nereye baktığını görmek için doğrudan tam adı yazmanız yeterlidir:
host panel.clou.tr
# panel.clou.tr is an alias for cluster-3.hosting.example.
# cluster-3.hosting.example has address 198.51.100.5
Burada dikkat edilmesi gereken güzel bir ayrıntı var; kayıt bir CNAME ise host bunu "is an alias for" diyerek açıkça belirtir ve zincirin sonundaki gerçek IP'yi de takip edip gösterir. Yani takma adın nereye çözümlendiğini elle kovalamak zorunda kalmazsınız.
Kayıt Tipine Göre Sorgulama — -t Seçeneği#
host'un asıl esnekliği -t (type) seçeneğinde ortaya çıkar. Bu bayrakla hangi DNS kayıt tipini görmek istediğinizi belirtirsiniz. En sık kullanılan tipler MX, TXT, NS, SOA, CNAME ve AAAA'dır.
E-posta sorunlarını teşhis ederken ilk baktığınız yer MX kayıtlarıdır. Bir alan adının postalarını hangi sunucuların karşıladığını ve öncelik değerlerini görmek için:
host -t MX clou.tr
# clou.tr mail is handled by 10 mail1.clou.tr.
# clou.tr mail is handled by 20 mail2.clou.tr.
Buradaki 10 ve 20 öncelik değerleridir; küçük sayı daha yüksek önceliği gösterir, yani posta önce mail1 üzerinden dener, ona ulaşamazsa mail2'ye geçer. Kurumsal e-posta altyapısı kurarken bu sıralamanın doğru olduğunu host ile hızlıca doğrulamak iyi bir alışkanlıktır.
SPF, DKIM ve alan adı doğrulama kayıtları TXT içinde tutulur. E-postalarınızın spam'e düşme sorununu araştırıyorsanız TXT sorgusu çok işinize yarar:
host -t TXT clou.tr
# clou.tr descriptive text "v=spf1 include:_spf.clou.tr -all"
# clou.tr descriptive text "google-site-verification=abc123..."
Bir alan adının hangi nameserver'lar tarafından yönetildiğini görmek için NS tipini kullanırsınız. Bu, özellikle nameserver değiştirme işleminden sonra değişikliğin yerine oturup oturmadığını kontrol etmenin en pratik yoludur:
host -t NS clou.tr
# clou.tr name server ns1.clou.tr.
# clou.tr name server ns2.clou.tr.
Bölgenin (zone) idari bilgilerini, seri numarasını ve yenileme sürelerini merak ediyorsanız SOA kaydına bakabilirsiniz. Özellikle DNS değişikliği sonrası seri numarasının (serial) artıp artmadığını izlemek, güncellemenin yayına çıktığını anlamanın güvenilir bir işaretidir:
host -t SOA clou.tr
# clou.tr has SOA record ns1.clou.tr. hostmaster.clou.tr. 2026071001 7200 3600 1209600 3600
Sık kullanılan kayıt tiplerini ve ne işe yaradıklarını tek bakışta görmek için şu tablo yol gösterici olabilir:
| Kayıt Tipi | Ne İçin Kullanılır | Örnek Komut |
|---|---|---|
| A | IPv4 adres çözümlemesi | host -t A clou.tr |
| AAAA | IPv6 adres çözümlemesi | host -t AAAA clou.tr |
| MX | Posta sunucusu ve öncelikleri | host -t MX clou.tr |
| TXT | SPF, DKIM, doğrulama kayıtları | host -t TXT clou.tr |
| NS | Yetkili nameserver'lar | host -t NS clou.tr |
| SOA | Bölge idari bilgileri ve seri no | host -t SOA clou.tr |
| CNAME | Takma ad yönlendirmesi | host -t CNAME www.clou.tr |
Ters DNS — PTR Sorgulama#
Şimdiye kadar hep isimden IP'ye gittik; ters DNS ise tam tersini yapar, bir IP adresinden alan adına ulaşır. Buna PTR (pointer) kaydı denir ve host bu işi özellikle kolaylaştırır. Ters sorgu için özel bir bayrak öğrenmenize bile gerek yoktur; komuta doğrudan IP adresi yazarsanız host bunun bir ters sorgu olduğunu kendisi anlar:
host 203.0.113.10
# 10.113.0.203.in-addr.arpa domain name pointer mail.clou.tr.
Çıktıdaki "domain name pointer" ifadesi, sorduğunuz IP'nin hangi isme işaret ettiğini gösterir. dig ile aynı sonucu almak için IP'yi ters çevirip .in-addr.arpa eklemek ve -x bayrağını hatırlamak gerekirken, host bütün bu ayrıntıyı sizin adınıza halleder. İşte host'u günlük işte bu kadar sevimli yapan da tam olarak budur.
Ters DNS neden önemli? Özellikle kendi posta sunucunuzu çalıştırıyorsanız, gönderdiğiniz IP'nin geçerli bir PTR kaydına sahip olması e-postalarınızın karşı tarafça kabul edilmesi için neredeyse zorunludur. PTR eksikse ya da IP ile isim eşleşmiyorsa, birçok büyük posta sağlayıcısı iletinizi reddeder ya da spam klasörüne atar. Bir VDS sunucu üzerinde posta gönderiyorsanız, ters DNS kaydının IP'niz ile doğru şekilde eşleştiğinden emin olmak ilk kontrol etmeniz gereken şeydir. PTR kaydı IP'yi tahsis eden sağlayıcı tarafında ayarlanır; bizim sunucu hizmetlerimizde bu talebi destek üzerinden hızla düzenliyoruz.
IPv6 için de ters sorgu aynı sadelikle çalışır; komuta IPv6 adresini yazmanız yeterlidir, host uzun ip6.arpa dönüşümünü sizin yerinize yapar:
host 2001:db8::10
# ...ip6.arpa domain name pointer web.clou.tr.
Belirli Bir Nameserver'a Sorgu Gönderme#
Varsayılan olarak host, sisteminizin /etc/resolv.conf dosyasında tanımlı DNS sunucularını kullanır. Ancak bir DNS değişikliği yaptığınızda, bazı sunucular güncel cevabı verirken diğerleri hâlâ önbellekteki eski değeri döndürebilir. Bu durumu ayırt etmek için sorguyu belirli bir nameserver'a yönlendirebilirsiniz. Bunun için komutun en sonuna hedef sunucuyu eklemeniz yeterlidir:
host clou.tr 8.8.8.8
# Using domain server:
# Name: 8.8.8.8
# Address: 8.8.8.8#53
# clou.tr has address 203.0.113.10
Burada Google'ın herkese açık 8.8.8.8 çözümleyicisine sorduk. Aynı sorguyu bir de alan adının kendi yetkili nameserver'ına yöneltirseniz, kaynaktaki gerçek değeri görürsünüz. İki cevap farklıysa, aradaki fark önbellek (cache) gecikmesidir ve zamanla düzelir:
# Doğrudan yetkili nameserver'a sor
host clou.tr ns1.clou.tr
Bu teknik özellikle DNS yayılımını (propagation) izlerken paha biçilmezdir. Farklı bölgelerdeki çözümleyicilere (örneğin 1.1.1.1, 8.8.8.8, 9.9.9.9) sırayla sorup hepsinden aynı yeni değeri aldığınızda değişikliğin dünyaya yayıldığından emin olursunuz. Nameserver taşıma sürecinin bütününü nameserver değiştirme yazımızda ayrıntılı ele aldık.
Bir başka faydalı bayrak -a (all) seçeneğidir; bu, host -t ANY gibi davranır ve o alan adı için mevcut tüm kayıt tiplerini tek seferde dökmeye çalışır. Ayrıca ayrıntılı çıktı ve zaman aşımı ayarları için de seçenekler vardır:
# Tüm kayıtları detaylı dök
host -a clou.tr
# Sorgu için 3 saniye zaman aşımı ve 2 deneme
host -W 3 -R 2 clou.tr
# Ayrıntılı (verbose) çıktı — dig benzeri detay
host -v clou.tr
host, dig ve nslookup Karşılaştırması#
Üç aracın da işi aynıdır; DNS'e soru sorup cevap almak. Fark, cevabı nasıl sundukları ve hangi senaryoda parladıklarıdır. Kısaca şöyle özetleyebiliriz: host günlük hızlı kontroller için, dig derin analiz ve hata ayıklama için, nslookup ise etkileşimli ve platformlar arası alışkanlıklar için.
| Özellik | host | dig | nslookup |
|---|---|---|---|
| Çıktı sadeliği | Çok sade, tek satır | Ayrıntılı, bölümlü | Orta |
| Öğrenme kolaylığı | Yüksek | Orta | Yüksek |
| Ters DNS kolaylığı | IP yazmak yeterli | -x gerekir | Otomatik |
| Detaylı hata ayıklama | Sınırlı | En güçlü | Orta |
| Betiklerde ayrıştırma | Kolay | +short ile çok kolay | Zor |
| Etkileşimli mod | Yok | Yok | Var |
Pratik bir örnekle farkı görelim. Aynı A kaydını üç araçla sorduğumuzda çıktılar şöyle olur:
host clou.tr
# clou.tr has address 203.0.113.10 (tek satır, temiz)
dig +short clou.tr
# 203.0.113.10 (dig'in kısa modu host'a yaklaşır)
dig clou.tr
# ... QUESTION, ANSWER, AUTHORITY, ADDITIONAL bölümleriyle uzun çıktı
Buradan çıkan ders şudur; sadece "IP nedir" cevabını istiyorsanız host ya da dig +short en pratik seçeneklerdir. Ama bir sorguda TTL'in ne olduğunu, cevabın hangi sunucudan geldiğini, otorite bölümünde ne yazdığını incelemeniz gerekiyorsa dig'in ayrıntısına ihtiyaç duyarsınız. İkisini de bilmek, doğru aracı doğru işe koşmanızı sağlar. DNS ve benzeri kontrolleri tarayıcıdan yapmak isteyenler için online araçlar sayfamızda pratik seçenekler de bulunuyor.
Pratik Kullanım Senaryoları ve Sorun Giderme#
Teoriyi bir kenara bırakıp gerçek hayatta host'u ne zaman elinize aldığınıza bakalım. En sık karşılaşılan senaryo, yeni kurulan bir sitenin doğru sunucuya baktığını doğrulamaktır. Web hosting paketinize alan adınızı yönlendirdikten sonra, gerçekten hedef IP'ye çözümlenip çözümlenmediğini tek komutla teyit edersiniz:
host siteniz.com
# siteniz.com has address <hosting sunucusunun IP'si> ← doğru IP mi?
İkinci sık senaryo e-posta sorunlarıdır. Müşteri "e-postalarım gitmiyor" dediğinde ilk refleks MX ve TXT kayıtlarına bakmaktır. MX doğru sunucuyu gösteriyor mu, SPF kaydı güncel mi diye host -t MX ve host -t TXT ile saniyeler içinde teşhis koyabilirsiniz. Sorun genelde ya eksik bir SPF kaydı ya da yanlış bir MX önceliğidir.
Üçüncü olarak, bir alan adının hâlâ eski sunucuya mı yoksa yeni sunucuya mı işaret ettiğini bilmeniz gereken site taşıma işlemlerinde host vazgeçilmezdir. Taşıma öncesi TTL'i düşürür, geçişi yapar, sonra farklı çözümleyicilere host ile sorup herkesin yeni IP'yi görmeye başladığını izlersiniz. Kayıtların yayılmadığı bir durumda basit bir betikle otomatik kontrol de yazabilirsiniz:
#!/bin/bash
# Farklı çözümleyicilerde aynı domaini kontrol et
DOMAIN="clou.tr"
for RESOLVER in 8.8.8.8 1.1.1.1 9.9.9.9; do
IP=$(host "$DOMAIN" "$RESOLVER" | grep "has address" | head -n1 | awk '{print $NF}')
echo "$RESOLVER -> $IP"
done
Bu küçük betik, üç ana çözümleyiciye sırayla sorup her birinin döndürdüğü IP'yi yan yana yazar. Hepsi aynıysa yayılım tamamdır; farklıysa henüz beklemek gerekir. Sorun giderirken bir de çıkış kodunu (exit code) hatırlatalım; host sorguyu başarıyla çözerse 0, isim bulunamazsa 1 döner. Bu sayede otomasyon betiklerinde if host ... > /dev/null; then gibi koşullarla kaydın varlığını kolayca test edebilirsiniz.
Sıkça Sorulan Sorular#
host komutu ile dig arasındaki temel fark nedir?#
İkisi de DNS sorgusu yapar ama sundukları çıktı farklıdır. host cevabı tek satırlık, okunması kolay bir cümleyle verirken dig sorgunun her ayrıntısını (TTL, bayraklar, otorite bölümü, cevap süresi) gösterir. Günlük "bu domain hangi IP'ye bakıyor" kontrolleri için host daha pratiktir; derin hata ayıklama veya kayıt sürelerini incelemek gerektiğinde dig'in ayrıntısına ihtiyaç duyarsınız. İkisini birlikte kullanmak en verimli yaklaşımdır.
host ile ters DNS sorgusu nasıl yapılır?#
Ters DNS için ekstra bir bayrak öğrenmenize gerek yoktur. Komutun ardından doğrudan IP adresini yazmanız yeterlidir; örneğin host 203.0.113.10 yazdığınızda host bunun bir PTR sorgusu olduğunu kendiliğinden anlar ve o IP'nin işaret ettiği alan adını döndürür. IPv6 adresleri için de aynı şekilde çalışır, uzun ip6.arpa dönüşümünü sizin yerinize yapar. Bu, dig -x yazmaya göre çok daha akılda kalıcı bir kısayoldur.
host komutu Windows'ta çalışır mı?#
Bu komut doğrudan Windows ile gelmez; BIND paketinin parçası olduğu için asıl olarak Linux ve macOS ortamlarında bulunur. Windows kullanıcıları benzer işi işletim sistemiyle gelen nslookup aracıyla yapabilir. Yine de WSL (Windows Subsystem for Linux) kurarak ya da bir Linux sunucuya SSH ile bağlanarak host komutunu Windows makinenizden de rahatça kullanabilirsiniz. Sunucu tarafında çalışıyorsanız zaten Linux ortamında olacağınız için host elinizin altında olur.
MX kayıtlarını host ile nasıl kontrol ederim?#
Bir alan adının posta sunucularını görmek için host -t MX alanadi.com komutunu kullanırsınız. Çıktıda "mail is handled by" ifadesinden sonra bir öncelik sayısı ve posta sunucusunun adı gelir; küçük sayı daha yüksek önceliği belirtir. E-posta teslim sorunlarını araştırırken önce bu MX kayıtlarının doğru sunucuları ve doğru öncelik sırasını gösterdiğinden emin olmanız gerekir. Ardından SPF kaydını görmek için host -t TXT alanadi.com ile TXT kayıtlarına da bakmanızı öneririm.
DNS değişikliğinin yayılıp yayılmadığını host ile nasıl anlarım?#
En güvenilir yöntem, sorguyu farklı nameserver'lara tek tek yönlendirmektir. Komutun sonuna hedef çözümleyiciyi ekleyerek, örneğin host alanadi.com 8.8.8.8 ve host alanadi.com 1.1.1.1 şeklinde sorarsınız. Tüm çözümleyiciler yeni değeri döndürmeye başladığında değişikliğin yayıldığından emin olabilirsiniz. Alan adının kendi yetkili nameserver'ına doğrudan sorup kaynaktaki gerçek değeri de görebilir, önbellek gecikmesini bu şekilde ayırt edebilirsiniz.
host sorgusu neden "not found" ya da "NXDOMAIN" döndürür?#
Bu sonuç genellikle sorguladığınız kaydın gerçekten var olmadığı anlamına gelir; yani DNS bölgesinde o isim için tanımlı bir kayıt yoktur. Bunun en sık nedenleri, kaydın henüz eklenmemiş olması, yeni yapılan değişikliğin daha yayılmamış olması ya da alan adında yazım hatası bulunmasıdır. Böyle bir durumda önce ismi doğru yazdığınızı kontrol edin, ardından yetkili nameserver'a doğrudan sorarak kaydın kaynakta var olup olmadığını teyit edin. Kayıt kaynakta varsa fakat çözümleyicide yoksa, muhtemelen beklemeniz yeterli olacaktır.
Kapanış#
host komutu, sadeliği sayesinde her sistem yöneticisinin terminal alışkanlığına girmesi gereken küçük ama güçlü bir araçtır. A kaydı doğrulamaktan MX ve TXT kontrolüne, ters DNS sorgusundan yayılım takibine kadar günlük işlerin çoğunu tek satırlık temiz cevaplarla halleder. dig'in ayrıntısına ihtiyaç duyduğunuz anlar olacaktır, ama işin büyük kısmında host en hızlı yoldur. Bu komutları rahatça çalıştırabileceğiniz kararlı bir DNS altyapısı ve doğru yapılandırılmış kayıtlar, sağlam bir hosting deneyiminin temelidir.
Clou.TR olarak alan adından sunucuya kadar bu altyapının tamamını tek çatı altında sunuyoruz. Yeni bir alan adı almak için domain sayfamıza, hızlı ve güvenli barındırma için web hosting paketlerimize, tam kontrol isteyen projeleriniz için sanal sunucu çözümlerimize göz atabilirsiniz. DNS ve nameserver yönetiminde takıldığınız her noktada ekibimiz yanınızda; siz host ile teşhis koyun, gerisini birlikte çözelim.