Linux'ta "Temporary failure in name resolution" hatası

Linux Sunucu (SSH) 77 görüntülenme Markdown

Sunucuda apt update çalıştırıyorsunuz ya da bir siteye curl atıyorsunuz ve şu hatayı alıyorsunuz:

ping: google.com: Temporary failure in name resolution
curl: (6) Could not resolve host: ornek.com
Err:1 http://archive.ubuntu.com/ubuntu noble InRelease  Temporary failure resolving 'archive.ubuntu.com'

Bu, sunucunun internete çıkıp çıkamadığıyla değil, alan adlarını IP adresine çevirip çeviremediğiyle ilgilidir. Önce hangisinin bozuk olduğunu ayırın.

1. İnternet var mı, yoksa sadece DNS mi bozuk?

ping -c 2 1.1.1.1
ping -c 2 google.com
  • İlki yanıt veriyor, ikincisi hata veriyorsa sorun yalnızca DNS'te. Aşağıdaki adımlara geçin.
  • İlki de yanıt vermiyorsa internet bağlantısı yok. Ağ ayarı, ağ geçidi ya da güvenlik duvarı sorunudur: ip a ve ip route çıktısına bakın, VNC Konsol'dan ağ sınamalarını yapın.

2. Sunucunun kullandığı DNS'i görün

resolvectl status
cat /etc/resolv.conf

Ubuntu'da resolvectl status, ağ arayüzünün hangi DNS sunucularını kullandığını gösterir. DNS sunucusu satırı boşsa ya da erişilemeyen bir adres yazıyorsa sorun burasıdır. Debian'da doğrudan /etc/resolv.conf dosyasına bakın; nameserver satırı olmalıdır.

3. Geçici düzeltme (hemen çalışır)

Çalışan bir DNS adresiyle deneyin:

dig @1.1.1.1 +short ornek.com

Bu cevap veriyorsa adres sorunsuzdur. Not: Bazı ağlarda belirli herkese açık DNS adresleri (8.8.8.8 gibi) yanıt vermeyebilir; kendi sunucularımızdan birinde bunu gözlemledik. Biri çalışmıyorsa diğerini deneyin (1.1.1.1, 9.9.9.9).

4. Kalıcı düzeltme

Ubuntu (netplan): Ağ ayar dosyasını (/etc/netplan/ altındaki .yaml) açın ve arayüzün altına DNS sunucularını yazın:

network:
  version: 2
  ethernets:
    eth0:
      nameservers:
        addresses: [1.1.1.1, 9.9.9.9]

Arayüz adınızı (eth0, ens18 gibi) ip a ile öğrenin; dosyada zaten kurulu olan IP/ağ geçidi ayarlarını silmeyin, yalnızca nameservers bölümünü ekleyin. Uygulamadan önce güvenle deneyin:

sudo netplan try

Bağlantınız koparsa değişiklik kendiliğinden geri alınır. Başarılıysa Enter'a basarak onaylayın.

Debian: Ağı hangi aracın yönettiğine göre değişir. Basit durumda /etc/resolv.conf dosyasına nameserver 1.1.1.1 satırı eklenebilir; ancak bu dosya DHCP/cloud-init tarafından yeniden yazılıyorsa değişiklik kaybolur. Böyle bir durumda DNS'i ağ yapılandırmasında tanımlayın.

5. systemd-resolved takılmış olabilir

sudo systemctl restart systemd-resolved
sudo resolvectl flush-caches

Ubuntu'da /etc/resolv.conf dosyası 127.0.0.53 adresini gösteriyorsa bu normaldir; çözümleme yerel servis üzerinden yapılır.

Sunucu adı hatası farklıdır

"sudo: unable to resolve host" iletisi bu hata değildir; o, sunucunun kendi adının /etc/hosts dosyasında olmaması demektir: sudo unable to resolve host. Alan adı tarafında yaşadığınız çözümleme sorunları için DNS sorgulama makalesi yardımcı olur.

Sık sorulanlar

Hata sadece belirli bir alan adı için çıkıyor.

Sorun sunucuda değil alan adının DNS'indedir ya da kaydı henüz yayılmamıştır. dig +short A alanadi.com @1.1.1.1 ile kontrol edin.

Her yeniden başlatmadan sonra DNS ayarım kayboluyor.

resolv.conf dosyasını elle düzenlemişsiniz ama dosya otomatik yeniden yazılıyor. Kalıcı çözüm netplan, NetworkManager ya da resolved yapılandırmasında DNS'i tanımlamaktır.

IPv6 yüzünden olabilir mi?

Evet, nadiren. IPv6 DNS sunucusu çalışmıyorsa çözümleme gecikir ya da hata verir. resolvectl status çıktısında sorunlu IPv6 DNS adresini kaldırın.

İlgili makaleler

Sorununuz çözülmediyse destek talebi açın. Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.