Ana içeriğe geç
Kategoriye Dön

DNS Sorunları Teşhis ve Çözüm

DNS sorunlarını teşhis etmek ve çözmek için dig, nslookup komutları, DNS propagasyon kontrolü, cache temizleme ve yaygın DNS hatalarının çözüm rehberi.

Okuma süresi: 14 dk Sorun Giderme
dnsdignslookuppropagasyoncachesorun giderme

İçindekiler

Giriş

DNS (Domain Name System), internet altyapısının temel bileşenlerinden biridir. Domain adlarını IP adreslerine çeviren bu sistem, doğru çalışmadığında web sitelerine erişim, e-posta gönderimi ve sunucu bağlantıları gibi birçok hizmet aksayabilir.

Bu rehberde, DNS sorunlarını teşhis etmek ve çözmek için kullanabileceğiniz araçları ve yöntemleri detaylı olarak inceleyeceğiz.

DNS Temel Kavramlar

DNS Kayıt Türleri

Kayıt TürüAçıklamaÖrnek
AIPv4 adresine yönlendirmeexample.com → 1.2.3.4
AAAAIPv6 adresine yönlendirmeexample.com → 2001:db8::1
CNAMEBaşka bir domain'e aliaswww → example.com
MXMail sunucu yönlendirmesimail.example.com (öncelik: 10)
TXTMetin kaydı (SPF, DKIM vb.)v=spf1 ip4:1.2.3.4 -all
NSNameserver tanımıns1.example.com
PTRReverse DNS kaydı4.3.2.1 → example.com
SOAZone yetki kaydıTTL, serial, refresh bilgileri

DNS Çözümleme Süreci

Kullanıcı → Yerel DNS Cache → Recursive Resolver → Root NS → TLD NS → Authoritative NS → IP Adresi

dig Komutu ile DNS Teşhis

dig (Domain Information Groper), DNS sorunlarını teşhis etmek için en güçlü araçtır.

Temel Kullanım

hljs bash
# A kaydı sorgulama
dig example.com A

# Belirli bir DNS sunucusundan sorgulama
dig @8.8.8.8 example.com A

# Kısa çıktı
dig example.com +short

# Tüm kayıt türlerini sorgulama
dig example.com ANY

# MX kaydı sorgulama
dig example.com MX

# NS kaydı sorgulama
dig example.com NS

# TXT kaydı sorgulama
dig example.com TXT

Detaylı Sorgulama

hljs bash
# Trace modu — çözümleme sürecini adım adım gösterir
dig example.com +trace

# SOA kaydı — zone bilgileri
dig example.com SOA

# Reverse DNS sorgulama
dig -x 1.2.3.4

# TCP üzerinden sorgulama (büyük yanıtlar için)
dig example.com +tcp

# DNSSEC doğrulama
dig example.com +dnssec

dig Çıktısını Okuma

hljs bash
$ dig example.com A

;; QUESTION SECTION:
;example.com.                   IN      A

;; ANSWER SECTION:
example.com.            300     IN      A       93.184.216.34

;; AUTHORITY SECTION:
example.com.            86400   IN      NS      ns1.example.com.

;; Query time: 23 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; MSG SIZE  rcvd: 56

Önemli alanlar:

  • ANSWER SECTION: Sorgunun yanıtı
  • TTL (300): Kaydın cache'te kalma süresi (saniye)
  • Query time: Yanıt süresi
  • SERVER: Yanıtı veren DNS sunucusu

nslookup Komutu

nslookup, DNS sorgulama için daha basit bir araçtır:

hljs bash
# Temel sorgulama
nslookup example.com

# Belirli DNS sunucusundan sorgulama
nslookup example.com 8.8.8.8

# MX kaydı sorgulama
nslookup -type=MX example.com

# NS kaydı sorgulama
nslookup -type=NS example.com

# TXT kaydı sorgulama
nslookup -type=TXT example.com

# Reverse DNS
nslookup 1.2.3.4

DNS Propagasyon Kontrolü

DNS değişiklikleri yapıldığında, yeni kayıtların tüm DNS sunucularına yayılması (propagasyon) zaman alır.

Propagasyon Süresi

Kayıt TürüTipik TTLPropagasyon Süresi
A / AAAA300-3600 sn5 dk - 1 saat
MX3600-86400 sn1 - 24 saat
NS86400 sn24 - 48 saat
TXT300-3600 sn5 dk - 1 saat

Farklı DNS Sunucularından Kontrol

hljs bash
# Google DNS
dig @8.8.8.8 example.com A +short

# Cloudflare DNS
dig @1.1.1.1 example.com A +short

# Quad9 DNS
dig @9.9.9.9 example.com A +short

# Yerel ISP DNS
dig example.com A +short

Online propagasyon kontrol araçları:

DNS propagasyonunu hızlandırmak için değişiklik öncesi TTL değerini düşürün (örn: 300 saniye). Değişiklik tamamlandıktan sonra TTL'i tekrar artırabilirsiniz.

DNS Cache Temizleme

İşletim Sistemi Cache Temizleme

