whois ve dig Komutları ile Domain Bilgisi Sorgulama

Bir sysadmin olarak günlük işlerin içinde domain sorgulama ihtiyacı her an kapınızı çalabilir. Müşteri bir domain’in kimin üzerinde kayıtlı olduğunu sorar, bir servis erişilemez olur ve DNS kayıtlarını kontrol etmeniz gerekir, ya da güvenlik analizi sırasında şüpheli bir domain’in arkasındaki yapıyı anlamanız şart olur. İşte tam bu noktada whois ve dig araçları sysadmin’in en yakın dostları haline gelir. Bu iki araç birbirini mükemmel tamamlar: whois size domain’in kimin kontrolünde olduğunu, dig ise DNS’in nasıl çözümlendiğini söyler.

whois Nedir ve Neden Kullanılır?

whois, internet kayıtlarına erişim sağlayan bir sorgulama protokolüdür. Domain’lerin kayıt bilgilerine, IP bloklarının sahiplik bilgilerine ve AS (Autonomous System) numaralarına ulaşmak için kullanılır. IANA, ARIN, RIPE, APNIC gibi kayıt kuruluşlarının veritabanlarını sorgular.

Pratik kullanım senaryoları şunlardır:

  • Bir domain’in kim tarafından ne zaman kayıt edildiğini öğrenmek
  • Domain’in ne zaman sona ereceğini kontrol etmek
  • Kayıt kuruluşunu (registrar) tespit etmek
  • Kötü amaçlı trafiğin hangi IP bloğuna ait olduğunu araştırmak
  • Nameserver bilgilerini hızlıca kontrol etmek

whois Kurulumu

Çoğu Linux dağıtımında whois önceden kurulu gelir, gelmiyorsa kurulumu basittir:

# Debian/Ubuntu sistemlerde
sudo apt install whois

# RHEL/CentOS/Rocky Linux sistemlerde
sudo yum install whois
# ya da
sudo dnf install whois

# Arch Linux'ta
sudo pacman -S whois

Temel whois Kullanımı

En basit kullanım şekliyle bir domain sorgulayalım:

whois example.com

Bu komut size domain hakkında onlarca satır bilgi döndürür. Çıktıda dikkat etmeniz gereken alanlar şunlardır:

  • Registrar: Domain’i satan ve yöneten kayıt kuruluşu
  • Creation Date: Domain’in ilk kayıt tarihi
  • Updated Date: Son güncelleme tarihi
  • Registry Expiry Date: Domain’in son kullanma tarihi
  • Name Server: Yetkili DNS sunucuları
  • Domain Status: Domain’in mevcut durumu (clientTransferProhibited, serverHold vb.)

whois Çıktısını Filtrelemek

Gerçek hayatta whois çıktısı çok uzun ve bazen gürültülü olabilir. grep ile ihtiyacınız olan bilgiye hızla ulaşabilirsiniz:

# Sadece nameserver bilgilerini görmek için
whois example.com | grep -i "name server"

# Expiry tarihini hızlıca bulmak için
whois example.com | grep -i "expir"

# Registrar bilgisini almak için
whois example.com | grep -i "registrar"

# Domain oluşturulma ve bitiş tarihlerini bir arada görmek için
whois example.com | grep -iE "(creation|expir|updated)"

IP Adresi Sorgulama

whois sadece domain’ler için değil, IP adresleri için de son derece kullanışlıdır. Özellikle güvenlik olaylarında şüpheli IP’yi araştırırken hayat kurtarır:

# Bir IP adresinin hangi organizasyona ait olduğunu öğrenmek
whois 8.8.8.8

# Türkiye'deki bir IP bloğunu sorgulamak
whois 195.175.39.1

IP sorgulamalarında çıktıda şunlara bakın:

  • OrgName / org-name: IP bloğunun sahibi organizasyon
  • NetRange / inetnum: Bloğun kapsadığı IP aralığı
  • Country: Hangi ülkeye kayıtlı
  • CIDR: Blok notasyonu

whois ile Belirli Bir Sunucuyu Sorgulamak

Bazı durumlarda varsayılan whois sunucusu doğru sonuç vermeyebilir ya da farklı bir kayıt merkezini sorgulamak isteyebilirsiniz:

