Bir Linux sisteminde internet veya ağ erişimi çalışmıyor gibi görünüyor ama bağlantı kabloları ve IP yapılandırmaları doğruysa büyük ihtimalle sorun DNS katmanındadır.
DNS (Domain Name System), insan tarafından okunabilir alan adlarını (örneğin kadirkozan.com.tr) IP adreslerine dönüştüren temel bir sistemdir. Bu mekanizma çalışmazsa sistem ağ üzerinde isim çözümlemesi yapamaz ve dış dünyayla iletişim kuramaz.
Ubuntu kullanıcılarının sık karşılaştığı hatalardan biri şudur:
tracepath kadirkozan.com.tr
tracepath: kadirkozan.com.tr: Temporary failure in name resolution
Bu hata sistemin DNS çözümleme yapamadığını gösterir. Aslında ağınız çalışıyor olabilir ama sistem hangi DNS sunucusuna başvuracağını bilemiyordur.
İlk Teşhis: /etc/resolv.conf Dosyasını Kontrol Etmek
Ubuntu ve birçok Linux dağıtımında DNS sunucularının adresleri /etc/resolv.conf dosyasında tutulur. Bu dosya, sistemin “hangi DNS sunucusuna” sorgu göndereceğini belirler.
Öncelikle dosyayı kontrol edelim:
cat /etc/resolv.conf
Eğer çıktı boş ise, sistemin DNS çözümlemesi yapamamasının en muhtemel nedeni budur.
Normalde aşağıdaki gibi satırlar yer almalıdır:
nameserver 8.8.8.8
nameserver 1.1.1.1
Bu satırlar, DNS sorgularının Google DNS (8.8.8.8) ve Cloudflare DNS (1.1.1.1) sunucularına yönlendirileceğini belirtir.
Boş bir resolv.conf dosyası genellikle systemd-resolved servisinin çalışmamasından kaynaklanır.
Servis Kontrolü: systemd-resolved Durumu
Ubuntu 18.04 ve sonrasında DNS yönetimi systemd-resolved isimli bir servis tarafından yapılır. Servisin durumu şu komutla kontrol edilir.
systemctl status systemd-resolved
Çıktı genellikle şu şekildedir:
● systemd-resolved.service - Network Name Resolution
Loaded: loaded (/lib/systemd/system/systemd-resolved.service; enabled; vendor preset: enabled)
Active: failed (Result: resources)
Buradaki “Active: failed (Result: resources)” ibaresi servisin sistem kaynaklarıyla ilgili bir sorun nedeniyle başlatılamadığını gösterir. Bu genellikle şu nedenlerden biriyle olur:
- Disk alanı tamamen dolmuştur.
- /run veya /var bölümü yazılabilir durumda değildir.
- systemd geçici dosyalarını oluşturamamıştır.
Yani aslında sorun DNS yapılandırmasından değil disk kaynaklarının tükenmesinden kaynaklanır.
Adım Adım Çözüm Süreci
Aşağıda bu problemi kalıcı olarak çözmek için izlenmesi gereken adımlar detaylı şekilde açıklanmıştır:
1. Disk Alanını Kontrol Et
İlk olarak sistemde boş alan olup olmadığını kontrol edin:
df -h
Çıktıda özellikle şu dizinlerin durumuna bakın:
/(root dizini)/var/run
Eğer bu bölümlerden biri %100 dolu görünüyorsa systemd-resolved dahil birçok sistem servisi çalışamaz hale gelir.
2. Günlük (Log) Dosyalarını Temizleyin
Disk doluluğunun en sık sebebi, sistem loglarının kontrolsüz şekilde büyümesidir.
Aşağıdaki komutla 1 günden eski logları silebilirsiniz:
sudo journalctl --vacuum-time=1d
Bu işlem, eski logları silerek sistemde hızlı bir şekilde yer açar. Eğer daha fazla alan gerekiyorsa “1d” (1 gün) yerine “3h” (3 saat) veya “12h” (12 saat) gibi daha kısa süreler kullanabilirsiniz.
İpucu: Disk doluluğu kritik bir seviyedeyse /var/log altındaki büyük dosyaları tespit edip manuel olarak da temizleyebilirsiniz.
sudo du -sh /var/log/*
3. Servisi Yeniden Başlatın
Diskte yeterli alan açıldığında systemd-resolved servisini yeniden başlatabilirsiniz:
sudo systemctl restart systemd-resolved
Ardından durumunu tekrar kontrol edin:
systemctl status systemd-resolved
Servis durumu “active (running)” olarak görünüyorsa, artık sistem DNS sorgularını çözümleyebilir durumda demektir.
Deneme yapmak için basit bir ping veya tracepath komutu kullanabilirsiniz:
ping google.com
Alternatif (Geçici) Çözüm: resolv.conf Dosyasını Manuel Olarak Güncellemek
Eğer hızlıca çözüm bulmak istiyorsanız, systemd-resolved ile uğraşmadan resolv.conf dosyasına elle DNS adresi ekleyebilirsiniz:
sudo bash -c 'echo -e "nameserver 8.8.8.8\nnameserver 1.1.1.1" > /etc/resolv.conf'
Bu sayede sistem, doğrudan belirtilen DNS sunucularını kullanarak isim çözümleme yapabilir.
Ancak dikkat: Bu yöntem kalıcı değildir. Sistemi yeniden başlattığınızda veya network yapılandırması yenilendiğinde dosya tekrar boşalabilir.
Kalıcı çözüm için Netplan veya systemd-resolved yapılandırmalarında DNS adreslerini tanımlamanız gerekir.
Kalıcı DNS Yapılandırması (Opsiyonel)
Kalıcı bir çözüm için /etc/netplan/ altındaki YAML dosyalarına DNS sunucularınızı ekleyebilirsiniz.
Örnek bir yapılandırma:
network:
version: 2
ethernets:
ens33:
dhcp4: yes
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
Değişiklikten sonra yapılandırmayı uygulamak için:
sudo netplan apply
Böylece DNS ayarları her yeniden başlatmada korunur.
“Temporary failure in name resolution” hatası, yüzeyde basit görünse de, genellikle sistemin temel servislerinden birinin (örneğin systemd-resolved) başarısız olmasından kaynaklanır.
Bu hatayı çözmek için şu sıralamayı izlemek en güvenli yöntemdir:
/etc/resolv.confdosyasını kontrol edin.systemd-resolvedservis durumuna bakın.- Disk alanını
df -hile analiz edin. - Logları temizleyin (
journalctl --vacuum-time=1d). - Servisi yeniden başlatın veya gerekirse yeniden etkinleştirin.
- (İsteğe bağlı) Netplan ile kalıcı DNS yapılandırması oluşturun.
Bu adımlar sonunda sisteminiz tekrar DNS sorgularını çözümleyebilir hale gelecektir.