تنظیمات OpenVPN روتر پس از ریاستارت برگردانده میشود: مولد را تعمیر کنید
فرمویری که پیکربندی OpenVPN خود را در هر بوت بازسازی میکند، ویرایشهای شما را دور میریزد. قلاب مولد را وصله کنید و سپس فایل تولیدشده را پس از یک ریاستارت مقایسه کنید.
فرمور روی یک روتر مصرفی یا NAS اغلب در هر شروع پیکربندی OpenVPN خود را از نو میسازد، بنابراین دستوری که اضافه میکنید دقیقاً تا بوت بعدی دوام میآورد. همین موضوع دربارهٔ کلیدهایی که در یک فرم وب تایپ میشوند نیز صادق است، جایی که مقدار ذخیرهشده میتواند پس از ذخیره خراب برگردد. هیچیک از این نشانهها به معنای رد شدن تغییر نیست. معنایش این است که ویرایش در فایلی فرود آمده که فرمور آن را خروجی میداند، و جای ماندگار یک گام پیشتر در توالی بوت است.
چرا فایل ویرایششده دوباره تولید میشود
یک اسکریپت شروع، پیکربندی سرور را از یک قالب میسازد و سپس دیمن را اجرا میکند، که فایل رندرشده را به یک مصنوع ساخت تبدیل میکند نه منبع. هر چیزی که پس از شروع اضافه شود برای اجرای بعدی آن اسکریپت نامرئی است. الگوی دوم ظریفتر است: ورودیهای کلید و گواهی در رابط وب به شکلی escapeشده ذخیره میشوند و ذخیرهٔ فرم میتواند آن متن escapeشده را به فایلی که دیمن میخواند براند. در هر دو حالت، پیکربندی رندرشده جای اشتباهی برای یک تغییر ماندگار است.
ببینید توالی بوت چه مینویسد و چه زمانی مینویسد. پاسخ تقریباً همیشه اسکریپتی در پوشهٔ 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 خودش هنگام بوت جایگزین میشود، تغییر باید هر بار که سیستم شروع میشود از قلاب اجرای خودکار فرمور دوباره صادر شود. پس از یک ریاستارت، تعداد رخدادها را در فایل تولیدشده بشمارید: یک خط یعنی وصله کار کرده، و دو خط یعنی قلاب بیش از یک بار اجرا میشود. اجرای دوباره را جداگانه بررسی کنید، چون این همان خطای تغییری نیست که ناپدید شده است.
فرمی را که کلیدهای escapeشده ذخیره کرده تعمیر کنید
در صفحههای به سبک Asus، فیلدهای گواهی و کلید متن escapeشده نشان میدهند و ذخیره پس از یک تغییر بیربط میتواند آن موجودیتها را دوباره روی دیسک بنویسد. از یک نسخهٔ رمزگشاییشده کار کنید و تنها یک بار ذخیره کنید، وقتی همهٔ ویرایشها آماده شد.
openssl dhparam -out dh2048.pem 2048
grep -n "BEGIN DH PARAMETERS" dh2048.pemهنگام جایگزینی مجموعه پارامتر جدید، اگر برچسب بدنهٔ کلید را میخواهد فقط بار base64 را بچسبانید، و خطوط زره را تنها زمانی نگه دارید که فیلد یک بلوک کامل PEM انتظار دارد. بازیابی صفحهای که از قبل در شکل escapeشده ذخیره شده معمولاً یعنی پاک کردن ورودیهای تحتتأثیر و اعمال، که به فرمور اجازه میدهد دوباره آنها را بسازد. هر چیزی بالای 2048 بیت را روی یک ایستگاه کاری تولید کنید، چون تأمین آنتروپی روتر عملیات را کند و گاهی غیرقابلاعتماد میکند. فایل پارامتر را جایی نگه دارید که پس از بازنشانی کارخانه به آن دسترسی داشته باشید.
پس از بهروزرسانیها دوباره بررسی کنید
بهروزرسانیهای فرمور اسکریپتهای init را جایگزین میکنند و میتوانند پوشهٔ اجرای خودکار را پاک کنند، پس وصله باید دوباره نصب و آزمایش شود. فایل بازتولیدشده را با نسخهای که نگه داشتهاید مقایسه کنید و تأیید کنید که دستور دقیقاً یک بار وجود دارد. مقداری که در رابط وب دیده میشود شاهدی بر دریافت آن توسط دیمن نیست، چون صفحه فیلدهای ذخیرهشده را میخواند. فرمان وصله و نسخهٔ فرمور را در یادداشتهای نگهداری بنویسید تا بهروزرسانی بعدی آنها را با خود ببرد.
سپس یک کلاینت وصل کنید و گزارش سرور را برای گزینهٔ فرستادهشده بخوانید. تنظیمی که تنها در یک فرم وجود داشته، تنظیمی است که هیچکس آزمایش نکرده است.