Linux'ta "Temporary failure in name resolution" hatası
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 aveip 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
- İnternet bağlantısı sorunu bende mi sunucuda mı? (ping ve tracert)
- DNS kaydı nasıl sorgulanır? dig, nslookup ve önbellek temizleme
- Yeni Linux sunucuda ilk yapılması gerekenler
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.
Geri bildiriminiz için teşekkürler!