Linux sunucularında DNS çözümleme sorunları, ağ bağlantılarının temelini sarsan yaygın bir problemdir.
Linux sunucularında DNS çözümleme sorunları, ağ bağlantılarının temelini sarsan yaygın bir problemdir. Sunucunuzun internete erişememesi, paket güncellemelerinin yapılamaması veya uzak sunuculara bağlanılamaması gibi durumlar, genellikle DNS ayarlarından kaynaklanır. Bu makalede, bu sorunların nedenlerini inceleyecek, özellikle /etc/resolv.conf dosyasının doğru yapılandırılmasını adım adım anlatacak ve pratik çözüm yollarını paylaşacağız. Kurumsal ortamlar için kritik olan bu konuyu, sistem yöneticilerinin hızlıca uygulayabileceği şekilde ele alacağız. Doğru DNS ayarları, sunucunuzun verimliliğini artırır ve kesinti riskini minimize eder.
Linux tabanlı sunucularda DNS çözümleme sorunları, genellikle yanlış yapılandırılmış ağ servisleri veya sistem müdahalelerinden kaynaklanır. Örneğin, NetworkManager gibi servisler resolv.conf dosyasını dinamik olarak güncelleyebilir ve bu da manuel ayarlarınızı ezer. Benzer şekilde, systemd-resolved servisi varsayılan DNS çözümleyici olarak çalışarak /etc/resolv.conf’u bir symlink haline getirir ve yerel ayarları engeller. Firewall kuralları veya SELinux politikaları da DNS sorgularını bloke edebilir. Bu sorunlar, sunucunun hostname’leri IP adreslerine çözememesiyle kendini gösterir; örneğin, apt update komutu sırasında “Temporary failure resolving” hatası alınır.
Başka bir yaygın neden, yanlış nameserver IP’leri kullanmaktır. Varsayılan 127.0.0.1 gibi yerel adresler, eğer DNS servisi çalışmıyorsa döngüsel hatalara yol açar. Ayrıca, search domain’lerin eksikliği, tam nitelikli domain name (FQDN) girmeden çözümlenemeyen hostlara neden olur. Kurumsal sunucularda, bu sorunlar uptime’ı düşürür ve iş sürekliliğini tehdit eder. Sorunu teşhis etmek için nslookup google.com gibi komutlar çalıştırarak DNS yanıtlarını test edin.
NetworkManager aktifse, resolv.conf’u otomatik yönetir ve değişikliklerinizi geri alır. Bunu önlemek için /etc/NetworkManager/NetworkManager.conf dosyasında dns=none satırını ekleyin, ardından servisi yeniden başlatın: systemctl restart NetworkManager. systemd-resolved için ise systemctl disable –now systemd-resolved komutuyla servisi durdurun ve /etc/resolv.conf symlink’ini kaldırarak manuel dosya oluşturun. Bu adımlar, özellikle Ubuntu ve CentOS gibi dağıtımlarda etkili olur ve kalıcı çözüm sağlar. Uygulama sonrası dig example.com ile testi tekrarlayın; yanıt süresi kısalırsa sorun çözülmüştür.
iptables veya firewalld ile 53/UDP portu bloke edilmişse DNS sorguları başarısız olur. Kontrol için firewall-cmd –list-all veya iptables -L komutlarını kullanın. Gerekirse firewall-cmd –permanent –add-port=53/udp ile açın ve reload edin. SELinux etkinse, audit.log’da DNS denial’ları arayın ve setsebool -P httpd_can_network_dns 1 gibi boolean’ları ayarlayın. Bu detaylar, kurumsal güvenlik ortamlarında sık karşılaşılan engelleri aşmanızı sağlar ve sunucu erişilebilirliğini korur.
/etc/resolv.conf, Linux’ta DNS çözümlemesinin anahtar dosyasıdır. Bu dosya, nameserver IP’lerini, search domain’leri ve seçenekleri tanımlar. Manuel düzenleme için nano /etc/resolv.conf ile açın ve değişiklikleri kaydedin. Dosyayı kalıcı kılmak adına chattr +i /etc/resolv.conf komutuyla değiştirilmez hale getirin; kaldırmak için chattr -i kullanın. Örnek yapı: nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com
options timeout:1 attempts:3. Bu ayarlar, Google DNS’i kullanır ve hızlı çözümleme sağlar.
Kurumsal ortamlarda, birden fazla nameserver tanımlamak yedeklilik için idealdir. search direktifi, kısa host adlarını tam domain’e dönüştürür; örneğin “db” yazınca “db.example.com” olarak çözer. options ile ndots:1 ekleyerek noktasız sorguları hızlandırın veya rotate ile DNS yükünü dengeleyin. Değişiklik sonrası systemctl restart networking veya reboot ile etkinleştirin. Bu yapı, yüksek trafikli sunucularda performansı optimize eder.
Basit bir kurumsal sunucu için:
nameserver 1.1.1.1
nameserver 1.0.0.1
search mycompany.local
options edns0 trust-ad. Cloudflare DNS’i kullanan bu örnek, gizlilik odaklıdır. Test için host internalhost.mycompany.local çalıştırın. Daha gelişmiş: domain example.com ile alt domain sorgularını sınırlandırın. Her satırın etkisi: nameserver ilk sorgu hedefi, search varsayılan suffix. Bu konfigürasyonlar, 100+ sunuculu ortamlarda standarttır ve kesinti oranını %90 azaltır.
Dinamik yöneticileri devre dışı bırakmak için /etc/netplan/ (Ubuntu) veya /etc/sysconfig/network-scripts/ (RHEL) dosyalarını düzenleyin. Netplan’da yaml dosyasına nameservers: [8.8.8.8, 8.8.4.4] ekleyin ve netplan apply edin. RHEL’de ifcfg-eth0’a DNS1=8.8.8.8 satırını yazın, ifdown/up ile uygulayın. Bu yöntemler, reboot sonrası ayarları korur ve manuel müdahaleyi minimize eder. İzleme için /var/log/syslog’ta DNS hatalarını grep’leyin.
DNS sorununu gidermek için sistematik yaklaşım benimseyin: Önce ping 8.8.8.8 ile ağ bağlantısını doğrulayın, sonra nslookup ile DNS’i test edin. /etc/resolv.conf içeriğini cat ile inceleyin. Logları tail -f /var/log/syslog | grep resolv ile takip edin. Servis durumunu systemctl status systemd-resolved ile kontrol edin. Bu adımlar, sorunu 5 dakikada teşhis eder.
En iyi uygulamalar arasında, birden fazla DNS sağlayıcısı kullanmak (Google, Cloudflare, Quad9), düzenli yedekleme ve monitoring araçları (Prometheus ile DNS latency metrikleri) yer alır. Kurumsal olarak, Ansible playbook’larla resolv.conf’u standartlaştırın. Örnek playbook: template modülüyle dosyayı dağıtın. Bu yaklaşımlar, ölçeklenebilirlik sağlar ve proaktif yönetim sunar.
Sonuç olarak, Linux sunucularında DNS çözümleme sorunlarını çözmek, /etc/resolv.conf’un doğru yönetimiyle mümkündür. Bu rehberdeki adımları uygulayarak sunucunuzun ağ performansını artırın, kesintileri önleyin ve operasyonel verimliliği yükseltin. Düzenli testler ve güncellemelerle sorunsuz bir ortam sağlayın.