ذاكرة DNS المؤقتة

البروتوكولات والمعايير
تخزين مؤقت لنتائج استعلامات DNS لدى المحللات أو العملاء لتسريع الطلبات المتكررة.
← العودة إلى القاموس

ما هو Cache DNS؟

التخزين المؤقت لـDNS هو حفظ مؤقت لنتائج استعلامات DNS لدى المحللات وأنظمة التشغيل والمتصفحات والتطبيقات. عند تنفيذ بحث DNS، تُحفظ النتيجة لمدة يحددها TTL للسجل (مدة البقاء)، فتجاب الطلبات اللاحقة للنطاق نفسه فوراً من دون سؤال الخوادم الموثوقة.

لماذا يهم التخزين المؤقت لـDNS؟

من دون التخزين المؤقت سيحتاج كل طلب ويب إلى بحث DNS كامل، مما يضيف زمناً ويولد حركة DNS كبيرة. ويوفر التخزين المؤقت:

كيف يعمل تخزين DNS؟

هرم التخزين المؤقت

يحدث التخزين المؤقت لـDNS على مستويات متعددة:

Browser Cache (seconds to minutes)

OS Cache (seconds to minutes)

Local Resolver Cache (minutes to hours)

ISP Resolver Cache (minutes to hours)

Authoritative Name Server (source of truth)

عملية البحث في Cache

1. يطلب المستخدم example.com.

2. يفحص المتصفح ذاكرته.

3. عند الإخفاق يفحص النظام ذاكرته.

4. عند الإخفاق يفحص المحلل ذاكرته.

5. عند الإخفاق يرسل المحلل استعلاماً عودياً إلى الخوادم الموثوقة.

6. تخزن النتيجة في كل مستوى وفق TTL.

7. تعاد الاستجابة إلى المستخدم.

الانتهاء وفق TTL

يحتوي كل سجل DNS على قيمة TTL:

example.com.    300    IN    A    203.0.113.50

^^^

TTL in seconds (5 minutes)

تحتفظ الذاكرات بالسجل 300 ثانية ثم تتخلص منه. ويؤدي الاستعلام التالي إلى بحث جديد.

طبقات Cache DNS

Cache المتصفح

تخزن المتصفحات الحديثة نتائج DNS بصورة مستقلة:

