الخلاصة

  • يسمح RFC 8767 للمحلِّل التكراري باستخدام بيانات منتهية مؤهلة عندما يفشل في تحديثها من مصدر سلطوي؛ أما السجل الوارد بقيمة TTL تساوي صفراً فلا يدخل هذا المسار.
  • تشتري الآلية استمرارية الخدمة، لكنها تجعل المؤقتات وسياسة التخزين وتعريف الفشل لدى مشغّل المحلِّل تتجاوز مؤقتاً حد الحداثة الذي نشره مشغّل المنطقة.
  • تستطيع رموز EDE إظهار أن الإجابة stale، لكنها معلومات تشخيصية لا تصادق على البيانات القديمة ولا تمنح إذناً نيابة عن العميل.

التحليل

لنفترض أن مؤسسة نقلت خدمتها إلى عنوان جديد وسحبت العنوان السابق. تتعلم معظم المحللات التغيير قبل انتهاء TTL. لكن محللاً واحداً يصل إلى لحظة الانتهاء بينما تكون الخوادم السلطوية كلها غير قابلة للوصول. إذا أعاد خطأً، تنقطع الخدمة فوراً. وإذا أعاد العنوان القديم، فقد يخفي العطل، لكنه قد يرسل الحركة أيضاً إلى نظام أُوقف أو أُعيد تخصيصه أو خرج من حدود الأمان المقصودة.

صُممت TTL تاريخياً لتضع حداً زمنياً لهذا الشك. وصفها RFC 1035 بأنها الفترة التي يمكن فيها تخزين سجل الموارد مؤقتاً قبل الرجوع مرة أخرى إلى مصدره والتخلص منه. ثم أوضح RFC 2181 أنها حد أقصى للعمر وليست التزاماً بالاحتفاظ بالسجل حتى آخر ثانية. في التشغيل العادي تنشر المنطقة المدة، ويتوقف المحلِّل عن إعادة استخدام القيمة بعد انقضائها.

يعدل RFC 8767 هذه القاعدة في ظرف استثنائي. إذا انتهت TTL وتعذر تحديث البيانات من مصدر سلطوي، يجوز للمحلِّل التكراري الاحتفاظ بها واستخدامها كما لو لم تنته. لا يعني ذلك أن يقدم المحلِّل النسخة القديمة دائماً ثم يحاول التحديث لاحقاً حين يناسبه. يجب أن تكون محاولة حديثة وحسنة النية للحصول على البيانات الحالية قد فشلت، كما ينبغي أن يستمر الحل بعد إرسال الإجابة stale إلى أن ينتهي مؤقت الحل الكلي.

تبقى TTL الصفرية حداً صريحاً. لا يجوز استخدام السجل ذي القيمة صفر إلا في المعاملة الجارية، ولا يمكن حفظه ليصبح احتياطياً منتهياً في المستقبل. وعندما يعيد المحلِّل سجلات منتهية بالفعل، يجب أن يضع لها TTL موجبة في الرسالة؛ ويوصي RFC 8767 بقيمة 30 ثانية. تتجنب هذه القيمة مشكلات بعض البرمجيات مع الصفر، وتحد من إعادة الاستعلام الفورية لدى الذاكرات الوسيطة اللاحقة.

تفصل المنهجية بين أربعة مؤقتات لأنها توزع أربع مسؤوليات. يحدد مؤقت استجابة العميل مدة انتظار المستخدم قبل النظر في إجابة stale، وتقترح الطريقة المثال نحو 1.8 ثانية. يحد مؤقت حل الاستعلام من إجمالي العمل المبذول للحصول على إجابة حالية. يضبط مؤقت إعادة فحص الفشل عدد مرات تجربة السلطات المتعثرة من جديد. أما الحد الأقصى لمدة stale فيحدد الفترة التي يبقى فيها السجل المنتهي مرشحاً، مع نطاق تشغيلي مقترح من يوم إلى ثلاثة أيام.

لا تفرض المواصفة قيماً موحدة بين الشبكات. يعد RFC 8767 serve-stale عملية محلية لدى المحلِّل، ويترك المتغيرات للتنفيذ والمشغّل. لذلك يمكن لمحللين متوافقين مع المعيار أن يقدما نتيجتين مختلفتين للاسم نفسه أثناء العطل نفسه: أحدهما يحافظ على الإجابة القديمة، والآخر يعيد الفشل. هذا الاختلاف يكشف عن اختيار بين خطر الانقطاع وخطر التقادم، لا عن خلل بروتوكولي بالضرورة.

تحدد دلالة الرد السلطوي نهاية الاستثناء. يؤدي رد سلطوي من نوع NoError أو NXDomain مع ضبط البت AA إلى تحديث الحالة واستبدال البيانات السابقة. أما رموز الرد الأخرى فلا تقرر عادة ما الموجود حالياً عند الاسم، ولذلك ينبغي معاملتها كفشل في التحديث مع إبقاء حالة الذاكرة القديمة. لا يثبت SERVFAIL أن العنوان القديم صحيح؛ بل يثبت فقط أن المحلِّل لم يحصل على إجابة حالية مفيدة.

ويجب فصل ذلك عن تخزين فشل الحل في RFC 9520. يطلب المعيار تخزين فشل الحل مدة لا تقل عن ثانية ولا تزيد على خمس دقائق، حتى لا تولد الاستعلامات المطابقة عملاً متكرراً باتجاه الخوادم الأعلى طوال صلاحية مدخل الفشل. ما يُحفظ هنا هو نتيجة فشل العملية. أما serve-stale فتستخدم بيانات إجابة قديمة. الأولى تكبح عاصفة المحاولات، والثانية تغير ما يراه المستخدم.

يوفر RFC 8914 لغة لتشخيص القرار. يشير رمز Extended DNS Error رقم 3 إلى Stale Answer، ويشير الرمز 19 إلى Stale NXDOMAIN Answer. هذه الإشارة مفيدة للمراقبة، لكنها لا تضيف ثقة بذاتها. معلومات EDE غير مصادق عليها ما لم تكن معاملة DNS نفسها محمية، ولا يجوز أن تغير معالجة البروتوكول. يشرح الرمز ما فعله المحلِّل، ولا يثبت أن القيمة القديمة ما زالت آمنة.

تختلف الكلفة باختلاف نوع السجل. قد يبقي عنوان A أو AAAA القديم خدمة لم تتغير، أو يعيد الحركة إلى وجهة مسحوبة. وقد يعيد CNAME قديم اعتماداً أزيل عمداً. ويحذر RFC 8767 أيضاً من احتمال انتهاء صلاحية التوقيعات، ومن أن تؤخر بيانات NSEC أو NSEC3 القديمة استخدام سجلات TLSA أو DS الجديدة، ومن أن يحاول مهاجم قادر على تعطيل الوصول إلى السلطات إطالة العمر العملي لمعلومات قديمة.

هذه مخاطر تصفها المعايير، وليست دليلاً على إعدادات مشغّل بعينه أو على وقوع حادث لديه. لا تثبت حزمة الحقائق معدل تبنٍّ أو منفعة أو ضرراً لأي أسطول محدد. ما تثبته هو سلسلة التحكم: مشغّل المنطقة ينشر البيانات وTTL، ومشغّل المحلِّل يصنف الفشل ويحدد المؤقتات، ثم يتحمل العميل النتيجة.

المصادر