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.8berjaya tetapiping google.comgagalapt,dnf,yumataupacmangagal memuat turun pakej- Mesej
Temporary failure in name resolutiondipaparkan
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.confsecara 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.