Shell Script ile DNS Çözümleme Kontrolü

QuantumRuh

Onbaşı
Admin
Katılım
23 Kasım 2025
Mesajlar
1,003
Reaksiyon puanı
59

DNS Çözümlemenin Önemi​


Alan Adı Sistemi (DNS), internetin temel taşlarından biridir. İnsanların akılda tutması zor IP adresleri yerine, kolayca hatırlanabilen alan adları kullanmasını sağlarız. Bir web sitesine erişmek istediğimizde veya bir e-posta gönderdiğimizde, DNS sistemi bu alan adlarını ilgili IP adreslerine çevirir. Eğer DNS çözümleme doğru çalışmazsa, internet bağlantımız olsa bile web sitelerine ulaşamayız, e-postalarımız gönderilemez veya diğer ağ hizmetlerini kullanamayız. Bu nedenle, sunucuların, ağ cihazlarının ve kullanıcı makinelerinin DNS çözümleme yeteneğinin sürekli olarak izlenmesi büyük önem taşır. Hızlı ve doğru DNS çözümleme, ağ performansı ve kesintisiz erişim için kritik bir faktördür.

Shell Script Temelleri ve Ağ Araçları​


Shell script'ler, Linux/Unix tabanlı sistemlerde tekrarlayan görevleri otomatikleştirmek için kullanılan güçlü araçlardır. Bu script'ler sayesinde karmaşık komut dizilerini tek bir dosya altında toplayabilir, parametrelerle çalıştırabilir ve hatta zamanlayabiliriz. DNS çözümleme kontrolü için shell script yazarken `ping`, `nslookup`, `dig` ve `host` gibi komutlardan faydalanırız. Örneğin, `ping` bir IP adresine veya alan adına erişimi test ederken, `nslookup` ve `dig` alan adlarının IP adreslerini ve diğer DNS kayıtlarını sorgulamak için spesifik olarak tasarlanmıştır. Bu araçları bir shell script içinde kullanarak, DNS sunucularının doğru yanıt verip vermediğini hızlıca kontrol edebiliriz.

Temel DNS Kontrol Komutları​


DNS çözümlemesini kontrol etmek için kullanabileceğimiz birçok komut bulunur. `nslookup` en yaygın kullanılanlardan biridir ve belirli bir alan adının IP adresini sorgulamanıza veya bir IP adresinin alan adını bulmanıza olanak tanır. Örneğin, `nslookup google.com` komutu Google'ın IP adreslerini gösterir. `dig` komutu ise daha detaylı ve esnek DNS sorguları yapmamızı sağlar; farklı kayıt tiplerini (A, MX, NS vb.) sorgulayabiliriz. `dig google.com A` sadece A kaydını döndürür. `host` komutu da benzer işlevsellik sunar ve genellikle daha basittir. Bu komutların çıktılarını script içinde işleyerek, DNS sunucularından beklenen yanıtların gelip gelmediğini kolayca doğrulayabiliriz. Bu nedenle, script yazarken bu komutların kullanımına hakim olmak önemlidir.

Bir DNS Çözümleme Script'i Oluşturma​


Bir DNS çözümleme script'i oluşturmaya temel bir örnekle başlayabiliriz. İlk olarak, kontrol edilecek alan adlarını ve kullanılacak DNS sunucusunu belirleriz. Aşağıdaki basit script, belirli bir alan adının Google'ın DNS sunucusu (8.8.8.8) üzerinden çözümlenip çözümlenmediğini kontrol eder:

```bash
#!/bin/bash

DOMAIN="example.com"​

DNS_SERVER="8.8.8.8"​


echo "Domain: $DOMAIN için DNS çözümleme kontrolü yapılıyor..."

# dig komutunu kullanarak sorgu yap

RESULT=$(dig @$DNS_SERVER $DOMAIN +short)​


if [ -z "$RESULT" ]; then
echo "HATA: $DOMAIN alanı $DNS_SERVER üzerinden çözümlenemedi."
exit 1
else
echo "BAŞARILI: $DOMAIN alanı $DNS_SERVER üzerinden $RESULT olarak çözümlendi."
exit 0
fi
```
Bu script, `dig` komutunun çıktısını kontrol ederek çözümlemenin başarılı olup olmadığını bize bildirir. Başarılı çözümlenmede IP adresini, başarısızlık durumunda ise bir hata mesajını ekrana yazar. Ek olarak, bu script'i geliştirmek için çeşitli alan adlarını bir döngü içinde kontrol edebilir veya farklı DNS sunucularını test edebiliriz.

Script'i Geliştirme ve Hata Yönetimi​


Basit bir script'ten daha sağlam bir çözüme geçmek için hata yönetimi ve ek özellikler eklemeliyiz. Örneğin, script'in birden fazla alan adını ve birden fazla DNS sunucusunu kontrol etmesini sağlayabiliriz. Bir döngü kullanarak bir liste halindeki alan adlarını tek tek kontrol edebiliriz. Ayrıca, `dig` veya `nslookup` komutunun hata döndürdüğü durumları yakalamak için çıkış kodlarını kontrol etmek önemlidir. Komutun başarılı olup olmadığını `$?` değişkeni ile kontrol edebiliriz. Eğer bir alan adı çözümlenemezse, script'in sadece bir hata mesajı vermekle kalmayıp, bu durumu bir log dosyasına kaydetmesini veya bir bildirim göndermesini sağlayabiliriz. Bu sayede, sorunları daha hızlı tespit edip müdahale edebiliriz.

Periyodik DNS Kontrolü ve Uyarılar​


DNS çözümleme kontrolünü periyodik olarak çalıştırmak, potansiyel sorunları erken aşamada yakalamamızı sağlar. Bu görevi otomatikleştirmek için `cron` zamanlayıcısını kullanabiliriz. Script'i her 5 dakikada bir veya her saat başında çalışacak şekilde ayarlayabiliriz. Script, bir DNS çözümleme hatası tespit ettiğinde, yöneticilere e-posta veya anlık mesajlaşma araçları aracılığıyla uyarı göndermelidir. Örneğin, `mail` komutunu kullanarak hata detaylarını içeren bir e-posta gönderebiliriz. Bu tür otomasyon, manuel kontrollerin yükünü azaltır ve olası hizmet kesintilerinin önüne geçmeye yardımcı olur. Sonuç olarak, proaktif bir izleme mekanizması kurmuş oluruz.

İleri Seviye Kullanım Senaryoları ve En İyi Uygulamalar​


Gelişmiş senaryolarda, script'i sadece A kayıtlarını değil, MX (posta sunucusu), NS (isim sunucusu) ve SPF/DKIM (e-posta doğrulama) gibi diğer DNS kayıtlarını da kontrol edecek şekilde genişletebiliriz. Bu, e-posta hizmetlerinin veya diğer kritik uygulamaların doğru çalıştığından emin olmak için önemlidir. Ayrıca, farklı coğrafi konumlardan DNS çözümleme kontrolü yapmak, global hizmetler için kritik bir uygulamadır; çünkü bir bölgedeki DNS sunucusunun problemi diğer bölgeleri etkilemeyebilir. Script'in çıktısını bir izleme sistemine (örneğin Prometheus, Zabbix) entegre etmek, uzun vadeli trendleri izlememizi ve performans darboğazlarını tespit etmemizi sağlar. Başka bir deyişle, bu tür detaylı kontroller, ağ altyapısının genel sağlığını önemli ölçüde artırır.
 
Geri
Üst Alt