Linux-də DNS həll olunmur: səbəblər və həll yolları

Əgər Linux sistemində internet bağlantısı mövcud görünürsə, amma saytlar açılmırsa, yaxud IP ünvanı ilə əlaqə qurmaq olur, amma domen adı ilə olmursa, çox vaxt problem DNS həllində olur. DNS-in vəzifəsi example.com kimi domen adlarını real IP ünvanlarına çevirməkdir. Bu proses pozulanda şəbəkə işləyirmiş kimi görünə bilər, amma adi internet istifadəsi ciddi şəkildə məhdudlaşır.

Tez-tez rast gəlinən əlamətlər

  • Brauzer serverin tapılmadığını göstərir
  • ping 8.8.8.8 işləyir, amma ping google.com uğursuz olur
  • apt, dnf, yum, pacman kimi paket menecerləri işləməyə bilər
  • Temporary failure in name resolution xətası görünür

Əvvəlcə nəyi yoxlamaq lazımdır

İlk addım problemin bütün şəbəkədə, yoxsa yalnız DNS-də olduğunu müəyyənləşdirməkdir.

ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route

Əgər 8.8.8.8 işləyir, amma google.com işləmir, bu, güclü ehtimalla DNS problemidir. Əgər IP ünvanına da çıxış yoxdur, onda problem Wi-Fi, şəbəkə interfeysi, gateway və ya routing ilə bağlı ola bilər.

Əsas səbəblər

1. /etc/resolv.conf faylında səhv

Bir çox Linux sistemində DNS server məlumatı /etc/resolv.conf faylında saxlanılır. Əgər orada düzgün nameserver yoxdursa, domen adları həll olunmayacaq.

cat /etc/resolv.conf

Nümunə:

nameserver 8.8.8.8
nameserver 1.1.1.1

Fayl boşdursa və ya yanlış lokal DNS-ə yönəlirsə, problem yaranır. Amma müasir Linux sistemlərində bu fayl çox vaxt NetworkManager və ya systemd-resolved tərəfindən avtomatik yaradılır, buna görə əl ilə edilən dəyişikliklər sonradan üzərinə yazıla bilər.

2. systemd-resolved xidməti ilə bağlı problem

Ubuntu kimi sistemlərdə systemd-resolved DNS həllini idarə edir və çox vaxt 127.0.0.53 lokal resolver kimi istifadə olunur. Bu xidmət dayandıqda DNS işləməyə bilər.

systemctl status systemd-resolved
resolvectl status

Problem olduqda xidməti yenidən başladın:

sudo systemctl restart systemd-resolved

3. NetworkManager DNS-i düzgün tətbiq etmir

Masaüstü Linux sistemlərində NetworkManager çox vaxt DNS məlumatını DHCP vasitəsilə alır. Əgər şəbəkə profili zədələnibsə və ya yenidən qoşulma zamanı problem olubsa, düzgün DNS tətbiq olunmaya bilər.

nmcli dev show | grep DNS
nmcli connection show

Lazım gəlsə, yenidən başladın:

sudo systemctl restart NetworkManager

4. VPN, proxy və ya firewall təsiri

VPN DNS sorğularını yanlış marşrutla göndərə bilər, firewall isə 53-cü portu bloklaya bilər. Bu zaman şəbəkə işləyir kimi görünür, amma domen adları həll olunmur.

5. DNS keşində problem

Lokal keş köhnəlmiş və ya zədələnmişdirsə, bəzi domenlər açılmaya bilər. systemd-resolved və ya nscd istifadə olunan sistemlərdə keşi təmizləmək kömək edə bilər.

sudo resolvectl flush-caches

Praktiki həll addımları

Addım 1: Public DNS-ə birbaşa sorğu göndərin

nslookup google.com 8.8.8.8
dig google.com @8.8.8.8

Bu işləyirsə, deməli xarici DNS normaldır və problem daha çox lokal sazlamadadır.

Addım 2: Müvəqqəti public DNS təyin edin

sudo sh -c 'printf "nameserver 8.8.8.8\nnameserver 1.1.1.1\n" > /etc/resolv.conf'

Bu yalnız müvəqqəti həll yoludur. Yenidən başlatma və ya şəbəkəyə yenidən qoşulmadan sonra fayl əvvəlki vəziyyətinə qayıda bilər. Daimi həll üçün NetworkManager, netplan və ya systemd-resolved sazlamasını düzəltmək lazımdır.

Addım 3: Ubuntu-da netplan faylını yoxlayın

sudo nano /etc/netplan/*.yaml

Nümunə:

nameservers:
  addresses: [8.8.8.8,1.1.1.1]

Sonra tətbiq edin:

sudo netplan apply

Addım 4: DHCP məlumatını yenidən alın

sudo dhclient -r
sudo dhclient

Əgər DHCP server yanlış DNS məlumatı veribsə, bu addım problemi həll edə bilər.

Yoxlama üçün faydalı əmrlər

ping -c 4 8.8.8.8
ping -c 4 google.com
cat /etc/resolv.conf
systemctl status systemd-resolved
resolvectl status
nmcli dev show | grep DNS
nslookup google.com
dig google.com
journalctl -u systemd-resolved --no-pager | tail -n 50

Təkrar baş verməməsi üçün

  • Yalnız /etc/resolv.conf faylını əl ilə düzəltməklə kifayətlənməyin
  • DNS-in DHCP, NetworkManager və ya systemd-resolved tərəfindən idarə olunduğunu anlayın
  • VPN quraşdırıldıqdan sonra DNS sazlamasını yoxlayın
  • Server mühitində sabit DNS ünvanlarını açıq şəkildə təyin edin

Nəticə

Linux-də DNS həll olunmursa, ən vacib ilk addım IP ünvanı ilə əlaqənin işləyib-işləmədiyini yoxlamaqdır. Bu, problemin yalnız DNS-də, yoxsa ümumi şəbəkədə olduğunu anlamağa kömək edir. Daha sonra /etc/resolv.conf, systemd-resolved, NetworkManager, DHCP və VPN sazlamaları ardıcıl şəkildə yoxlanmalıdır. Ən yaxşı yanaşma yalnız müvəqqəti düzəliş deyil, sistemdə DNS-i hansı komponentin həqiqətən idarə etdiyini anlamaqdır.

Leave a Reply

Sizin e-poçt ünvanınız dərc edilməyəcəkdir. Gərəkli sahələr * ilə işarələnmişdir