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.
İç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 |
|---|---|---|
| A | IPv4 adresine yönlendirme | example.com → 1.2.3.4 |
| AAAA | IPv6 adresine yönlendirme | example.com → 2001:db8::1 |
| CNAME | Başka bir domain'e alias | www → example.com |
| MX | Mail sunucu yönlendirmesi | mail.example.com (öncelik: 10) |
| TXT | Metin kaydı (SPF, DKIM vb.) | v=spf1 ip4:1.2.3.4 -all |
| NS | Nameserver tanımı | ns1.example.com |
| PTR | Reverse DNS kaydı | 4.3.2.1 → example.com |
| SOA | Zone 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
# 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
# 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
$ 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:
# 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 TTL | Propagasyon Süresi |
|---|---|---|
| A / AAAA | 300-3600 sn | 5 dk - 1 saat |
| MX | 3600-86400 sn | 1 - 24 saat |
| NS | 86400 sn | 24 - 48 saat |
| TXT | 300-3600 sn | 5 dk - 1 saat |
Farklı DNS Sunucularından Kontrol
# 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
# 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
# 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ı)
$ 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:
# 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
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL
Nedenler:
- Nameserver erişilemiyor
- DNSSEC doğrulama hatası
- Zone dosyası bozuk
Çözüm:
# 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:
# 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:
# 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
# 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
#!/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.
İlgili Makaleler
SSH Bağlantı Sorunu: Sunucuya Bağlanamıyorum
SSH bağlantı sorunlarını çözme rehberi: Path.net firewall kuralları, Default Block, SSH portu için filtre kuralı oluşturma ve sorun giderme adımları.
RDP Bağlantı Sorunu: Windows Sunucuya Erişilemiyor
RDP bağlantı sorunlarını çözme rehberi: Path.net firewall kuralları, Default Block, RDP portu için filtre kuralı oluşturma ve sorun giderme adımları.
MTR Testi Nasıl Yapılır ve Destek Ekibine Gönderilir
WinMTR ve Linux MTR ile ağ testi yapma, ICMP filtre kuralı oluşturma ve sonuçları destek ekibine gönderme rehberi. Paket kaybı ve gecikme analizi.