# RIPE NCC sunucusunu direkt sorgulamak (Avrupa/Orta Doğu/Orta Asya IP'leri için)
whois -h whois.ripe.net 195.175.39.1

# ARIN sunucusunu sorgulamak (Kuzey Amerika IP'leri için)
whois -h whois.arin.net 8.8.8.8

# Belirli bir domain kayıt sunucusunu sorgulamak
whois -h whois.verisign-grs.com example.com

-h: Sorgulanacak whois sunucusunu belirtir

dig Nedir ve Neden Kritiktir?

dig (Domain Information Groper), DNS sorgularını detaylı biçimde yapmanızı sağlayan güçlü bir araçtır. nslookup‘tan çok daha esnek ve çıktısı çok daha ayrıntılıdır. DNS sorunlarını debug ederken, nameserver değişikliklerini takip ederken ve DNS kayıt yapılandırmalarını doğrularken dig vazgeçilmezdir.

dig Kurulumu

dig, bind-utils (RHEL tabanlı) veya dnsutils (Debian tabanlı) paketinin içinde gelir:

# Debian/Ubuntu
sudo apt install dnsutils

# RHEL/CentOS/Rocky Linux
sudo dnf install bind-utils

Temel dig Kullanımı

# Bir domain için A kaydı sorgulama (varsayılan davranış)
dig example.com

# Belirli bir kayıt türünü sorgulamak
dig example.com A
dig example.com MX
dig example.com TXT
dig example.com NS
dig example.com CNAME
dig example.com AAAA
dig example.com SOA

dig example.com komutunu çalıştırdığınızda karşınıza birkaç bölüm çıkar:

  • QUESTION SECTION: Neyi sorduğunuzu gösterir
  • ANSWER SECTION: DNS sunucusunun verdiği yanıt
  • AUTHORITY SECTION: Yetkili nameserver’lar
  • ADDITIONAL SECTION: Ek bilgiler (nameserver IP’leri gibi)

dig Çıktısını Sadeleştirmek

Bazen tüm bu ayrıntılar yerine sadece IP adresini görmek istersiniz:

# Sadece yanıt satırını göster, başlık olmadan
dig +short example.com

# MX kayıtlarını sade şekilde listele
dig +short example.com MX

# NS kayıtlarını sade listele
dig +short example.com NS

# Tüm sorgulama sürecini gizle, sadece cevabı göster
dig +noall +answer example.com

+short: Tüm meta verileri kaldırır, sadece sonucu gösterir +noall: Tüm çıktı bölümlerini kapatır +answer: Sadece ANSWER SECTION’ı gösterir

Belirli DNS Sunucusuna Sorgu Atmak

dig’in en güçlü özelliklerinden biri, istediğiniz DNS sunucusuna doğrudan sorgu yapabilmesidir. Bu, “acaba DNS değişikliğim yayıldı mı?” sorusunu yanıtlarken çok işe yarar:

# Google'ın DNS sunucusuna sor
dig @8.8.8.8 example.com

# Cloudflare'e sor
dig @1.1.1.1 example.com

# Domain'in kendi nameserver'ına doğrudan sor
dig @ns1.example.com example.com

# Yerel DNS resolver'ınızı test edin
dig @localhost example.com

DNS Yayılımını Kontrol Etmek (Gerçek Dünya Senaryosu)

Diyelim ki bir domain’in A kaydını değiştirdiniz ve yayılıp yayılmadığını kontrol etmek istiyorsunuz. Farklı DNS sunucularını tek tek sorgulamak yerine bir script yazabiliriz:

#!/bin/bash
# DNS propagasyon kontrolü

DOMAIN="example.com"
DNS_SERVERS=("8.8.8.8" "8.8.4.4" "1.1.1.1" "1.0.0.1" "9.9.9.9" "208.67.222.222")

echo "=== $DOMAIN icin DNS propagasyon kontrolu ==="
for dns in "${DNS_SERVERS[@]}"; do
    result=$(dig @$dns +short $DOMAIN A)
    echo "DNS $dns --> $result"
done

Bu script’i çalıştırdığınızda hangi DNS sunucularının yeni IP’yi görüp görmedğini anında anlarsınız.

Reverse DNS Sorgulama

