الخلاصة

  • يعني NXDOMAIN أن الاسم نفسه غير موجود، بينما يعني NODATA أن الاسم قد يوجد من دون نوع السجل المطلوب؛ لذلك يختلف مفتاح التخزين لكل منهما.
  • أوجب RFC 2308 أن يرافق سجل SOA للمنطقة النفي السلطوي. تصبح القيمة الأصغر بين TTL للسجل وحقل MINIMUM عمر النفي، وتنقص حتى الصفر حيث يمنع استعماله ثانية.
  • لا ينبغي تخزين نفي بلا SOA، لأن خادمين يحيل كل منهما إلى الآخر يستطيعان إعادة بدء عمر قصير في كل قفزة، فيعيش الخطأ إلى الأبد.
  • أتاحت DNSSEC لاحقاً إثبات الغياب عبر NSEC/NSEC3 وتركيب إجابات من نطاق موثّق. يثبت التوقيع المصدر والسلامة داخل DNS، لا الحق المؤسسي ولا الغياب الدائم.

حين يصبح السؤال الخاسر هو الأغلى

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

لكن تذكّر كل فشل يحوّل العطل إلى إنكار. انتهاء المهلة قد يكون فقدان حزمة، وSERVFAIL عجزاً مؤقتاً، والجواب الفارغ إحالة يجب متابعتها. يحتاج الغياب القابل لإعادة الاستخدام إلى جهة تتكلم عن المنطقة، وإلى تحديد ما تنفيه، وإلى موعد تنتهي عنده حجتها.

وصف RFC 1034 عام 1987 التخزين السلبي بصفته اختيارياً. أمكن إرفاق عمر بخطأ اسم سلطوي. انسجم ذلك مع اقتصاد DNS: تخفف النسخة القريبة كلفة السؤال المتكرر، بينما تحدد الجهة المالكة للبيانات مدة قبول احتمال القدم.

بقي النقل ناقصاً. أوضح RFC 2308 لاحقاً أن الخادم لم يستطع تسليم نفي مخزّن إلى محلل آخر بصورة تحفظ الدليل المفيد نفسه. استطاعت العقدة تذكر «لا»، لكن عمر الذاكرة لم يكن يسافر معها جيداً.

غيابان لا يجوز دمجهما

NXDOMAIN هو رمز Name Error وينفي وجود اسم الاستعلام الفعلي. في سلسلة CNAME قد يكون الهدف القانوني الأخير هو المنفي، مع أن الاسم المستعار الأول موجود. يخزّن المحلل النتيجة بحسب الاسم والفئة.

أما NODATA فليس رمز استجابة مستقلاً. يُستنتج من NOERROR مع غياب النوع المطلوب ومن قسم سلطة يميزه عن الإحالة. قد يحمل الاسم MX أو TXT ولا يحمل A.

لذلك يتضمن مفتاح NODATA الاسم والنوع والفئة. إذا تحولت عبارة «لا يوجد A» إلى «لا يوجد الاسم»، اختفى MX الصحيح أيضاً. دقة المفتاح هي ما يمنع تحسين الأداء من محو بيانات قائمة.

سجل SOA يمنح النفي ساعة مشتركة

صدر RFC 2308 في مارس 1998 بقلم Mark Andrews حين كان منتسباً إلى CSIRO، فأدخل مؤسسة بحثية عامة أسترالية بوضوح في السلسلة الوثائقية لهذه القاعدة التشغيلية في DNS. وفّرت IETF ساحة التوحيد التي صار فيها هذا العقد وتحسينات DNSSEC اللاحقة مواصفات مشتركة. والدوران المؤسسيان مختلفان: يرتبط CSIRO بالمقال لأنه جهة انتساب المؤلف المسجلة في المواصفة الحاسمة، بينما حوّلت عملية IETF النص إلى عقد مشترك للإنترنت.

حين يعلن خادم سلطوي NXDOMAIN أو NODATA، يجب أن يضمّن SOA للمنطقة المحتوية في قسم السلطة. يحدد السجل السياق المخوّل بالنفي ويحمل مادة التوقيت. عمر النفي هو الأصغر بين TTL الخاص بـSOA وحقل MINIMUM.

يحفظ المحلل SOA مع النتيجة. وعندما يجيب من الذاكرة ينقص الزمن الذي مضى. عند الصفر لا يجوز استعمال النفي مجدداً. يصبح «لا» إيجاراً زمنياً: قالت المنطقة ذلك مؤخراً عن هذا النطاق؛ بعد الموعد يجب سؤالها من جديد.

