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 1eklemek 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
nslookupgö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.