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, ancakping google.combaşarısız olurapt,dnf,yumvepacmangibi paket yöneticileri düzgün çalışmazTemporary failure in name resolutionhatası 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.confdosyası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.