IP adresinden domain adına gitmek için dig -x kullanılır:

# Reverse DNS sorgusu
dig -x 8.8.8.8

# Kısa çıktı ile
dig +short -x 8.8.8.8

# Kendi sunucunuzun rDNS kaydını kontrol edin
dig +short -x 195.175.39.1

Mail sunucusu yöneticileri için bu çok önemlidir. PTR kaydı olmayan ya da hostname ile eşleşmeyen IP’lerden gelen e-postalar spam filtrelerine takılır.

MX Kayıtlarını Detaylı İncelemek

E-posta teslim sorunlarını araştırırken MX kayıtları kritik öneme sahiptir:

# MX kayıtlarını öncelik sırasıyla listele
dig example.com MX

# Kısa çıktı ile MX kayıtları
dig +short example.com MX

# MX sunucusunun A kaydını da kontrol et
dig +short mail.example.com A

# Tüm MX sunucularını bir döngüde sorgula
for mx in $(dig +short example.com MX | awk '{print $2}'); do
    echo "$mx --> $(dig +short $mx A)"
done

SPF, DKIM ve DMARC Kayıtlarını Sorgulamak

E-posta güvenlik kayıtlarını kontrol etmek için TXT sorgularını kullanırız:

# SPF kaydını kontrol et
dig +short example.com TXT | grep spf

# DMARC kaydını sorgula
dig +short _dmarc.example.com TXT

# DKIM kaydını kontrol et (selector adını bilmeniz gerekir, örneğin "google" veya "default")
dig +short google._domainkey.example.com TXT

# Tüm TXT kayıtlarını listele
dig example.com TXT

Zone Transfer Denemesi

Eğitim ve güvenlik denetimi amacıyla zone transfer (AXFR) sorgusu yapabilirsiniz. Düzgün yapılandırılmış nameserver’lar bunu reddeder, ama yanlış yapılandırılmış olanlar tüm DNS kayıtlarını döker:

# Zone transfer denemesi (güvenlik denetimi için)
dig @ns1.example.com example.com AXFR

# SOA kaydını kontrol et (zone serial numarasını takip etmek için)
dig example.com SOA

Eğer bir nameserver zone transfer’e izin veriyorsa, bu ciddi bir güvenlik açığıdır. Tüm iç DNS yapısı ifşa olabilir.

dig ile TTL Takibi

DNS sorunlarını debug ederken TTL (Time To Live) değerleri çok önemlidir. Bir kayıt değişikliği yaptınız ama önbellekten dolayı eski değer hala geliyor olabilir:

# TTL değerini görmek için +noall +answer kullan
dig +noall +answer example.com A

# Birden fazla sorgu atıp TTL'nin nasıl azaldığını izle
watch -n 5 'dig +noall +answer example.com A'

Çıktıdaki üçüncü sütun TTL değeridir. Bu değer her geçen saniye azalır ve sıfıra ulaştığında önbellekten düşer.

whois ve dig’i Birlikte Kullanmak

Gerçek dünya senaryolarında bu iki aracı birlikte kullanmak çok daha güçlü sonuçlar verir.

Senaryo: Yeni Bir Müşterinin Domain Altyapısını Analiz Etmek

Bir müşteriden web sitesi ve e-posta yönetimini devraldığınızda ilk yapmanız gereken şey mevcut durumu tam olarak anlamaktır:

#!/bin/bash
DOMAIN=$1

echo "====== DOMAIN ANALIZ RAPORU: $DOMAIN ======"

echo ""
echo "--- WHOIS OZETI ---"
whois $DOMAIN | grep -iE "(registrar:|creation date|expiry|name server|domain status)" 

echo ""
echo "--- A KAYDI ---"
dig +short $DOMAIN A

echo ""
echo "--- NS KAYITLARI ---"
dig +short $DOMAIN NS

echo ""
echo "--- MX KAYITLARI ---"
dig +short $DOMAIN MX

echo ""
echo "--- TXT KAYITLARI ---"
dig +short $DOMAIN TXT

echo ""
echo "--- AAAA KAYDI (IPv6) ---"
dig +short $DOMAIN AAAA

echo ""
echo "--- SOA KAYDI ---"
dig +short $DOMAIN SOA