نظم RFC أيضاً المعاني المتراكمة لحقل MINIMUM. عرّفه RFC 1035 حداً أدنى عاماً، ثم استعملته البرمجيات قيمة افتراضية وعمراً للنفي. ألغى RFC 2308 معنى الحد العام، وفصل القيمة الافتراضية بتوجيه $TTL، وأبقى MINIMUM مدخلاً لعمر الإجابة السلبية.

العمر القصير الذي لا ينتهي

فضاء الأسماء شجرة، لكن مسار الاستعلام قد يصنع حلقة. يمكن لخادمين أن يضع كل منهما الآخر في قائمة المحيلين، كما تنتج التفويضات الرديئة دورات أخرى.

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

لهذا لا ينبغي تخزين الإجابات السلبية التي تفتقر إلى SOA. العداد المرافق للسجل يحتفظ بالوقت المستهلك عند عبور الحدود. والقيد الذي لا ينتقل مع الدليل ليس قيداً على النظام كله.

الكود سبق التسوية المشتركة

يسجل الملحق التاريخي في RFC 2308 أن CHIVES استخدم التخزين السلبي أواخر 1987 اعتماداً على MINIMUM. أنتجت مسارات البحث أسئلة خاسرة كثيرة، وكان تفاديها مهماً خلال ازدحام ARPANET. تحسّن زمن الاستجابة في الآلات القليلة المذكورة، لكن ذلك ليس قياساً شاملاً للإنترنت.

ويذكر الملحق BIND 4.9.2 ALPHA عام 1993: عمر سلبي عشر دقائق، وفصل NXDOMAIN عن NOERROR_NODATA، ثم الاحتفاظ بـSOA كي يعود النفي مع سياقه. لم تنشأ القاعدة من مخترع منفرد، بل من تحويل دروس التشغيل إلى مفاتيح دقيقة ودليل قابل للنقل ووقت لا يتجدد.

تحسين الغياب يؤخر الوجود الجديد

تقلل الذاكرة السلبية الحزم والكمون وعمل السلطة. تظهر الكلفة عندما ينشئ المشغل اسماً أو يضيف نوعاً كان مفقوداً. يواصل المحلل الذي يحمل النفي السابق الإجابة بالعدم حتى انتهاء عمره.

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

يغير التطبيق شدة الأثر. قد يجعل NXDOMAIN محقون رسالة البريد ترتد فوراً، بينما يبقيها عنوان سيئ في الطابور حتى الإصلاح. تحويل عطل إلى عدم قد يجعل قراراً لاحقاً غير قابل للعكس بعد تعافي DNS.

من نفي واحد إلى نطاق موثّق

أدخلت DNSSEC النفي المصادق عليه. يربط NSEC الأسماء الموجودة بالترتيب القانوني ويسرد الأنواع الموجودة، وتتيح قواعد RFC 4035 إثبات أن اسماً لا يقع في فاصل أو أن اسماً قائماً يفتقد نوعاً.

سهل NSEC تعداد المنطقة، فجاء RFC 5155 بـNSEC3 والأسماء المجزأة وخيار Opt-Out. لا يثبت سجل Opt-Out وجود أو عدم كل تفويض غير موقع يغطيه؛ يجب ألا تتحول هذه الفجوة إلى يقين.

أوضح RFC 8020 لاحقاً أن NXDOMAIN عند عقدة يقطع ما تحتها، لأن أبناء عقدة غير موجودة لا يوجدون في شجرة DNS. لا يطبق ذلك على NODATA، فالاسم القائم قد يملك أنواعاً أخرى وأبناء.

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

يثبت DNSSEC أن البيانات جاءت عبر سلسلة DNS ولم تتغير. ويمكن لحذف ضار موقّع بالمفتاح الصحيح أن ينجح في التحقق. لا يثبت ذلك أن المؤسسة اختفت أو أن حامل المفتاح يملك حقاً خارج البروتوكول.

المصادر وحدود الدليل

توثق هذه المصادر التصاميم والمتطلبات وتاريخاً جزئياً للتنفيذ، لا إحصاءً كاملاً للاعتماد. تنتمي NSEC3 وقاعدة الشجرة والتركيب العدواني إلى مراحل لاحقة، ولا يجوز نسبها إلى محللات 1987 أو 1998.