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

إغلاق بوابة أمام الاتصالات الصادرة أمر صحيح. لكن إغلاقها بإحكام شديد حتى تتوقف عن تلقي الرقع قرار آخر، وعادة ما يكون قرارًا غير مقصود.

الخرج المحلي ليس تمرير العملاء

تنظّم قواعد التمرير الحزم التي تصل من مكان آخر وتغادر عبر البوابة. حركة تحديث البوابة نفسها لا تطابقها أبدًا؛ فهي تُولَّد محليًا وتسلك مسار الخرج. هذا التمييز يفسّر عطلًا يبدو مستحيلًا بينما يعمل وصول العملاء بشكل مثالي.

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

سمِّ المرحلة التي فشلت

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

getent hosts deb.debian.org
curl -sSI https://deb.debian.org/debian/dists/stable/Release | head -n 1
apt-get -o Debug::Acquire::https=true update

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

اقرأ قائمة المصادر قبل إضافة قاعدة

اسرد معرّفات URI الحقيقية للمصادر وإعداد الوكيل الفعلي، لا التي تتذكرها. القاعدة المكتوبة لـ HTTP البسيط لا فائدة منها عندما يكون المصدر HTTPS، وقد يكون الوكيل الذي تعرفه الصدفة غير مرئي لخدمة تُشغَّل عند الإقلاع ببيئة مختلفة.

توثيق نقل HTTP في APT يغطي إعدادات الوكيل البيئية والخاصة بـ APT، بما في ذلك الاختيارات لكل مضيف، ولنقل HTTPS إعدادات تحقق خاصة به. مسار المتصفح ومسار مدير الحزم مساران منفصلان، حتى على الجهاز نفسه.

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

اختر مسار صيانة واحدًا والتزم به

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

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

تحقّق دون إضعاف الفحوص

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

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

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

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