Chrome: يستخدم ذاكرة DNS خاصة به (chrome://net-internals/#dns) Firefox: يحتفظ بذاكرة داخلية (about:networking#dns) Safari: يستخدم محلل النظام

TTL المعتاد لذاكرة المتصفح: 60 ثانية، بصرف النظر عن TTL في DNS.

Cache نظام التشغيل

تخزن أنظمة التشغيل النتائج عبر خدمة DNS المحلية:

Windows: تخزن خدمة DNS Client النتائج
# View cache

ipconfig /displaydns

# Flush cache

ipconfig /flushdns

macOS: تتولى mDNSResponder التخزين
# Flush cache (macOS 10.15+)

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

Linux: يختلف حسب النظام، وغالباً يستخدم systemd-resolved
# Flush systemd-resolved cache

sudo systemd-resolve --flush-caches

# Check statistics

sudo systemd-resolve --statistics

Cache المحلل

تحافظ المحللات العودية لـDNS (مثل DNS الخاص بمزود الإنترنت و8.8.8.8 و1.1.1.1) على ذاكرات كبيرة تخدم ملايين المستخدمين:

المحللاستراتيجية التخزين المؤقت
Google (8.8.8.8)يحترم TTL، وذاكرة عالمية
Cloudflare (1.1.1.1)يحترم TTL، وموزعة
محللات مزود الإنترنتقد تتجاهل TTL المنخفض

أمثلة على سلوك Cache

التشغيل العادي

Query 1: example.com

→ Full lookup: 50ms

→ Cached for 300s (TTL)

Query 2: example.com (1 minute later)

→ Cache hit: 1ms

Query 3: example.com (10 minutes later)

→ Cache expired, full lookup: 50ms

→ Re-cached for 300s

تحديث سجل DNS

Original: example.com → 203.0.113.50 (TTL: 300s)

Time: 10:00 - DNS updated to 203.0.113.51

Client queries at 10:02

→ Still cached: 203.0.113.50 (expires 10:05)

Client queries at 10:06

→ Cache expired, new lookup: 203.0.113.51

→ Cached until 10:11

استراتيجية TTL والتخزين المؤقت

اختيار قيم TTL

حالة الاستخدامTTL الموصى بهالسبب
بنية تحتية ثابتة3600-86400s (1-24 ساعة)نادراً ما تتغير، وتقليل حمل DNS
موقع إنتاج300-1800s (5-30 دقيقة)موازنة الأداء والمرونة
نقل نشط60-300s (1-5 دقائق)انتشار أسرع أثناء التغييرات
موازنة حمل60-120sتجاوز سريع عند تغير الخوادم

خفض TTL قبل النقل

أفضل ممارسة عند التخطيط لتغييرات DNS:

Day -7: example.com TTL 3600s (1 hour)

Day -2: Reduce to 300s (5 minutes)

Day 0: Make DNS change

→ Max 5 minute cache retention

Day +1: Restore TTL to 3600s

تسميم Cache DNS والأمان

هجوم تسميم Cache DNS

يحاول المهاجمون إدخال سجلات DNS زائفة إلى الذاكرات:

1. يغمر المهاجم المحلل باستجابات مزيفة.

2. إذا طابقت إحداها استعلاماً معلقاً، تُخزن.

3. يتلقى المستخدمون عنوان IP ضاراً لنطاق شرعي.

4. تقدم الإجابة المسممة إلى مستخدمين كثيرين.

وسائل التخفيف الأمنية

DNSSEC: تمنع السجلات الموقعة تشفيرياً التسميم:
example.com.    IN    A      203.0.113.50

IN RRSIG A 8 2 300 ...

عشوائية منفذ المصدر: تجعل تزوير الاستجابات أصعب. ترميز 0x20: تساعد عشوائية حالة الأحرف في الاستعلامات على التحقق. أمان المحلل: استخدم محللات موثوقة مثل Cloudflare وGoogle وQuad9.

فحص Cache DNS

عرض محتويات Cache

Windows:
ipconfig /displaydns | more
macOS (معلومات محدودة):
sudo killall -INFO mDNSResponder

# Check Console.app for logs

Linux (systemd-resolved):
sudo systemd-resolve --statistics

اختبار سلوك Cache

# First query (cache miss)

time dig example.com

# Immediate repeat (cache hit)

time dig example.com

# Compare times

مشكلات مرتبطة بالتخزين المؤقت

Cache قديم بعد تغيير DNS

المشكلة: لا تظهر سجلات DNS المحدثة للمستخدمين. الحل:

1. انتظر انتهاء TTL.

2. خفض TTL قبل التغييرات المستقبلية.

3. اطلب من المستخدمين مسح الذاكرة المحلية.

تخزين مفرط العدوانية

تتجاهل بعض مزودات الإنترنت TTL وتخزن مدة أطول:

المشكلة: تستغرق التغييرات ساعات أو أياماً للانتشار. الحل:

التخزين السلبي

تخزن أيضاً عمليات البحث الفاشلة (NXDOMAIN):

Query: newsubdomain.example.com

Response: NXDOMAIN (does not exist)

Cached: 3600s (SOA minimum TTL)

Result: New subdomain won't resolve for 1 hour

الحل: خفض الحد الأدنى لـTTL في SOA قبل إضافة سجلات جديدة.

مسح Cache DNS

متى يجب المسح؟

كيف يتم المسح؟

Windows:
ipconfig /flushdns
macOS:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
Linux (systemd-resolved):
sudo systemd-resolve --flush-caches
Chrome:
Navigate to: chrome://net-internals/#dns

Click: "Clear host cache"

Firefox:
Toggle network.dnsCacheExpiration in about:config

Or restart browser

أفضل الممارسات

1. اضبط TTL مناسباً: وازن بين الأداء وسرعة التغيير.

2. خفض TTL قبل التغييرات: خفضه قبل تحديثات DNS بـ24-48 ساعة.

3. راقب الانتشار: استخدم أدوات لفحص حل DNS عالمياً.

4. وثق سلوك الذاكرة: افهم طبقات التخزين في بنيتك.

5. استخدم DNSSEC: احم من تسميم الذاكرة.

6. اختبر جيداً: تحقق من عمل تغييرات DNS قبل إعلان نجاحها.

7. ثقف المستخدمين: قدم تعليمات واضحة لمسح الذاكرة عند الحاجة.

مفاهيم التخزين المتقدمة

الاستباقية في الجلب

قد تجلب المتصفحات والمحللات DNS مسبقاً للروابط الموجودة في الصفحة:

<!-- Hint to browser -->

<link rel="dns-prefetch" href="//cdn.example.com">

تدفئة Cache

قد تملأ موازنات الحمل وشبكات CDN الذاكرة مسبقاً للسجلات المهمة.

Anycast والتخزين المؤقت

يوجه DNS Anycast الاستعلامات إلى أقرب خادم، وينشئ ذاكرات موزعة جغرافياً لأفضل أداء.

التخزين المؤقت لـDNS أساس أداء الإنترنت. ويضمن فهم TTL وضبطه بصورة صحيحة انتشار تغييرات DNS بكفاءة مع الحفاظ على سرعة الحل.

استفد من هذه المعرفة

استخدم API الخاص بـ DomScan للتحقق من توفر النطاقات وصحتها والمزيد.