تشخيص وحل مشاكل DNS
دليل شامل لتشخيص وحل مشاكل DNS باستخدام أوامر dig و nslookup، فحص انتشار DNS، مسح ذاكرة التخزين المؤقت وحلول أخطاء DNS الشائعة.
جدول المحتويات
مقدمة
DNS (نظام أسماء النطاقات) هو أحد المكونات الأساسية للبنية التحتية للإنترنت. يقوم هذا النظام بتحويل أسماء النطاقات إلى عناوين IP، وعندما لا يعمل بشكل صحيح، يمكن أن تتعطل العديد من الخدمات مثل الوصول إلى المواقع وتسليم البريد الإلكتروني واتصالات الخادم.
في هذا الدليل، سنستعرض بالتفصيل الأدوات والطرق التي يمكنك استخدامها لتشخيص وحل مشاكل DNS.
أساسيات DNS
أنواع سجلات DNS
| نوع السجل | الوصف | مثال |
|---|---|---|
| A | تعيين عنوان IPv4 | example.com → 1.2.3.4 |
| AAAA | تعيين عنوان IPv6 | example.com → 2001:db8::1 |
| CNAME | اسم مستعار لنطاق آخر | www → example.com |
| MX | توجيه خادم البريد | mail.example.com (أولوية: 10) |
| TXT | سجل نصي (SPF, DKIM إلخ) | v=spf1 ip4:1.2.3.4 -all |
| NS | تعريف خادم الأسماء | ns1.example.com |
| PTR | سجل DNS العكسي | 4.3.2.1 → example.com |
| SOA | سجل سلطة المنطقة | TTL, serial, refresh |
عملية حل DNS
المستخدم → ذاكرة DNS المحلية → المحلل التكراري → NS الجذر → NS نطاق المستوى الأعلى → NS المعتمد → عنوان IP
تشخيص DNS باستخدام أمر dig
dig (Domain Information Groper) هو أقوى أداة لتشخيص مشاكل DNS.
الاستخدام الأساسي
# استعلام سجل A
dig example.com A
# استعلام من خادم DNS محدد
dig @8.8.8.8 example.com A
# إخراج مختصر
dig example.com +short
# استعلام جميع أنواع السجلات
dig example.com ANY
# استعلام سجل MX
dig example.com MX
# استعلام سجل NS
dig example.com NS
# استعلام سجل TXT
dig example.com TXT
استعلامات تفصيلية
# وضع التتبع — يعرض عملية الحل خطوة بخطوة
dig example.com +trace
# سجل SOA — معلومات المنطقة
dig example.com SOA
# استعلام DNS العكسي
dig -x 1.2.3.4
# استعلام عبر TCP (للردود الكبيرة)
dig example.com +tcp
# التحقق من DNSSEC
dig example.com +dnssec
قراءة مخرجات dig
$ dig example.com A
;; QUESTION SECTION:
;example.com. IN A
;; ANSWER SECTION:
example.com. 300 IN A 93.184.216.34
;; AUTHORITY SECTION:
example.com. 86400 IN NS ns1.example.com.
;; Query time: 23 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; MSG SIZE rcvd: 56
الحقول الرئيسية:
- ANSWER SECTION: إجابة الاستعلام
- TTL (300): مدة بقاء السجل في الذاكرة المؤقتة (بالثواني)
- Query time: وقت الاستجابة
- SERVER: خادم DNS الذي قدم الإجابة
أمر nslookup
nslookup أداة أبسط لاستعلامات DNS:
# استعلام أساسي
nslookup example.com
# استعلام من خادم DNS محدد
nslookup example.com 8.8.8.8
# استعلام سجل MX
nslookup -type=MX example.com
# استعلام سجل NS
nslookup -type=NS example.com
# DNS العكسي
nslookup 1.2.3.4
فحص انتشار DNS
عند إجراء تغييرات DNS، يستغرق الأمر وقتًا لانتشار السجلات الجديدة إلى جميع خوادم DNS.
أوقات الانتشار
| نوع السجل | TTL النموذجي | وقت الانتشار |
|---|---|---|
| A / AAAA | 300-3600 ثانية | 5 دقائق - ساعة |
| MX | 3600-86400 ثانية | 1 - 24 ساعة |
| NS | 86400 ثانية | 24 - 48 ساعة |
| TXT | 300-3600 ثانية | 5 دقائق - ساعة |
الفحص من خوادم DNS مختلفة
# Google DNS
dig @8.8.8.8 example.com A +short
# Cloudflare DNS
dig @1.1.1.1 example.com A +short
# Quad9 DNS
dig @9.9.9.9 example.com A +short
أدوات فحص الانتشار عبر الإنترنت:
لتسريع انتشار DNS، قم بتخفيض قيمة TTL قبل إجراء التغييرات (مثلاً 300 ثانية). يمكنك زيادة TTL مرة أخرى بعد اكتمال التغيير.
مسح ذاكرة DNS المؤقتة
مسح ذاكرة نظام التشغيل
# Linux (systemd-resolved)
sudo systemd-resolve --flush-caches
sudo resolvectl flush-caches
# macOS
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder
# Windows
ipconfig /flushdns
مسح ذاكرة خادم DNS
# مسح ذاكرة BIND named
sudo rndc flush
# لمنطقة محددة
sudo rndc flushname example.com
# مسح ذاكرة Unbound
sudo unbound-control flush_zone example.com
ذاكرة DNS في المتصفح
لمسح ذاكرة DNS في Chrome:
chrome://net-internals/#dns → Clear host cache
مشاكل DNS الشائعة والحلول
1. NXDOMAIN (النطاق غير موجود)
$ dig nonexistent.example.com
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN
الأسباب:
- اسم النطاق مكتوب بشكل خاطئ
- سجل DNS لم يُنشأ بعد
- انتهت صلاحية النطاق
الحل:
# تحقق من معلومات WHOIS للنطاق
whois example.com
# تحقق من خوادم الأسماء
dig example.com NS +short
# استعلم من NS المعتمد
dig @ns1.example.com example.com A
2. SERVFAIL
الأسباب:
- خادم الأسماء غير قابل للوصول
- خطأ في التحقق من DNSSEC
- ملف المنطقة تالف
الحل:
# تحقق من إمكانية الوصول لخادم الأسماء
dig @ns1.example.com example.com A
# تحقق من حالة DNSSEC
dig example.com +dnssec
# جرب محلل مختلف
dig @1.1.1.1 example.com A
3. إرجاع عنوان IP خاطئ
الحل:
# امسح الذاكرة المؤقتة
sudo systemd-resolve --flush-caches
# استعلم مباشرة من NS المعتمد
dig @ns1.example.com example.com A +short
# تحقق من مسار الحل باستخدام trace
dig example.com +trace
4. حل DNS بطيء
الحل:
# قياس وقت استجابة DNS
dig example.com | grep "Query time"
# مقارنة خوادم DNS مختلفة
for dns in 8.8.8.8 1.1.1.1 9.9.9.9; do
echo "$dns: $(dig @$dns example.com +short +stats | grep 'Query time')"
done
لإعدادات DNS الدائمة، استخدم تكوين systemd-resolved أو NetworkManager بدلاً من تحرير /etc/resolv.conf مباشرة.
سكريبت تشخيص DNS
#!/bin/bash
DOMAIN="example.com"
echo "=== تشخيص DNS: $DOMAIN ==="
echo -e "\n[1] خوادم الأسماء:"
dig $DOMAIN NS +short
echo -e "\n[2] سجل A:"
dig $DOMAIN A +short
echo -e "\n[3] سجل MX:"
dig $DOMAIN MX +short
echo -e "\n[4] سجلات TXT:"
dig $DOMAIN TXT +short
echo -e "\n[5] فحص الانتشار:"
for dns in 8.8.8.8 1.1.1.1 9.9.9.9; do
result=$(dig @$dns $DOMAIN A +short)
echo " $dns → $result"
done
echo -e "\n=== اكتمل الفحص ==="
الخلاصة
مشاكل DNS من أكثر المشاكل شيوعًا في إدارة الخوادم. باستخدام أدوات dig و nslookup بفعالية، يمكنك تشخيص المشاكل بسرعة وتتبع عمليات الانتشار وحل مشاكل الذاكرة المؤقتة. تذكر تخفيض قيم TTL قبل تغييرات DNS والتحقق من خوادم DNS مختلفة بعد التغييرات.
مقالات ذات صلة
مشكلة اتصال SSH: لا يمكن الاتصال بالخادم — الحل
دليل حل مشاكل اتصال SSH: قواعد جدار حماية Path.net، Default Block، إنشاء قاعدة تصفية لمنفذ SSH وخطوات استكشاف الأخطاء وإصلاحها.
مشكلة اتصال RDP: لا يمكن الاتصال بـ Windows Server
دليل حل مشاكل اتصال RDP: قواعد جدار حماية Path.net، Default Block، إنشاء قاعدة تصفية لمنفذ RDP وخطوات استكشاف الأخطاء وإصلاحها.
كيفية إجراء اختبار MTR وإرسال النتائج للدعم
دليل اختبار الشبكة باستخدام WinMTR وLinux MTR، إنشاء قاعدة فلترة ICMP وإرسال النتائج لفريق الدعم. تشخيص فقدان الحزم والتأخير في الشبكة.