hljs bash
# Linux (systemd-resolved)
sudo systemd-resolve --flush-caches
sudo resolvectl flush-caches

# macOS
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

# Windows
ipconfig /flushdns

DNS Sunucu Cache Temizleme

hljs bash
# BIND named cache temizleme
sudo rndc flush

# Belirli bir zone için
sudo rndc flushname example.com

# Unbound cache temizleme
sudo unbound-control flush_zone example.com

Tarayıcı DNS Cache

Chrome tarayıcıda DNS cache temizlemek için:

chrome://net-internals/#dns → Clear host cache

Yaygın DNS Sorunları ve Çözümleri

1. NXDOMAIN (Domain Bulunamadı)

hljs bash
$ dig nonexistent.example.com
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN

Nedenler:

  • Domain adı yanlış yazılmış
  • DNS kaydı henüz oluşturulmamış
  • Domain süresi dolmuş

Çözüm:

hljs bash
# Domain'in WHOIS bilgilerini kontrol edin
whois example.com

# Nameserver'ları kontrol edin
dig example.com NS +short

# Authoritative NS'den sorgulayın
dig @ns1.example.com example.com A

2. SERVFAIL

hljs bash
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL

Nedenler:

  • Nameserver erişilemiyor
  • DNSSEC doğrulama hatası
  • Zone dosyası bozuk

Çözüm:

hljs bash
# Nameserver erişilebilirliğini kontrol edin
dig @ns1.example.com example.com A

# DNSSEC durumunu kontrol edin
dig example.com +dnssec

# Farklı resolver ile deneyin
dig @1.1.1.1 example.com A

3. Yanlış IP Adresi Dönüyor

Nedenler:

  • Eski DNS cache
  • Yanlış A kaydı
  • DNS hijacking

Çözüm:

hljs bash
# Cache'i temizleyin
sudo systemd-resolve --flush-caches

# Authoritative NS'den doğrudan sorgulayın
dig @ns1.example.com example.com A +short

# Trace ile çözümleme yolunu kontrol edin
dig example.com +trace

4. DNS Çözümleme Yavaş

Nedenler:

  • DNS sunucusu uzak veya yavaş
  • Ağ gecikmesi
  • DNS sunucusu aşırı yüklü

Çözüm:

hljs bash
# DNS yanıt süresini ölçün
dig example.com | grep "Query time"

# Farklı DNS sunucularını karşılaştırın
for dns in 8.8.8.8 1.1.1.1 9.9.9.9; do
  echo "$dns: $(dig @$dns example.com +short +stats | grep 'Query time')"
done

# /etc/resolv.conf'u güncelleyin
sudo nano /etc/resolv.conf
nameserver 1.1.1.1
nameserver 8.8.8.8
nameserver 9.9.9.9

Kalıcı DNS ayarı için /etc/resolv.conf yerine systemd-resolved veya NetworkManager yapılandırmasını kullanın.

5. DNS Zone Transfer Sorunu

hljs bash
# Zone transfer testi
dig @ns1.example.com example.com AXFR

# Zone transfer'ı kısıtlama (named.conf)
zone "example.com" {
    type master;
    file "/etc/bind/zones/example.com.zone";
    allow-transfer { SLAVE_IP; };
};

DNS Sorun Giderme Kontrol Listesi

hljs bash
#!/bin/bash
# DNS Sorun Giderme Script'i
DOMAIN="example.com"

echo "=== DNS Sorun Giderme: $DOMAIN ==="

# 1. Nameserver kontrolü
echo -e "\n[1] Nameserver'lar:"
dig $DOMAIN NS +short

# 2. A kaydı kontrolü
echo -e "\n[2] A Kaydı:"
dig $DOMAIN A +short

# 3. MX kaydı kontrolü
echo -e "\n[3] MX Kaydı:"
dig $DOMAIN MX +short

# 4. TXT kaydı kontrolü
echo -e "\n[4] TXT Kayıtları:"
dig $DOMAIN TXT +short

# 5. SOA kaydı kontrolü
echo -e "\n[5] SOA Kaydı:"
dig $DOMAIN SOA +short

# 6. Farklı DNS sunucularından kontrol
echo -e "\n[6] Propagasyon Kontrolü:"
for dns in 8.8.8.8 1.1.1.1 9.9.9.9; do
  result=$(dig @$dns $DOMAIN A +short)
  echo "  $dns$result"
done

# 7. Reverse DNS kontrolü
IP=$(dig $DOMAIN A +short | head -1)
if [ -n "$IP" ]; then
  echo -e "\n[7] Reverse DNS ($IP):"
  dig -x $IP +short
fi

echo -e "\n=== Kontrol Tamamlandı ==="

Sonuç

DNS sorunları, sunucu yönetiminde en sık karşılaşılan problemlerden biridir. dig ve nslookup araçlarını etkin kullanarak sorunları hızlıca teşhis edebilir, propagasyon süreçlerini takip edebilir ve cache sorunlarını çözebilirsiniz. DNS değişikliklerinden önce TTL değerlerini düşürmeyi ve değişiklik sonrası farklı DNS sunucularından doğrulama yapmayı unutmayın.