يُباع عملان مختلفان كأنهما عمل واحد: تحويل جهاز إلى خادم VPN، وإضافة عميل VPN إلى حاسوب محمول ينبغي أن ينضم إلى بوابة شخص آخر. سكربت التهيئة يجيب عن الأول ولا يستطيع الإجابة عن الثاني، مهما أوحى ملف README الخاص به. خذ مشروع setup-ipsec-vpn مثالا ملموسا: فهو يبني خادما بـ IPsec/L2TP أو Cisco IPsec أو IKEv2 على مضيف لينكس مدعوم باستخدام Libreswan وxl2tpd. هذا عقد نشر لخادم، وليس وصفة عامة لأي جهاز. حدد أي عمل لديك قبل تشغيل السكربت، لأن كل ما يأتي بعده يتعلق بالخادم.

كن صريحا بشأن المضيف

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

تفعيل الخدمة لا يفتح الطريق إليها. بالنسبة إلى IPsec، يجب أن تسمح الشبكة التي أمام المضيف بمنفذي UDP 500 و4500، واعتمادا على النشر، ببروتوكول ESP نفسه. السكربت الذي ينتهي بنجاح خلف مجموعة أمان تُسقط البروتوكول 50 قد أنتج خادما لا يمكن لأحد الوصول إليه، ولن يقول أي شيء في مخرجات المثبت ذلك.

ما يستولي عليه المثبت فعلا

توقع ملف إعداد وأسرار لـ IPsec، وملف إعداد خادم L2TP الخفي، وخيارات PPP، ووحدات systemd تملك الآن تلك المنافذ. يذكر README الخاص بالمشروع أن ملفات الإعداد الموجودة تُنسخ احتياطيا قبل التغييرات، وهذا مفيد وليس الشيء نفسه كنسخة احتياطية للمضيف. حدد المكونات التي ستُحدث عبر حزم التوزيعة وأيها عبر إعادة تشغيل السكربت أو إعادة كتابته، لأن هذين مساران للصيانة بأنماط فشل مختلفة.

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

ما لا يستطيع السكربت تسليمه لك

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

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

العميل الأول هو اختبار القبول

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

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

اكتب صفحة التسليم

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

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

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