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

جهازان، وسؤالان يجب الإجابة عنهما أولًا

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

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

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

خيار جهة الخادم: حدث لكل اتصال

يعمل سكربت client-connect في سياق عملية الخادم عندما يتصل عميل موثَّق، ويتلقى تفاصيل اتصال موثّقة مثل الاسم الشائع والعنوان المخصص. وهو المكان الصحيح لكتابة جزء إعداد خاص بكل عميل، أو فرض قرار سياسة، أو تسجيل حالة يملكها الخادم.

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

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

خيار جهة العميل: العمل الذي يجب أن يجري محليًا

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

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

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

لماذا لا يُدرج دفع الشيفرة القابلة للتنفيذ في الخيارات

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

تمكين تنفيذ السكربتات محليًا لا يغيّر ذلك. إعداد script-security الخاص بك يسمح بالسكربتات المحلية التي اخترتها؛ ولا يمنح الخادم صلاحية تزويدك بسكربتات جديدة.

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

ما يجب التحقق منه قبل الوثوق بأي من الخطافين

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

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

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