ملف تعريف يحمل مئتي مسار يعمل على جهاز واحد ويثبّت أربعين على جهاز آخر. المحرّك والتكامل الذي يشغّله والخادم الذي يغذّيه، لكلٍّ منها رأي، وكلٌّ منها يستطيع إيقاف القائمة عند نقطة مختلفة. قراءة العطل كأنه حدّ واحد تقودك إلى الملف الخطأ. الآلية ثلاث مراحل، والمرحلة التي توقّفت تترك أثرًا ظاهرًا حين تعرف ما تبحث عنه.

ثلاث مراحل، ثلاثة حدود مختلفة

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

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

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

StageWho decidesWhat you can see
ParseClient engineAn error naming the option
InstallActivation ownerA route count below the pushed count
OfferServer policyA route absent from the pushed list

المحلّل يتكلّم أولًا

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

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

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

المثبّت له سقفه الخاص

المكوّن الذي يملك التنشيط قد يكون إضافة NetworkManager بدلًا من ملف المحرّك الثنائي، وقد يفرض حدّه الخاص قبل وجود أي نفق. قد يعرض محرّره حقلًا لا يقرأه المحرّك العامل أبدًا، أو يقرأ حقلًا لا يعرضه المحرّر. الحالتان تبدوان من الخارج كعطل في العميل. ولا واحدة منهما تُصلَح بتحرير ملف التعريف.

عُدّ ما وصل بدلًا من الذي ضُبط. الأمر ip route show dev tun0 يسرد المسارات المثبّتة، ومقارنة ذلك العدد بالقائمة المدفوعة تفصل المسار المُهمَل عن مسار لم يُرسَل أبدًا. العدد الذي يطابق الدفع يعيد الشك إلى الخادم.

غلاف صدفة حول الملف الثنائي للمحرّك لفرض رقم أكبر يعتّم الترقيات ويجعل التراجع تخمينًا. كما يخفي الحدّ الحقيقي عن كل من يقرأ الإعداد بعده.

الخادم يقرّر ما عُرض عليك

سياسة لكل عميل قد تقلّص القائمة قبل إرسالها. ملف خاص بعميل قد يضيف مسارات لهوية واحدة، أو قد تحذفها سياسة مجموعة، ولا يستطيع العميل تمييز مسار حُجب عن مسار لم يُعرَّف قط. هذا الالتباس هو سبب أهمية سجل الخادم. اطلب قائمة الدفع الفعلية لتلك الهوية، لا القالب.

قارن سجل الخادم بالقائمة المستلمة. الفجوة بينهما هي طبقة السياسة، وهي عادة أصغر مما يوحي ملف التعريف.

حين يسمح التصميم، اجمع الشبكات المتلاصقة واحذف المدخلات القديمة. مسارات أقل وأكبر تحلّ حالات أكثر من سقف أعلى.

غيّر الرقم في المكان الصحيح

استخدم الإعداد الموثّق للمكوّن الذي يملك الحدّ فعلًا. إن كان الحقل غائبًا من الإضافة، فتحقّق هل الإضافة أقدم من الميزة أو هل يملك مكوّن آخر المسارات. ثم وثّق نسخ المحرّك والإضافة والخادم بجانب القيمة التي اخترتها. الترقية التالية تعيد فتح السؤال، والملاحظة هي ما يجعله قابلًا للإجابة.

أعد الاختبار بعد أي ترقية لأي من الثلاثة. الحدّ المرفوع في المكان الصحيح يتحرّك مع ذلك حين يتغيّر المكوّن الذي يفرضه. سجل الإصدارات هو الشيء الوحيد الذي يجعل تلك الحركة متوقّعة.

مقالات ذات صلة