Sunucumdan dışarıya doğru DNS sorguları neden zaman aşımına uğruyor?

0

Yeni kurduğum Ubuntu 24.04 sunucumda, ya da mevcut bir VPS'imi son sistem güncellemelerinden sonra, sunucu içerisinden dışarıya doğru yapılan tüm DNS sorguları sürekli zaman aşımına uğramaya başladı. Bu durum, 'apt update' veya 'apt upgrade' gibi komutların çalışmamasına, ayrıca 'cURL' ile dışarıdaki API servislerine yapılan isteklerin de DNS çözümleme hatası vermesine neden oluyor. İlginç bir şekilde, sunucuya dışarıdan erişim (SSH, HTTP/HTTPS) ve üzerinde barındırdığım web siteleri sorunsuz çalışıyor. İlk olarak '/etc/resolv.conf' dosyasını kontrol ettim; hem Google DNS (8.8.8.8) hem de Cloudflare DNS (1.1.1.1) adreslerini ekleyip denedim. Ayrıca, '/etc/netplan' yapılandırma dosyalarımı da gözden geçirdim ancak herhangi bir düzelme olmadı. Sunucunun güvenlik duvarı (ufw) ayarlarında dışarıya çıkan trafiği kısıtlayacak bir kural görünmüyor ve IP adreslerine doğrudan 'ping' atabildiğimi fark ettim. Bu durum, sunucunun internet bağlantısında genel bir problem olmadığını, ancak sadece DNS çözümlemesi mekanizmasında spesifik bir aksaklık yaşandığını gösteriyor. Böyle bir senaryoda, bu tür bir DNS çözümleme hatasının altında yatan temel sebep ne olabilir ve sorunu gidermek için daha derinlemesine hangi adımları araştırmalıyım?

Cevaplar (1)

1

Yaşadığınız, sunucu içerisinden dışarıya doğru yapılan DNS sorgularının zaman aşımına uğraması durumu, özellikle Apt update ve CURL gibi temel işlemlerin aksamasına yol açan kritik bir Ağ yapılandırma problemidir. Sunucunun dışarıdan erişilebilir olması ve IP adreslerine doğrudan ping atılabilmesi, genel internet bağlantısının sağlam olduğunu ancak DNS çözümleme mekanizmasının spesifik bir hata verdiğini açıkça göstermektedir.

Bu tür bir sorunun çözümü, modern Linux dağıtımlarında DNS yönetimini üstlenen servislerin doğru işleyişini sağlamaktan geçer. Sorun, detaylı bir inceleme ile teknik olarak çözülebilir ve sunucunuzun dış ağ kaynaklarına sorunsuz erişimi yeniden sağlanabilir.

Bu durumun temel nedeni genellikle Systemd-resolved servisinin yanlış yapılandırılması veya beklenen şekilde çalışmamasıdır. Ubuntu 24.04 gibi güncel sistemlerde, DNS sorguları doğrudan `/etc/resolv.conf` dosyasından okunmak yerine, Systemd-resolved tarafından yönetilen bir yerel DNS önbellekleme ve çözümleme servisi üzerinden yönlendirilir. `/etc/resolv.conf` dosyası genellikle bu servisin yönettiği bir sembolik bağlantıdır ve içeriği `nameserver 127.0.0.53` şeklinde olmalıdır. Eğer bu dosya manuel olarak düzenlenmiş veya sembolik bağlantı bozulmuşsa, Systemd-resolved bypass edilebilir ya da hatalı çalışabilir.

Adım Adım Çözüm:

  1. Systemd-resolved Servisinin Durumunu Kontrol Edin:

    İlk olarak, DNS çözümlemesinden sorumlu ana servisin durumunu kontrol edin. Servis durmuş veya hata veriyor olabilir.

    
    systemctl status systemd-resolved
    

    Eğer servis aktif değilse veya hata veriyorsa, yeniden başlatmayı deneyin:

    
    sudo systemctl restart systemd-resolved
    
  2. `/etc/resolv.conf` Dosyasının Doğruluğunu Kontrol Edin:

    Bu dosyanın Systemd-resolved tarafından yönetilen sembolik bir bağlantı olup olmadığını ve içeriğini doğrulayın.

    
    ls -l /etc/resolv.conf
    

    Çıktı genellikle şöyle olmalıdır:

    
    lrwxrwxrwx 1 root root 29 Mar 17 2026 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
    

    Eğer bu bir sembolik bağlantı değilse veya farklı bir yere işaret ediyorsa, manuel olarak düzeltmeniz gerekebilir. Ayrıca, Stub-resolv.conf dosyasının içeriğini de kontrol edin:

    
    cat /run/systemd/resolve/stub-resolv.conf
    

    İçerikte `nameserver 127.0.0.53` bulunduğundan emin olun. Eğer `/etc/resolv.conf` manuel olarak düzenlenmişse, orijinal bağlantıyı geri yükleyin:

    
    sudo rm /etc/resolv.conf
    sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
    sudo systemctl restart systemd-resolved
    
  3. Yerel DNS Çözümlemesini Test Edin:

    Systemd-resolved'ın yerel arayüzü (127.0.0.53) üzerinden DNS sorgusu yapmayı deneyin.

    
    dig @127.0.0.53 google.com
    

    Eğer bu sorgu başarılı olursa, Systemd-resolved servisi çalışıyor ancak dış DNS sunucularıyla iletişiminde bir problem olabilir. Eğer başarısız olursa, yerel çözümleyici ile ilgili bir sorun var demektir.

  4. Netplan Yapılandırmasını Gözden Geçirin:

    /etc/netplan/*.yaml dosyalarınızı tekrar inceleyin. DNS sunucularının doğru bir şekilde belirtildiğinden emin olun. Örneğin:

    
    network:
      version: 2
      renderer: networkd
      ethernets:
        enp0s3: # Arayüz adınız farklı olabilir
          dhcp4: no
          addresses:
            - 192.168.1.100/24
          routes:
            - to: default
              via: 192.168.1.1
          nameservers:
            addresses: [8.8.8.8, 1.1.1.1]
    

    Yapılandırmayı değiştirdikten sonra uygulamayı unutmayın:

    
    sudo netplan try
    sudo netplan apply
    
  5. Diğer Potansiyel Engelleri Kontrol Edin:

    Nadiren de olsa, AppArmor veya SELinux gibi güvenlik mekanizmaları DNS sorgularını kısıtlayabilir. Bu sistemlerin durumunu kontrol edebilir ve geçici olarak devre dışı bırakarak test edebilirsiniz (ancak bu, kalıcı bir çözüm olmamalıdır).

Kalıcı Çözüm İçin:

Bu tür DNS sorunlarının tekrar etmesini önlemek ve daha güvenilir bir çözümleme sağlamak adına, sunucunuzda Yerel bir DNS önbellekleme servisi (örneğin Dnsmasq veya Unbound) kurmayı düşünebilirsiniz. Bu, sunucunuzun DNS sorgularını kendi üzerinde önbelleklemesini ve dış DNS sunucularına olan bağımlılığını azaltmasını sağlar. Böylece, hem performans artışı elde edilir hem de geçici dış DNS erişim sorunlarından daha az etkilenilir. Systemd-resolved'ın kendisi de bir önbellek mekanizması sunar; bu nedenle, öncelikle Systemd-resolved'ın doğru yapılandırıldığından ve sorunsuz çalıştığından emin olmak en kritik adımdır.

Kullanıcılar