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

لماذا يُعاد توليد الملف المعدَّل

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

انظر إلى ما يكتبه تسلسل الإقلاع ومتى يكتبه. الجواب دائمًا تقريبًا سكربت داخل دليل init أو التشغيل التلقائي في البرامج الثابتة.

أدرج التوجيه حيث يبني السكربت الملف

تعيد أجهزة QTS توليد إعداد خادم OpenVPN داخل سكربت init الذي يشغّل الخدمة، لذا يجب أن يحدث التعديل هناك. أضف الإلحاق قبل أمر بدء التشغيل مباشرةً بدل تحرير الملف المُولَّد.

sed -i '/daemon_mgr/i echo client-config-dir clientconfig >>/etc/openvpn/server.conf' /etc/init.d/vpn_openvpn.sh
grep -c client-config-dir /etc/openvpn/server.conf

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

أصلح نموذجًا خزّن مفاتيح مهرَّبة

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

openssl dhparam -out dh2048.pem 2048
grep -n "BEGIN DH PARAMETERS" dh2048.pem

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

أعد الفحص بعد الترقيات

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

ثم اتصل بعميل واقرأ سجل الخادم بحثًا عن الخيار المدفوع. الإعداد الذي وُجد في نموذج فقط هو إعداد لم يختبره أحد.

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