Bu script’i domain-analiz.sh olarak kaydedin ve bash domain-analiz.sh example.com şeklinde çalıştırın. Dakikalar içinde tüm DNS yapısının fotoğrafını çekmiş olursunuz.

Senaryo: Domain Bitiş Tarihlerini İzlemek

Birden fazla domain yönetiyorsanız bunların bitiş tarihlerini takip etmek kritiktir. Unutulan bir domain yüzünden web sitesi çökmüş, mail durmuş vakalar yaşandı:

#!/bin/bash
# Domain bitis tarihlerini toplu kontrol
DOMAINS=("example.com" "example.net" "example.org" "musteri-domain.com.tr")

echo "Domain Bitis Tarihi Raporu - $(date)"
echo "=================================="

for domain in "${DOMAINS[@]}"; do
    expiry=$(whois $domain 2>/dev/null | grep -iE "(expir|expiry|registry expiry)" | head -1 | awk -F: '{print $2}' | xargs)
    echo "$domain --> $expiry"
    sleep 1  # Rate limiting için kisa bekleme
done

Senaryo: Şüpheli IP Araştırması

Sunucu loglarında tekrar eden şüpheli bir IP gördünüz ve araştırmanız gerekiyor:

#!/bin/bash
SUSPICIOUS_IP="185.220.101.45"

echo "=== Suphecli IP Analizi: $SUSPICIOUS_IP ==="

echo ""
echo "--- WHOIS BILGISI ---"
whois $SUSPICIOUS_IP | grep -iE "(OrgName|org-name|netname|country|CIDR|netrange|inetnum|descr|abuse)"

echo ""
echo "--- REVERSE DNS ---"
dig +short -x $SUSPICIOUS_IP

echo ""
echo "--- AS NUMARASI ---"
whois $SUSPICIOUS_IP | grep -iE "(OriginAS|origin)"

Sık Yapılan Hatalar ve İpuçları

Sistemle çalışırken karşılaşılan bazı yaygın durumlar:

  • Rate limiting: Bazı whois sunucuları art arda çok sorgu yapılınca geçici olarak engeller. Script’lerde sleep 1 eklemek bunu önler.
  • Gizlilik koruması (WHOIS Privacy): Pek çok domain’in sahip bilgileri gizleme servisi arkasında olabilir. Çıktıda “Domains By Proxy” veya “Privacy Protection” gibi ifadeler görüyorsanız gerçek sahibi bulamazsınız.
  • IDN domain’leri: Türkçe karakterli domain’leri (örnek.com) sorgulamak için Punycode formatını kullanmanız gerekir: xn--rnek-jua.com
  • dig vs nslookup: Bazı eski dokümanlarda nslookup görürsünüz. dig çok daha güvenilir ve detaylı çıktı verir, alışkanlığınızı dig‘e çevirin.
  • dig +trace: DNS çözümlemesinin root’tan başlayarak nasıl ilerlediğini adım adım görmek istiyorsanız bu opsiyonu kullanın: dig +trace example.com

Sonuç

whois ve dig, sysadmin araç kutusunun olmazsa olmaz iki üyesidir. whois ile domain’in kim tarafından ne zaman kayıt edildiğini, ne zaman sona ereceğini ve hangi nameserver’ları kullandığını öğrenirsiniz. dig ile ise DNS katmanında neler döndüğünü, kayıtların nasıl çözümlendiğini ve potansiyel yanlış yapılandırmaları tespit edersiniz.

Bu iki aracı birlikte ve akıllıca kullandığınızda DNS kaynaklı sorunları çok daha hızlı çözebilir, yeni domain altyapılarını dakikalar içinde anlayabilir ve güvenlik olaylarında kritik bilgilere anında ulaşabilirsiniz. Scriptlerle otomatize ettiğinizde ise rutin kontrolleri tamamen insan müdahalesi olmadan yürütebilirsiniz.

Pratik yapmanın en iyi yolu kendi domain’lerinizi veya bildiğiniz büyük siteleri sorgulamak ve çıktıları okumayı öğrenmektir. Her seferinde yeni bir şey dikkatinizi çekecek ve zamanla bu araçlar sezgisel bir şekilde parmaklarınızın ucuna yerleşecektir.

Yorum yapın