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:

  1. /etc/resolv.conf dosyasını kontrol edin.
  2. systemd-resolved servis durumuna bakın.
  3. Disk alanını df -h ile analiz edin.
  4. Logları temizleyin (journalctl --vacuum-time=1d).
  5. Servisi yeniden başlatın veya gerekirse yeniden etkinleştirin.
  6. (İ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.

İlginizi Çekebilir