الـVPN الثانوي ينتمي إلى ملف Wi-Fi واحد، لا إلى كل الملفات
الـVPN الثانوي هو UUID مرتبط باتصال أساسي واحد. خطط لكيفية وراثة ملفات Wi-Fi المستقبلية له، وما يحدث عند استبدال ذلك UUID.
اضبط الـVPN كعنصر ثانوي لاتصال Wi-Fi المنزلي وسيعمل كل شيء، إلى أن ينضم الحاسوب المحمول إلى نقطة وصول مختلفة فيبقى النفق متوقفًا. الاتصال الجديد كائن تهيئة منفصل له UUID خاص به، وليس لديه سبب ليعرف الرابطة التي أنشأتها لسابقه. لم يتعطل شيء؛ فالارتباط ببساطة لم يكن موجودًا قط.
يعرّف مرجع اتصالات NetworkManager العناصر الثانوية بأنها معرّفات UUID تُفعَّل مع اتصال أساسي معيّن. ويشير أيضًا إلى أن ملفات الـVPN العادية لا تنفّذ التفعيل التلقائي كما تفعل اتصالات الأساس. يقود البيانان إلى النتيجة نفسها: الارتباط خاص بكل ملف، وعلى أحدهم إنشاؤه لكل ملف جديد.
ما هو العنصر الثانوي فعليًا
لاتصال الأساس هوية وUUID وقائمة من العناصر الثانوية. وعند تفعيله يفعّل المدير تلك العناصر الثانوية بالترتيب، وهكذا يتبع الـVPN شبكة Wi-Fi دون نقر يدوي. تعيش العلاقة على اتصال الأساس، مكتوبة كسلاسل UUID لا كأسماء. واختيار هذا التمثيل ليس عرضيًا؛ فهو ما يجعل الارتباط يصمد أمام إعادة التسمية.
تلك التفصيلة عن الأسماء تهم أكثر مما تبدو. إعادة تسمية ملف VPN تترك UUID الخاص به دون مساس، لذا تستمر الارتباطات القائمة في العمل. أما حذف الملف القديم واستيراد ملف جديد فينتج UUID جديدًا، وكل ارتباط كان يشير إلى القديم أصبح يشير إلى لا شيء.
افحص القائمة القائمة قبل الإضافة. ملف منزلي يحمل عنصرًا ثانويًا واحدًا ليس قاعدة تنطبق على كل SSID؛ إنه صف واحد في كائن واحد، ولن يُستشار عند تفعيل أساس مختلف.
ضع الارتباط حيث تُنشأ الملفات
على جهاز شخصي، اجعل ربط العنصر الثانوي المقصود جزءًا من إضافة كل ملف Wi-Fi مسموح. هذه عادة لا ميزة، لكنها عادة تنتج حالة متسقة، وتكلف أمرًا واحدًا أو زيارتين لنافذة حوار لكل شبكة. واحتفظ بملاحظة قصيرة بالشبكات التي يُفترض أن تحمل النفق، لأن القائمة هي السياسة.
على الأجهزة المُدارة، اجعل سير عمل التزويد ينشئ إدخال Wi-Fi وارتباط الـVPN في الخطوة نفسها، وطبّق المعاملة نفسها على الملفات المسموح بها الموجودة أصلًا. توزيع ملف VPN بمفرده يترك علاقات الأساس غير محددة، وهكذا ينتهي أسطول بنفق يستخدمه نصف الحواسيب فقط.
حيث لا يزال بإمكان المستخدمين إنشاء ملفات خارج المسار المُدار، قرّر صراحةً ما يحدث لتلك الإدخالات. افتراض أنها ترث ارتباطًا ليس سياسة؛ إنه أمل تترتب عليه تكلفة دعم.
خطّط لتغيّر هوية الـVPN
يحتاج مصدر التزويد إلى UUID الـVPN المقصود، لا إلى اسم عرض خمّنه أحد. وعندما يستبدل الصيانة ذلك الـVPN بكائن مستورد حديثًا، حدّث قالب التزويد والارتباطات القائمة المتأثرة في التغيير نفسه. إعادة التسمية ليست استبدالًا، ومعاملة الاثنين كمتكافئين هي كيف ينكسر نشر ناجح بعد أسبوع.
خزّن UUID بجوار السبب الذي وُجد من أجله. مهندس مستقبلي يعثر على UUID مجرد في قائمة عناصر ثانوية لا يملك وسيلة لمعرفة ما إذا كان ساريًا، ومن المرجح أن يحذفه أثناء الترتيب.
التفعيل ليس فرضًا
يحدث طلب العنصر الثانوي في وقت التفعيل. وهو لا يحجب التطبيقات خلال الفترة قبل اكتمال المصادقة، ولا يوقف حركة المرور بعد فشل النفق. هاتان خاصيتان مختلفتان توفرهما آليتان مختلفتان، والخلط بينهما ينتج تصميمًا يبدو صارمًا في الملف ومتساهلًا في الممارسة.
حجب حركة المرور المباشرة ميزة منفصلة لها تهيئتها وأنماط فشلها، وعليها أن تراعي حركة المرور التي يجب أن تصل إلى الشبكة قبل وجود أي نفق: بوابات الاحتجاز، وصفحات تسجيل الدخول، ونقطة النهاية نفسها. سياسة حجب لا يمكن تلبيتها قبل المصادقة تقفل الجهاز خارج الشبكة التي يحتاجها بالضبط.
ضع ذلك التمييز في التعليمات التي يقرأها المستخدمون فعلًا. يمكن لشبكة Wi-Fi جديدة أن تطلب النفق؛ والفرض يقرر ما إذا كان يُسمح بخروج أي شيء عندما يتعذر الاتصال. المستخدمون الذين يُخبرون بالنصف الأول فقط سيبلغون عن التصميم كأنه معطّل.
اختبر بملف جديد حقًا
استخدم شبكة اختبار معتمدة وملف أساس منشأًا حديثًا، لا الإدخال المنزلي الذي يعمل بالفعل. راقب تفعيل الأساس، وUUID الثانوي المطلوب، وأي مطالبة مصادقة بالتتابع، وسجّل أي مرحلة تتعطل عندما تتعطل. الوكيل السري الذي يصبح متاحًا بعد تسجيل الدخول إلى سطح المكتب ليس حاضرًا تلقائيًا في كل سياق بدء تشغيل، لذا فإن إعادة التشغيل تنتمي إلى خطة الاختبار. ثم افحص المورد المقصود ومسار الفشل: هل يرتفع النفق قبل أن يحتاجه التطبيق، وماذا يحدث لذلك التطبيق عندما تفشل المصادقة؟
ثم افحص المورد المقصود ومسار الفشل: هل يرتفع النفق قبل أن يحتاجه التطبيق، وماذا يحدث لذلك التطبيق عندما يتعذر على النفق المصادقة؟ هاتان الملاحظتان هما معياري القبول، ولا واحدة منهما مرئية في الملف نفسه.