ما هو محلل DNS؟
محلل DNS، ويُسمى أيضاً المحلل التكراري أو خادم DNS التكراري، هو خادم يستقبل استعلامات DNS من أجهزة العملاء ويبحث عن عنوان IP المرتبط باسم نطاق. يعمل المحلل وسيطاً بين العملاء وتسلسل DNS، ويتولى التكرار عبر خوادم الجذر وTLD وخوادم الأسماء الموثوقة.
كيف تعمل محللات DNS؟
عملية الحل
عندما تكتب «example.com» في متصفحك:
1. Client → Resolver: "What's the IP for example.com?"
2. Resolver checks cache
→ Cache hit: Return cached result
→ Cache miss: Begin recursion
3. Resolver → Root Server: "Where's .com?"
Root → Resolver: "Ask these .com nameservers"
4. Resolver → .com TLD: "Where's example.com?"
.com → Resolver: "Ask these nameservers"
5. Resolver → Authoritative NS: "What's example.com's IP?"
Auth NS → Resolver: "203.0.113.50"
6. Resolver → Client: "203.0.113.50"
(Also caches result based on TTL)
الاستعلامات التكرارية مقابل التتابعية
الاستعلام التكراري (العميل ← المحلل):Client: "Give me the final answer for example.com"
Resolver: "Here's the IP: 203.0.113.50"
(Resolver does all the work)
الاستعلام التتابعي (المحلل ← خوادم الأسماء):
Resolver: "What's example.com?"
Root: "I don't know, ask .com servers"
Resolver: "What's example.com?"
.com: "I don't know, ask ns1.example.com"
Resolver: "What's example.com?"
ns1: "203.0.113.50"
أنواع المحللات
المحلل الوسيط Stub
يكون مدمجاً في أنظمة التشغيل والتطبيقات:
- يمرر الاستعلامات إلى خوادم DNS المضبوطة
- يملك منطقاً محدوداً
- لا ينفذ التكرار بنفسه
المحلل التكراري
خادم كامل الوظائف ينفذ حل DNS بالكامل:
- يخزن النتائج مؤقتاً
- يتبع الإحالات
- يطبق ميزات الأمان
المحلل المُمرِّر
يمرر الاستعلامات إلى محلل آخر بدلاً من تنفيذ التكرار:
- شائع في الشبكات المؤسسية
- يتيح تطبيق سياسة مركزية
- يقلل الاستعلامات الخارجية
Client → Corporate Resolver (forwarding) → ISP Resolver (recursive) → Internet
المحللات العامة الشائعة
| المزود | IPv4 | IPv6 | الميزات |
|---|---|---|---|
| Cloudflare | 1.1.1.1، 1.0.0.1 | 2606:4700:4700::1111 | سريع، يركز على الخصوصية، بلا تسجيل |
| 8.8.8.8، 8.8.4.4 | 2001:4860:4860::8888 | موثوق، Anycast عالمي | |
| Quad9 | 9.9.9.9 | 2620:fe::fe | تصفية أمنية وحظر التهديدات |
| OpenDNS | 208.67.222.222 | 2620:119:35::35 | تصفية المحتوى وحماية من التصيد |
تغيير المحلل
Windows:Control Panel → Network → Adapter Settings
→ Properties → IPv4 → Use these DNS servers:
Preferred: 1.1.1.1
Alternate: 8.8.8.8
macOS:
System Preferences → Network → Advanced → DNS
→ Add: 1.1.1.1, 8.8.8.8
Linux (/etc/resolv.conf):
nameserver 1.1.1.1
nameserver 8.8.8.8
ميزات المحلل
التخزين المؤقت
تخزن المحللات استجابات DNS وفق TTL:
First query: example.com
→ Full recursion (50ms)
→ Cached for 300s (TTL)
Subsequent queries: example.com
→ Cache hit (1ms)
→ Served until TTL expires
غالباً ما تتجاوز إحصاءات التخزين المؤقت، أي معدلات إصابة الذاكرة، 80 إلى 90%.
التخزين المؤقت السلبي
تخزن المحللات أيضاً الاستجابات السلبية (NXDOMAIN):
Query: nonexistent.example.com
Response: NXDOMAIN
Cached: Based on SOA minimum TTL
يمنع ذلك تكرار الاستعلامات عن النطاقات غير الموجودة.
تقليل الاستعلامات
تقلل المحللات الحديثة إفشاء المعلومات:
الأسلوب التقليدي:Query to .com: "What's www.blog.example.com?"
→ Exposes full subdomain structure
تقليل الاستعلامات (RFC 7816):
Query to .com: "What's example.com?"
Query to example.com NS: "What's blog.example.com?"
Query to blog.example.com NS: "What's www.blog.example.com?"
→ Reveals only necessary information at each level
التحقق من DNSSEC
تتحقق المحللات الواعية بالأمان من توقيعات DNSSEC:
Query: example.com (DNSSEC-signed)
→ Resolver validates signatures
→ Returns AD (Authentic Data) flag if valid
→ Returns SERVFAIL if signatures invalid
ميزات أمان المحلل
DNS عبر HTTPS (DoH)
يشفر استعلامات DNS عبر HTTPS:
Traditional DNS:
Client → Resolver (UDP port 53, plaintext)
DNS over HTTPS:
Client → Resolver (TCP port 443, encrypted)
المزودون: Cloudflare (https://cloudflare-dns.com/dns-query)، وGoogle
DNS عبر TLS (DoT)
يشفر استعلامات DNS عبر TLS:
Client → Resolver (TCP port 853, encrypted)
الفائدة: لا يستطيع مزودو الإنترنت رؤية استعلامات DNS أو تعديلها.
تصفية البرمجيات الخبيثة والتصيد
تحظر بعض المحللات النطاقات الخبيثة المعروفة:
Quad9 (9.9.9.9): يحظر النطاقات المرتبطة بالبرمجيات الخبيثة والتصيد. Cloudflare للعائلات: يحظر البرمجيات الخبيثة (1.1.1.2)، أو البرمجيات الخبيثة والمحتوى للبالغين (1.1.1.3).تقييد المعدل
يحمي من هجمات تضخيم DNS:
If source IP sends > threshold queries/second:
→ Temporarily rate limit or block
التحقق من المحلل الحالي
Windows:ipconfig /all | findstr "DNS Servers"
macOS وLinux:
cat /etc/resolv.conf
أدوات الإنترنت: يعرض browserleaks.com/dns المحلل الذي يستخدمه متصفحك.
اختبار الحل:
dig example.com
# Look at "SERVER:" in output
أداء المحلل
أهمية الكمون
يؤثر زمن استجابة المحلل في أداء الويب:
| المحلل | الكمون المتوسط | الأثر |
|---|---|---|
| مزود الإنترنت المحلي | 10-30ms | سريع لكنه متغير |
| Cloudflare | 10-20ms | سريع باستمرار، بفضل Anycast |
| 20-40ms | موثوق وعالمي | |
| محلل بطيء | 100-200ms | يؤخر تحميل الصفحة بوضوح |
توجيه Anycast
تستخدم المحللات الكبرى Anycast لخفض الكمون:
1.1.1.1 anycast IP
→ Routed to nearest Cloudflare datacenter
→ New York query → New York datacenter
→ London query → London datacenter
→ Result: Global low-latency resolution
قياس أداء المحلل
باستخدام Namebench (اختبار آلي):# Tests multiple resolvers with your actual query patterns
namebench
اختبار يدوي:
# Test Cloudflare
time dig @1.1.1.1 example.com
# Test Google
time dig @8.8.8.8 example.com
# Test ISP (current)
time dig example.com
مشكلات المحلل الشائعة
تسميم DNS
يحقن المهاجمون سجلات زائفة في ذاكرة المحلل:
التخفيف:- استخدم محللات تتحقق من DNSSEC
- فعّل عشوائية منفذ المصدر
- استخدم DoH أو DoT لمنع هجمات الوسيط
اختطاف المحلل
يعيد مزودو الإنترنت أو البرمجيات الخبيثة توجيه استعلامات DNS:
العرض: تظهر إعلانات مزود الإنترنت في نتائج البحث أو تحدث عمليات إعادة توجيه غير متوقعة. الحل:- انتقل إلى محلل عام (1.1.1.1 أو 8.8.8.8)
- استخدم DoH أو DoT لمنع تدخل مزود الإنترنت
- افحص وجود برمجيات خبيثة
ذاكرة مؤقتة قديمة
يحتفظ المحلل بسجلات قديمة:
العرض: لا تظهر تغييرات DNS. الحل:- انتظر انتهاء TTL
- استخدم محللاً مختلفاً مؤقتاً
- امسح الذاكرة المؤقتة المحلية
حظر المحلل
تحظر بعض الشبكات المحللات الخارجية:
العرض: تعذر الوصول إلى 8.8.8.8 أو 1.1.1.1. الحل:- استخدم DNS عبر HTTPS، إذ يصعب حجبه
- استخدم نقطة DoH الخاصة بالمحلل
إعداد محلل محلي
استخدام Unbound
# Install Unbound (Linux)
sudo apt install unbound
# Basic config (/etc/unbound/unbound.conf)
server:
interface: 127.0.0.1
do-ip4: yes
do-udp: yes
do-tcp: yes
# Enable DNSSEC
auto-trust-anchor-file: "/var/lib/unbound/root.key"
# Privacy (query minimization)
qname-minimisation: yes
# Start service
sudo systemctl start unbound
sudo systemctl enable unbound
استخدام Pi-hole
محلل DNS يحظر الإعلانات على مستوى الشبكة كلها:
# Install Pi-hole
curl -sSL https://install.pi-hole.net | bash
# Configure devices to use Pi-hole as resolver
# Set router DHCP to provide Pi-hole IP as DNS
أفضل الممارسات
1. استخدم محللات عامة موثوقة: Cloudflare أو Google أو Quad9 للموثوقية.
2. فعّل DoH أو DoT: شفّر الاستعلامات للخصوصية والأمان.
3. راعِ ميزات المحلل: اختر وفق احتياجات الخصوصية أو السرعة أو الأمان.
4. راقب أداء المحلل: اختبر الكمون دورياً.
5. وفّر محللات احتياطية: اضبط DNS ثانوياً للتكرار.
6. استخدم محللات تتحقق من DNSSEC: احمِ من تسميم الذاكرة المؤقتة.
7. افهم سياسات المحلل: بعض المحللات تصفي المحتوى وأخرى تسجل الاستعلامات.
8. اختبر بعد التغييرات: تحقق من أن حل DNS يعمل بصورة صحيحة.
9. وثّق اختيار المحلل: سجّل سبب اختيار محلل محدد.
10. حدّث resolv.conf بحذر: قد يؤدي الإعداد الخاطئ إلى تعطيل DNS بالكامل.
المحلل مقابل خادم الأسماء الموثوق
| الميزة | المحلل | خادم الأسماء الموثوق |
|---|---|---|
| الدور | يجيب عن استعلامات العملاء | يحتفظ بسجلات DNS الفعلية |
| التكرار | نعم، يستعلم من خوادم أخرى | لا، يجيب فقط عن مناطقه |
| التخزين المؤقت | نعم، يخزن الاستجابات | لا، بيانات موثوقة |
| يستخدمه | العملاء والمستخدمون النهائيون | المحللات أثناء التكرار |
| أمثلة | 8.8.8.8 و1.1.1.1 | ns1.example.com |
محللات DNS هي العمود الفقري لنظام DNS. ويؤثر اختيار محلل سريع وآمن ويحترم الخصوصية تأثيراً كبيراً في تجربة التصفح والأمان على الإنترنت.