Linux DNS çözemiyor: nedenleri ve çözümleri

Linux’ta internet bağlantısı var gibi görünmesine rağmen web siteleri açılmıyorsa ya da IP adresiyle erişim çalışırken alan adıyla erişim çalışmıyorsa, sorun çoğu zaman DNS çözümlemesiyle ilgilidir. DNS’in görevi example.com gibi alan adlarını gerçek IP adreslerine çevirmektir. Bu süreç bozulduğunda ağ hâlâ aktif görünebilir, ancak internetin normal kullanımı ciddi biçimde kısıtlanır.

Yaygın belirtiler

  • Tarayıcı sunucunun bulunamadığını gösterir
  • ping 8.8.8.8 çalışır, ancak ping google.com başarısız olur
  • apt, dnf, yum ve pacman gibi paket yöneticileri düzgün çalışmaz
  • Temporary failure in name resolution hatası görünür

Önce ne kontrol edilmeli

İlk olarak sorunun tüm ağı mı, yoksa sadece DNS’i mi etkilediğini belirlemek gerekir.

ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route

Eğer 8.8.8.8 yanıt veriyor ama google.com vermiyorsa, bu güçlü şekilde DNS sorununa işaret eder. Eğer IP adreslerine bile erişilemiyorsa, neden büyük olasılıkla Wi-Fi, ağ arayüzü, ağ geçidi veya yönlendirmedir.

Başlıca nedenler

1. /etc/resolv.conf yapılandırmasının hatalı olması

Birçok Linux sisteminde DNS sunucusu bilgileri /etc/resolv.conf dosyasında tutulur. Burada geçerli bir nameserver yoksa alan adları çözümlenemez.

cat /etc/resolv.conf

Örnek:

nameserver 8.8.8.8
nameserver 1.1.1.1

Dosya boşsa ya da yanlış bir yerel DNS’e işaret ediyorsa sorun ortaya çıkar. Ancak modern Linux sistemlerinde bu dosya genellikle NetworkManager veya systemd-resolved tarafından otomatik oluşturulur; bu yüzden elle yapılan değişiklikler üzerine yazılabilir.

2. systemd-resolved ile ilgili sorun

Ubuntu gibi sistemlerde systemd-resolved çoğu zaman DNS’i yönetir ve 127.0.0.53 adresini yerel çözücü olarak kullanır. Bu hizmet durursa DNS çalışmayı bırakabilir.

systemctl status systemd-resolved
resolvectl status

Sorun varsa hizmeti yeniden başlatabilirsiniz:

sudo systemctl restart systemd-resolved

3. NetworkManager DNS’i doğru uygulamıyor

Masaüstü Linux sistemlerinde NetworkManager çoğu zaman DNS bilgilerini DHCP üzerinden alır. Ağ profili bozulmuşsa ya da yeniden bağlanma başarısız olduysa doğru DNS sunucuları uygulanmayabilir.

nmcli dev show | grep DNS
nmcli connection show

Gerekirse yeniden başlatın:

sudo systemctl restart NetworkManager

4. VPN, proxy veya güvenlik duvarının etkisi

Bir VPN DNS isteklerini yanlış bir rotadan gönderebilir ve güvenlik duvarı 53 numaralı portu engelleyebilir. Böyle durumlarda ağ çalışıyor gibi görünür, ancak alan adları çözümlenmez.

5. Bozuk veya eski DNS önbelleği

Yerel önbellek bozulmuş ya da eskiyse bazı alan adları çalışmayı bırakabilir. systemd-resolved veya nscd kullanan sistemlerde önbelleği temizlemek yardımcı olabilir.

sudo resolvectl flush-caches

Sorunu gidermek için pratik adımlar

Adım 1: Doğrudan genel bir DNS’i test edin

nslookup google.com 8.8.8.8
dig google.com @8.8.8.8

Bu çalışıyorsa, dış DNS büyük olasılıkla düzgündür ve sorun yerel yapılandırmadadır.

Adım 2: Geçici olarak genel DNS ayarlayın

sudo sh -c 'printf "nameserver 8.8.8.8\nnameserver 1.1.1.1\n" > /etc/resolv.conf'

Bu yalnızca geçici bir çözümdür. Yeniden başlatma veya yeniden bağlanma sonrasında dosya tekrar değişebilir. Kalıcı çözüm için NetworkManager, netplan veya systemd-resolved yapılandırmasının düzeltilmesi gerekir.

Adım 3: Ubuntu’da netplan’ı kontrol edin

sudo nano /etc/netplan/*.yaml

Örnek:

nameservers:
  addresses: [8.8.8.8,1.1.1.1]

Daha sonra değişikliği uygulayın:

sudo netplan apply

Adım 4: DHCP bilgilerini yeniden alın

sudo dhclient -r
sudo dhclient

Eğer DHCP sunucusu yanlış DNS bilgisi verdiyse, bu yardımcı olabilir.

Kontrol için yararlı komutlar

ping -c 4 8.8.8.8
ping -c 4 google.com
cat /etc/resolv.conf
systemctl status systemd-resolved
resolvectl status
nmcli dev show | grep DNS
nslookup google.com
dig google.com
journalctl -u systemd-resolved --no-pager | tail -n 50

Sorunun tekrar etmesini önlemek için

  • Yalnızca /etc/resolv.conf dosyasını elle düzenlemekle yetinmeyin
  • DNS’in DHCP, NetworkManager veya systemd-resolved tarafından yönetilip yönetilmediğini anlayın
  • VPN kurulumundan sonra DNS ayarlarını kontrol edin
  • Sunucularda sabit DNS sunucularını açıkça tanımlamak daha iyidir

Sonuç

Linux DNS adlarını çözemediğinde, en önemli ilk adım IP adresi üzerinden iletişimin hâlâ çalışıp çalışmadığını kontrol etmektir. Bu, sorunun yalnızca DNS’te mi yoksa tüm ağda mı olduğunu hızlıca anlamaya yardımcı olur. Ardından /etc/resolv.conf, systemd-resolved, NetworkManager, DHCP ve VPN ayarları sistematik olarak kontrol edilmelidir. Amaç yalnızca geçici bir düzeltme değil, sistemde DNS’i gerçekte hangi bileşenin yönettiğini anlamaktır.

Leave a Reply

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir