استثناءات VPN لكل تطبيق تتعطل عندما تجلب خدمة مشتركة البيانات
النافذة التي استثنيتها ليست دائماً العملية التي تفتح الاتصال. ابحث عن مقدّم الطلب الحقيقي قبل إضافة مساعد إلى قاعدة VPN خاصة بكل تطبيق.
تستثني تطبيقاً واحداً من VPN، ومع ذلك يفشل التنزيل الذي يحتاجه، أو الأسوأ من ذلك، يبدأ بالعمل ويتوقف شيء لا علاقة له به. النافذة المرئية ليست بالضرورة العملية التي تفتح كل اتصال: فقد يسلّم التطبيق العمل إلى مساعد أو خدمة نقل في الخلفية أو حزمة أخرى تماماً. لذلك تحتاج قاعدة كل تطبيق إلى نموذج الهوية الحقيقي للمنصة بدلاً من اسم ملف تشغيل مألوف. تبدأ الفحوص أدناه من الملاحظة وتعود إلى من قدّم الطلب فعلاً.
يحدث أمران معاً عادة في هذه التذاكر: يُستثنى المكوّن الخطأ، ولا يُضيَّق الاستثناء أبداً بعد ذلك.
ابحث عن العملية، لا عن النافذة
أعد إنتاج العملية الفاشلة وحدّد العملية أو الحزمة التي تملك الاتصال أثناء حدوثه. على Windows يختلف هذا السؤال عن سؤال النافذة التي تحمل التركيز، لأن النقل في الخلفية قد تتوسطه خدمة تعمل بهويتها الخاصة. على Linux وmacOS يظهر الانقسام نفسه كعمليات مساعدة وخوادم نظام.
دوّن ثلاثة تفاصيل: هوية الملف التنفيذي أو الحزمة، والوجهة التي كان يتصل بها، ولحظة حدوث ذلك في سير العمل. التنزيل الذي يفشل في البداية يكون غالباً جلب بيانات وصفية بواسطة مكوّن مختلف عن التنزيل الذي يفشل في منتصفه. هذا التمييز وحده يكفي عادةً لاختيار الهوية الصحيحة قبل أن تمس القاعدة. وإذا تبين أن الهوية خدمة وليست تطبيقاً، فإن هذه الحقيقة الواحدة تغيّر القاعدة بأكملها، لذا أثبتها أولاً.
إذا لم تستطع ملاحظة العملية لأنها قصيرة جداً، فأعدها بحمولة أكبر أو بوجهة أبطأ. الهدف ملاحظة واحدة قابلة للتكرار، لا نظرية عن المساعد المعني.
تعامل مع DNS كمسار مستقل
قد لا يتبع حل أسماء النظام التطبيق المستثنى إطلاقاً، ولهذا يمكن أن يفشل متصفح مستثنى على اسم مضيف خاص بينما تكون حركته خارج النفق بشكل صحيح. المتصفح استُثني، أما المفسّر فلم يُستثنَ.
افحص ما تفعله المنصة بـ DNS عند تطبيق قاعدة كل تطبيق، وافحصه منفصلاً عن طلب HTTP. إذا كان المفسّر خدمة مشتركة، فإنه يخدم كل تطبيق على الجهاز، لذا فإن الاستثناء الذي تفكر فيه له جمهور أوسع بكثير من الذي اختبرته.
سجّل أي مفسّر أجاب وعبر أي واجهة. هذه الملاحظة الواحدة تحل حصة كبيرة من تقارير «التطبيق مستثنى لكن الاسم لا يُحل»، لذا احتفظ بها مع التذكرة.
لا توسّع مساعداً مشتركاً
تؤدي الخدمة المشتركة عملاً لعدة تطبيقات، لذا فإن استثناءها لإصلاح سير عمل واحد يغيّر حركة غير ذات صلة أيضاً. خدمة النقل الذكي في الخلفية على Windows مثال جيد على هذا الشكل: فهي بنية تحتية يمكن لكثير من التطبيقات استخدامها، وهويتها ليست هوية التطبيق الذي طلب النقل.
افحص نموذج القواعد الذي يدعمه العميل ومتطلبات المؤسسة قبل إضافة هذا الاستثناء. اسأل عمّا يستخدم المكوّن أيضاً، وعمّا إذا كان يمكن التعبير عن القاعدة التي أنت على وشك كتابتها مقابل وجهات بدلاً من مقابل عملية مشتركة.
إذا تعذر التعبير عن المتطلب كحدود تطبيق على الإطلاق، فقد تكون سياسة قائمة على الوجهة أو تصميم آخر معتمد أكثر فهماً وأكثر أماناً من قائمة متنامية من استثناءات المساعدات.
اختبر سير العمل كاملاً، لا الخطوة الفاشلة
بعد تغيير مدعوم، شغّل المهمة المقصودة بطلب جديد من البداية إلى النهاية. ثم شغّل سير عمل آخر يستخدم المكوّن المشترك، لأن هناك يعلن التجاوز الواسع عن نفسه. الإصلاح الذي يصلح الأول ويكسر الثاني بصمت ليس إصلاحاً. احتفظ بالنتيجتين في التذكرة وسمّ سير العمل الثاني صراحةً، حتى يتمكن المراجع من تكراره.
أبقِ الاختبار صغيراً وقابلاً للتكرار: نفس الوجهة، نفس الحساب، نفس الظروف. إذا لم يكن سير العمل الثاني موثقاً، فاسأل مالكه عمّا يعتمد عليه قبل أن تقرر أن التغيير آمن.
اترك سبباً، لا قائمة أسماء
وثّق المكوّن وسير العمل الذي يخدمه وسبب استثنائه. تصبح قائمة أسماء المساعدين بلا غرض مرتبط بها غير قابلة للصيانة خلال دورتَي إصدار، ويحذف المهندس التالي الإدخال الخطأ أثناء تنظيفها.
سطر واحد لكل استثناء يكفي: ما الذي ينكسر بدونه، ومن يملك سير العمل ذلك، ومتى جرى التحقق منه آخر مرة. هذه الحقول الثلاثة تحوّل قائمة غامضة إلى سياسة يستطيع أحد الدفاع عنها.