Linux Tidak Dapat Menyelesaikan DNS: Punca dan Cara Mengatasinya

Jika pada Linux sambungan Internet nampak masih ada tetapi laman web tidak boleh dibuka, atau akses melalui alamat IP berfungsi tetapi nama domain tidak, besar kemungkinan terdapat masalah pada penyelesaian DNS. DNS berfungsi menukarkan nama domain seperti example.com kepada alamat IP sebenar. Jika proses ini gagal, rangkaian mungkin kelihatan aktif, tetapi penggunaan Internet biasa akan terganggu.

Gejala Biasa

  • Pelayar memaparkan mesej bahawa pelayan tidak ditemui
  • ping 8.8.8.8 berjaya tetapi ping google.com gagal
  • apt, dnf, yum atau pacman gagal memuat turun pakej
  • Mesej Temporary failure in name resolution dipaparkan

Perkara Pertama yang Perlu Diperiksa

Mula-mula, tentukan sama ada masalah melibatkan keseluruhan rangkaian atau hanya DNS sahaja.

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

Jika 8.8.8.8 boleh dicapai tetapi google.com tidak, masalah biasanya berpunca daripada DNS. Jika alamat IP pun tidak boleh dicapai, puncanya mungkin pada Wi-Fi, antara muka rangkaian, gateway atau routing.

Punca Utama

1. Konfigurasi /etc/resolv.conf yang salah

Pada banyak sistem Linux, maklumat pelayan DNS disimpan dalam fail /etc/resolv.conf. Jika tiada nameserver yang betul di situ, penyelesaian nama domain tidak akan berfungsi.

cat /etc/resolv.conf

Contoh:

nameserver 8.8.8.8
nameserver 1.1.1.1

Jika fail itu kosong atau menunjuk kepada DNS tempatan yang salah, masalah akan berlaku. Perlu diingat bahawa pada sistem Linux moden, fail ini sering dijana secara automatik oleh NetworkManager atau systemd-resolved, jadi perubahan manual mungkin ditindih semula.

2. Masalah pada systemd-resolved

Pada sistem seperti Ubuntu, systemd-resolved sering menguruskan DNS dan menggunakan 127.0.0.53 sebagai resolver tempatan. Jika perkhidmatan ini berhenti, penyelesaian DNS akan gagal.

systemctl status systemd-resolved
resolvectl status

Jika ada masalah, mulakan semula perkhidmatan:

sudo systemctl restart systemd-resolved

3. NetworkManager tidak menerapkan DNS dengan betul

Pada Linux desktop, NetworkManager biasanya mendapatkan DNS melalui DHCP. Jika profil rangkaian rosak atau sambungan semula bermasalah, DNS yang betul mungkin tidak digunakan.

nmcli dev show | grep DNS
nmcli connection show

Jika perlu, mulakan semula:

sudo systemctl restart NetworkManager

4. Kesan VPN, proksi atau firewall

VPN boleh mengalihkan permintaan DNS ke laluan yang salah, manakala firewall boleh menyekat port 53. Dalam keadaan ini, rangkaian kelihatan berfungsi tetapi nama domain gagal diselesaikan.

5. Cache DNS rosak atau lapuk

Jika cache tempatan rosak atau terlalu lama, sesetengah domain mungkin tidak dapat diakses. Dalam sistem yang menggunakan systemd-resolved atau nscd, membersihkan cache boleh membantu.

sudo resolvectl flush-caches

Langkah Penyelesaian Praktikal

Langkah 1: Uji terus kepada DNS awam

nslookup google.com 8.8.8.8
dig google.com @8.8.8.8

Jika ini berjaya, DNS awam berfungsi dengan baik dan masalah mungkin terletak pada konfigurasi tempatan.

Langkah 2: Tetapkan DNS awam secara sementara

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

Ini hanyalah penyelesaian sementara. Selepas reboot atau sambungan semula, fail tersebut mungkin berubah kembali. Untuk penyelesaian kekal, konfigurasi NetworkManager, netplan atau systemd-resolved perlu diperbetulkan.

Langkah 3: Semak netplan pada Ubuntu

sudo nano /etc/netplan/*.yaml

Contoh:

nameservers:
  addresses: [8.8.8.8,1.1.1.1]

Kemudian gunakan perubahan:

sudo netplan apply

Langkah 4: Dapatkan semula konfigurasi DHCP

sudo dhclient -r
sudo dhclient

Jika pelayan DHCP memberi maklumat DNS yang salah, langkah ini boleh membantu membetulkannya.

Arahan Berguna untuk Pemeriksaan

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

Cara Mengelakkan Masalah Berulang

  • Jangan hanya mengedit /etc/resolv.conf secara manual dan berhenti di situ
  • Fahami sama ada DNS diurus oleh DHCP, NetworkManager atau systemd-resolved
  • Selepas memasang VPN, semak sama ada konfigurasi DNS telah berubah
  • Untuk pelayan, tetapkan DNS statik dengan jelas

Kesimpulan

Apabila Linux tidak dapat menyelesaikan DNS, perkara paling penting ialah memeriksa sama ada sambungan melalui alamat IP masih berfungsi. Ini membantu menentukan sama ada masalah hanya pada DNS atau melibatkan rangkaian secara keseluruhan. Selepas itu, semak /etc/resolv.conf, systemd-resolved, NetworkManager, DHCP dan tetapan VPN secara berurutan. Penyelesaian terbaik bukan sekadar pembaikan sementara, tetapi memahami komponen mana yang benar-benar mengurus DNS pada sistem anda.

Leave a Reply

Alamat e-mel anda tidak akan disiarkan. Medan diperlukan ditanda dengan *