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

قبل تشخيص أي من ذلك، حدد واجهة البرمجة التي ينبغي أن تستخدمها. نفق IPsec أو IKEv2 الخاص بالنظام يناسب المدير المدمج؛ أما بروتوكول لا ينفذه النظام فيحتاج مزود نفق يتولى معالجة الحزم بنفسك، ولا يغير أي مزيج من الحقول ذلك.

المدير واجهة عرض على مخزن

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

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

تغييرات الحالة تصل فقط بينما تنظر

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

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

الأسرار مراجع لا نصوص

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

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

الإضافة لها عرضها الخاص على سلسلة المفاتيح

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

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

طابق واجهة البرمجة مع البروتوكول

يحمل المدير المدمج كائنات بروتوكول IPsec وIKEv2. وهو لا يتحول إلى عميل SSL VPN عام عبر حقول إضافية، وملف شخصي غير مطابق قد يُحفظ بلا خطأ ومع ذلك لا يتصل أبدًا. حدد الفئة التي تنتمي إليها قبل التحقيق في الحالة، لأن خلل الحالة والبروتوكول غير المدعوم يبدوان متطابقين من الخارج.

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

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