إذا كان نظام Linux يبدو متصلاً بالإنترنت، لكن مواقع الويب لا تفتح، أو كان الوصول عبر عنوان IP يعمل بينما يفشل الوصول عبر اسم النطاق، فغالباً تكون المشكلة في حل أسماء DNS. وظيفة DNS هي تحويل أسماء النطاقات مثل example.com إلى عناوين IP فعلية. وعندما تتعطل هذه العملية، قد يبقى الاتصال الشبكي موجوداً ظاهرياً، لكن استخدام الإنترنت بشكل طبيعي يصبح صعباً جداً.
الأعراض الشائعة
- يعرض المتصفح رسالة تفيد بأنه لا يمكن العثور على الخادم
- ينجح الأمر
ping 8.8.8.8بينما يفشلping google.com - تفشل أدوات إدارة الحزم مثل
aptوdnfوyumوpacman - ظهور الرسالة
Temporary failure in name resolution
ما الذي يجب فحصه أولاً
يجب أولاً تحديد ما إذا كانت المشكلة في الشبكة كلها أم في DNS فقط.
ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route
إذا كان الوصول إلى 8.8.8.8 يعمل ولكن الوصول إلى google.com لا يعمل، فهذا يشير غالباً إلى مشكلة DNS. أما إذا كان الوصول إلى عنوان IP نفسه لا يعمل، فقد تكون المشكلة في واجهة الشبكة أو Wi-Fi أو البوابة أو التوجيه.
الأسباب الرئيسية
1. وجود خطأ في /etc/resolv.conf
في كثير من توزيعات Linux، يتم حفظ معلومات خوادم DNS في الملف /etc/resolv.conf. وإذا لم يكن هناك nameserver صحيح في هذا الملف، فلن تعمل عملية حل الأسماء.
cat /etc/resolv.conf
مثال:
nameserver 8.8.8.8
nameserver 1.1.1.1
إذا كان الملف فارغاً أو يشير إلى خادم DNS محلي غير صحيح، فستفشل عملية الحل. ويجب الانتباه إلى أن الأنظمة الحديثة غالباً ما تجعل هذا الملف يُدار تلقائياً بواسطة NetworkManager أو systemd-resolved، لذلك قد يتم استبدال أي تعديل يدوي.
2. وجود مشكلة في systemd-resolved
في أنظمة مثل Ubuntu، يدير systemd-resolved عملية DNS وغالباً يستخدم 127.0.0.53 كمحلّل محلي. إذا توقفت هذه الخدمة، فسيفشل حل أسماء النطاقات.
systemctl status systemd-resolved
resolvectl status
عند وجود مشكلة، يمكن إعادة تشغيل الخدمة:
sudo systemctl restart systemd-resolved
3. عدم تطبيق DNS بشكل صحيح من قبل NetworkManager
في بيئات Linux المكتبية، يحصل NetworkManager غالباً على معلومات DNS من خلال DHCP. وإذا كان ملف الشبكة تالفاً أو حدث خلل في إعادة الاتصال، فقد لا تُطبّق إعدادات DNS الصحيحة.
nmcli dev show | grep DNS
nmcli connection show
وعند الحاجة يمكن إعادة تشغيله:
sudo systemctl restart NetworkManager
4. تأثير VPN أو الوكيل أو الجدار الناري
قد يقوم VPN بإرسال طلبات DNS عبر مسار غير صحيح، كما قد يمنع الجدار الناري المنفذ 53. في هذه الحالات تبدو الشبكة وكأنها تعمل، لكن حل أسماء النطاقات يفشل.
5. تلف أو قِدم ذاكرة DNS المؤقتة
إذا كانت الذاكرة المؤقتة المحلية قديمة أو تالفة، فقد تفشل بعض النطاقات فقط في العمل. في الأنظمة التي تستخدم systemd-resolved أو nscd، قد يساعد مسح الذاكرة المؤقتة.
sudo resolvectl flush-caches
خطوات عملية للإصلاح
الخطوة 1: الاستعلام مباشرة من DNS عام
nslookup google.com 8.8.8.8
dig google.com @8.8.8.8
إذا نجح ذلك، فغالباً يكون DNS الخارجي سليماً، وتكون المشكلة في الإعدادات المحلية.
الخطوة 2: تعيين DNS عام بشكل مؤقت
sudo sh -c 'printf "nameserver 8.8.8.8\nnameserver 1.1.1.1\n" > /etc/resolv.conf'
هذا حل مؤقت فقط. بعد إعادة التشغيل أو إعادة الاتصال قد يعود الملف إلى حالته السابقة. أما الحل الدائم فيتطلب تصحيح إعدادات NetworkManager أو netplan أو systemd-resolved.
الخطوة 3: فحص netplan في Ubuntu
sudo nano /etc/netplan/*.yaml
مثال:
nameservers:
addresses: [8.8.8.8,1.1.1.1]
ثم تطبيق التغييرات:
sudo netplan apply
الخطوة 4: إعادة الحصول على إعدادات DHCP
sudo dhclient -r
sudo dhclient
إذا كان خادم DHCP قد أرسل معلومات DNS خاطئة، فقد تساعد هذه الخطوة في إصلاح المشكلة.
أوامر مفيدة للفحص
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
كيف تمنع تكرار المشكلة
- لا تعتمد فقط على تعديل
/etc/resolv.confيدوياً - افهم ما إذا كان DNS يُدار بواسطة DHCP أو NetworkManager أو systemd-resolved
- بعد استخدام VPN، تحقق مما إذا كانت إعدادات DNS قد تغيرت
- في بيئات الخوادم، من الأفضل تحديد خوادم DNS ثابتة بشكل واضح
الخلاصة
عندما يفشل Linux في حل أسماء DNS، فإن أهم خطوة أولى هي التحقق مما إذا كان الاتصال عبر عنوان IP ما زال يعمل. بهذه الطريقة يمكن معرفة ما إذا كانت المشكلة محصورة في DNS فقط أو تشمل الشبكة كاملة. بعد ذلك ينبغي فحص /etc/resolv.conf وsystemd-resolved وNetworkManager وDHCP وإعدادات VPN بالترتيب. لا يكفي الاكتفاء بحل مؤقت، بل من المهم فهم المكوّن الذي يدير DNS فعلياً داخل النظام.