الخلاصة
- تلزم RFC 9520 المحلّل بتخزين فشل التحليل مدة لا تقل عن ثانية ولا تتجاوز خمس دقائق. مطابقة الطلب لذلك السجل توقف العمل الصادر، لكنها لا تثبت NXDOMAIN ولا NODATA.
- لا يثبت فشل التحليل إلا بعد أن يعجز كل خادم ونقل متاح عن تقديم بيانات مطلوبة أو إحالة إلى منطقة أدنى أو جواب سلبي مفيد.
- يحتاج القرار القابل للدفاع إلى سجل للمسارات والمحاولات والعملاء المضمومين ومفتاح الذاكرة ونطاقها والتراجع الزمني واستفسارات الآباء والأسلاف المحجوبة وضغط الموارد وأول مسبار تعافٍ.
كيف انتقل صمت شبكة واحدة إلى حمل على شبكات سليمة
في 4 أكتوبر/تشرين الأول 2021، فصل أمر صيانة مراكز بيانات Facebook عن العمود الفقري العالمي للشركة من غير قصد. يوضح تقرير Meta الهندسي أن مواقع DNS السلطوية سحبت إعلانات BGP عندما فقدت الاتصال بمراكز البيانات، وفق منطق السلامة التشغيلي لديها. ظلت خوادم DNS تعمل، لكن الإنترنت لم يعد يملك مساراً للوصول إلى عناوينها.
لم يبق الصمت داخل حدود Facebook. قاس Verisign في الظروف العادية نحو سبعة آلاف استفسار في الثانية للأسماء facebook.com وinstagram.com وwhatsapp.net على بنية .com و.net. أثناء العطل الذي استمر قرابة ست ساعات، تجاوز المعدل 900 ألف استفسار في الثانية. وبلغت مصادر التحليل الأكثر نشاطاً لدى Google وCloudflare نحو سبعة آلاف وضعفي ألفين من معدلاتها المعتادة لتلك الأسماء.
لم تتغير الإحالات لدى المناطق الأم. إعادة سؤالها لا تعيد مساراً سحبه الطفل. ومع ذلك، نقلت إعادة المحاولات كلفة منطقة غير قابلة للوصول إلى طبقات علوية سليمة. لم يصنع المحلّل العطل الأول، لكنه شارك في تحديد حجمه.
تضع RFC 9520 حاجزاً محلياً. إذا لم يقدم أي مسار متاح معلومة مفيدة، يجب على المحلّل تخزين فشل التحليل. وحتى انتهاء السجل، لا يجوز لطلب مطابق أن يولد استفسارات صادرة مماثلة. معنى السجل هو: «لن أكرر الآن عملاً أخفق لتوه». وليس معناه: «الاسم غير موجود».
NXDOMAIN وNODATA جوابان سلبيان يحملان معلومة. أما فشل التحليل فهو غياب المعلومة المفيدة عن وجود البيانات. الأول يمكن أن يسند حكماً محدوداً عن محتوى DNS، والثاني لا يسند إلا قرار ضغط عكسي محلي مؤقت.
لا فشل كاملاً ما دام مسار مفيد باقياً
يعرف المحلّل عادة عدة أسماء NS، وعدة عناوين لكل اسم، وربما عدة وسائل نقل إلى العنوان نفسه. لذلك لا يكفي timeout واحد ولا SERVFAIL ولا REFUSED منفرد لإعلان فشل التحليل كله.
تعد RFC 9520 الجواب مفيداً إذا حمل البيانات المطلوبة، أو إحالة إلى منطقة أدنى، أو دلالة صحيحة على عدم وجود البيانات عند الاسم المطلوب. إذا قدم أي خادم متاح واحداً من هذه، لم يفشل التحليل. ولهذا يجب أن يسبق إدخال الفشل كشف واضح بكل العناوين ووسائل النقل المؤهلة، وبداية كل محاولة ونهايتها ونتيجتها.
تسمح القاعدة بمحاولتين إضافيتين فقط بعد الإرسال الأول للسؤال نفسه إلى العنوان نفسه عبر النقل نفسه: ثلاث رسائل إجمالاً. ويمكن تجربة نقل آخر معروف ومتاح إذا وافق سياسة الأمن المحلية. ولا تحدد الوثيقة timeout عاماً؛ بل تشير إلى قيم شائعة تقريبية بين ثلاث وثلاثين ثانية.
اختلاف التأخير والمصافحة وanycast والتزامات العملاء يبرر القرار المحلي. لكنه لا يبرر الغموض. يجب أن يظهر التوقيت والمسار والخيارات المتبقية في السجل. عبارة server failed وحدها لا تثبت أن جميع الاحتمالات انتهت.
SERVFAIL نتيجة واسعة لا تشخيصاً كاملاً
قد يعيد خادم سلطوي SERVFAIL لأنه لا يملك نسخة صالحة من المنطقة. وقد يعيده محلّل عودي بعد نفاد المسارات أو فشل DNSSEC. وغالباً ما يعبر REFUSED عن سياسة أو نطاق صلاحية. ويعني timeout أن مهلة محلية انتهت من دون جواب؛ أما ICMP أو TCP أو TLS فقد ينهي النقل قبلها.
ولحلقات الإحالة وحلقات CNAME/DNAME وFORMERR وفشل توقيع أو مفتاح DNSSEC آليات مختلفة. يجوز للذاكرة أن تحفظ الأسباب منفصلة، لكن أثرها المشترك ضيق: منع عمل صادر مطابق لمدة محدودة. لا يجوز تحويل REFUSED إلى SERVFAIL، ولا بيانات bogus إلى بيانات موثقة، ولا الصمت إلى غياب.
تضيف RFC 8914 Extended DNS Errors مثل Cached Error وNo Reachable Authority وDNSSEC Bogus. هذه الرموز تحسن الشرح والسجلات، لكنها لا تغير معالجة RCODE. الوصف المفصل ليس توقيعاً ولا مصدراً جديداً للسلطة.
عملاء كثيرون، عملية واحدة إلى الأعلى
بينما ينتظر أول سؤال انتهاء المهلة، قد يرسل مئات العملاء QNAME وQTYPE وQCLASS نفسها. المحلّل الذي يضم الاستفسارات المتطابقة يربطهم بعملية تحليل واحدة جارية. ومن دون الضم، ينشئ كل عميل عملية صاعدة ومحاولات إعادة خاصة به.
في تجربة DNS-OARC 35 التي تستشهد بها RFC 9520، بلغ حمل نطاق botnet نحو 50 استفساراً في الثانية عندما أجابت الخوادم السلطوية بصورة عادية. وحين أعادت كلها SERVFAIL، وصل الحمل إلى نحو 60 ألف استفسار في الثانية، وازداد العمل على الجذر وTLD رغم ثبات الإحالة.
يقلل الضم أيضاً خطر birthday attack الموضح في RFC 5452: كلما تعددت العمليات المتكافئة المفتوحة، زادت فرص أن تطابق إجابة مزورة إحداها. لذلك توجد ثلاثة ضوابط مستقلة: ضم الطلب المتزامن، تحديد الإرسال لكل عنوان ونقل، وتخزين الفشل بعد نفاد المسارات.
الضم يقرر عدد العمليات المتزامنة. حد الثلاث يقرر العمل على كل مسار. والذاكرة تقرر متى يبدأ العمل التالي. تنفيذ واحد منها لا يثبت وجود الآخرين.
بين ثانية وخمس دقائق تنشأ كلفة التعافي
يجب ألا تقل مدة التخزين عن ثانية وألا تزيد على خمس دقائق. وينبغي أن تكون القيمة الدنيا قابلة للضبط. ويمكن رفع المدة خطياً أو أسياً عند استمرار الفشل، من دون تجاوز السقف.
المدة الأطول تقلل الحمل أثناء العطل المستمر، لكنها قد تؤخر اكتشاف الإصلاح. والمدة الأقصر تكتشف التعافي أسرع، لكنها تنشئ عملاً أكثر ما دام العطل قائماً. كل backoff يوفر قدرة الآن ويخلق دين تعافٍ لاحقاً.
يحتاج كل سجل إلى مفتاح ونطاق وأسباب ووقت إدخال ومدة فعلية ومرحلة تراجع ووقت انتهاء وإصدار إعداد. عند الانتهاء، ينبغي إطلاق مسبار واحد مضبوط لا كل الطلب المتراكم. أول جواب مفيد ينهي مبرر المنع. والمقياس المهم هو الزمن بين عودة الجواب فعلياً ووصوله إلى العميل.
يتغير الأثر باختلاف المفتاح. قد يرتبط فشل DNSSEC بالاسم والفئة والنوع، وقد يرتبط عدم قابلية عنوان للوصول بالـ IP. ولا يعني SERVFAIL من خادم أن كل الخوادم فشلت. حددت RFC 2308 نطاقات معينة للسؤال والخادم عندما كان التخزين اختيارياً. جعلت RFC 9520 الوظيفة إلزامية وتركت البنية للتنفيذ، ولذلك يجب على المطور توثيق ما يحجبه كل سجل.
المنطقة الأم ليست زر إصلاح
كانت بعض المحللات تعيد سؤال المنطقة الأم عن NS عندما تصمت كل خوادم الطفل. منعت RFC 4697 هذا السلوك العدواني. ووسعت RFC 9520 القاعدة إلى جميع أنواع الأسئلة وجميع الأسلاف: يحد العمل إليها كما يحد العمل إلى المنطقة الفاشلة.
يمكن للأم السليمة تكرار إحالة صحيحة، لكنها لا تستطيع إصلاح شبكة الطفل. منع السؤال لا يعلن الإحالة خاطئة؛ بل يقرر أن تكراره داخل نافذة الفشل لن يقدم معلومة مفيدة جديدة.
ينبغي عد الاستفسارات المحجوبة إلى الآباء والأسلاف، لأنها تكشف أين كان العطل سينقل حمله. وبعد الانتهاء، يظل مسبار مضبوط قادراً على اكتشاف عنوان أو إحالة جديدة. شرعية المنع تأتي من كونه مؤقتاً.
فشل DNSSEC يحتاج ذاكرة لأن TTL غير موثوق
كانت RFC 4035 تسمح بذاكرة BAD لتجنب تكرار التحقق الذي يرجح أن يفشل ثانية. ولا يمكن الوثوق بـ TTL لبيانات لم تنجح في التحقق، لذلك يضع المحلّل مدة محلية قصيرة ويحمي الذاكرة من الاستنزاف.
تحول RFC 9520 الإمكانية إلى إلزام. يجب تخزين فشل DNSSEC، لكن ذلك لا يجعل RRset غير الصالح آمناً. المحفوظ هو أن المحاولات الحديثة لم تقدم بيانات مقبولة.
يمكن لـ EDE أن يشرح خطأً مخزناً أو DNSSEC bogus. ومع ذلك تظل سلسلة الثقة والوقت والنطاق والمسبار التالي ضرورية. النص المفهوم لا يحل محل الدليل التشفيري.
Serve Stale يعيد بيانات قديمة؛ ذاكرة الفشل تمنع العمل
تسمح RFC 8767 بإعادة بيانات انتهت مدتها حين يفشل تحديثها وتسمح السياسة المحلية، وتوصي غالباً بفاصل ثلاثين ثانية لإعادة فحص سلطة فاشلة. إنها آلية استمرارية حين توجد بيانات كانت مفيدة.
تعمل RFC 9520 أيضاً بلا بيانات قديمة: اسم جديد، نوع جديد، أو Serve Stale معطل. جواب stale يقول إن بيانات سابقة ستستخدم مؤقتاً. أما سجل الفشل فيقول إن أياً من المسارات لم يقدم بيانات مفيدة وإن العمل لن يتكرر حتى الانتهاء. المحتوى والاحتواء وعدان مختلفان.
ذاكرة الحماية نفسها سطح هجوم
يستطيع مهاجم توليد أسماء وأنواع كثيرة تفشل، مستهلكاً الذاكرة وCPU. لذلك يلزم تحديد عدد السجلات والبايتات ومعدلات الإدخال والطرد والتركيز بحسب المصدر ونمو الملصقات العشوائية.
كما أن رسائل الفشل ليست بيانات DNS موقعة. قد تقنع إجابة مزورة مطابقة المحلّل بوقف سؤال سلطة حقيقية أثناء backoff. يحد سقف الخمس دقائق حادثة واحدة، لكن التزوير المتكرر يجددها. تقليل العمليات المفتوحة وحفظ دليل النقل والمقارنة بين الخوادم ونقاط الرصد ضروري.
هذه الذاكرة قاطع دائرة عليه واجب إثبات. من دون حد تتحول إعادة المحاولة إلى هجوم غير مقصود، ومن دون نطاق وانتهاء يتحول القاطع إلى حجب.
الحد الأدنى لإيصال فشل يمكن الدفاع عنه
يحفظ الإيصال QNAME وQTYPE وQCLASS ووقت البداية ومجموعة العملاء المضمومة. ويسرد zone cut وNS والعناوين ونقطة الرصد ووسائل النقل. وتحمل كل محاولة بداية ونهاية ورقم إعادة ونتيجة خام واختبار الجواب المفيد.
بعد نفاد المسارات، تفصل RCODE وأخطاء النقل وDNSSEC وEDE. ثم تضاف مفتاح الذاكرة ونطاقها وإدخالها ومدتها ومرحلتها وانتهاؤها وأولوية الطرد. ويسجل العمل المحجوب إلى الأسلاف ووجود بيانات stale والجواب الفعلي للعميل.
على مستوى الأسطول تقارن طلبات العملاء والمجموعات المضمومة والاستفسارات الصادرة. تنشر نسبة التضخيم والتأخير وCPU والذاكرة وعدد السجلات. وبعد الانتهاء تحدد السجلات المسبار ووجهته وأول جواب مفيد وتأخر التعافي الظاهر.
هكذا يبقى القرار لدى من يتحمل كلفته. لا يحتاج المحلّل إلى أن تصدق المنطقة الأم أو IETF على مؤقته المحلي، لكنه ملزم بإثبات سبب توقفه ووقت عودته.
المصادر
- RFC 9520 — Negative Caching of DNS Resolution Failures
- RFC 2308 — Negative Caching of DNS Queries
- RFC 4035 — DNSSEC Protocol Modifications
- RFC 4697 — Observed DNS Resolution Misbehavior
- RFC 5452 — Measures for Making DNS More Resilient against Forged Answers
- RFC 8767 — Serving Stale Data to Improve DNS Resiliency
- RFC 8914 — Extended DNS Errors
- Meta Engineering — More details about the October 4 outage
- Verisign — Observations on Resolver Behavior During DNS Outages
- DNS-OARC 35 — Botnet Traffic Observed at Various Levels of the DNS Hierarchy
- Heng Lu — Minimum Initial Specification, Localized Future Decision, and Voluntary Adoption
- Heng Lu — Running Code Is Primary
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات
