پروفایل دانلود می‌شود، وارد می‌شود و سپس در خط 12 فایل با پیام Unrecognized option متوقف می‌شود که در آن keysize نام برده شده است. هیچ چیز در حساب تغییر نکرده و سرور همچنان کلاینت‌های دیگر را می‌پذیرد. آنچه تغییر کرده خود کلاینت است: Ubuntu 24.04 نسخهٔ OpenVPN 2.6 را نصب می‌کند، در حالی که خروجی برای 2.4 نوشته شده بود. تعمیر، زنجیره‌ای کوتاه از حذف‌هاست و ترتیب اهمیت دارد، چون هر گزینهٔ قدیمی تجزیه را پیش از خوانده‌شدن گزینهٔ بعدی متوقف می‌کند.

پیش از دست‌زدن به فایل، خط خطا را بخوانید

OpenVPN فایل و خطی را که تجزیه در آن متوقف شده نام می‌برد، پس در هر اجرا فقط می‌توانید یک مشکل را درست کنید. پروفایل را از ترمینال اجرا کنید نه از اپلت رومیزی، چون اپلت معمولاً stderr را می‌بلعد و شمارهٔ خط تنها نشانهٔ قابل‌اعتمادی است که به دست می‌آورید: sudo openvpn --config /etc/openvpn/client/provider.ovpn. همان خط را درست کنید، دوباره اجرا کنید و انتظار داشته باشید خطای بعدی گزینهٔ دیگری را نام ببرد.

خطای تجزیه همیشه پیش از هر دست‌دادن TLS ظاهر می‌شود، پس پیامی که به گواهی اشاره می‌کند از مرحلهٔ نحو گذشته است. همین تمایز مانع می‌شود فایلی را ویرایش کنید که فقط در احراز هویت شکست می‌خورد. اولین کلمهٔ پیام را بخوانید، نه میانهٔ آن را.

سه دسته خطا، سه تعمیر متفاوت

خروجی‌های قدیمی به سه شکل قابل‌تشخیص شکست می‌خورند و همین یکی‌کردن آن‌ها در یک مشکل است که مردم را به نصب دوبارهٔ بسته‌هایی وا می‌دارد که هرگز خراب نبوده‌اند. جمله‌بندی پیام پیش از بازکردن فایل به شما می‌گوید در کدام دسته هستید.

  • خطاهای تجزیه یک فایل و یک خط را نام می‌برند و پیش از آنکه هر ترافیکی وجود داشته باشد متوقف می‌شوند.
  • خطاهای مذاکره وصل می‌شوند و سپس گزارش می‌دهند که دو طرف بر سر یک رمزنگاری مشترک یا یک کانال دادهٔ قابل‌قبول توافق نکرده‌اند.
  • خطاهای احراز هویت دورتر می‌روند و یک گواهی، یک کاربر یا یک اعتبارنامهٔ ردشده را نام می‌برند.

ویرایش پروفایل فقط دستهٔ اول را درست می‌کند. مذاکره به تصمیمی در دو سر تونل نیاز دارد و اعتبارنامهٔ ردشده اصلاً مشکل نحو نیست. اگر پیام شما رمزنگاری مشترک یا کانال داده را ذکر می‌کند، حذف‌های زیر هیچ چیزی را تغییر نمی‌دهند.

گزینه‌هایی را که 2.6 حذف کرده، به این ترتیب پاک کنید

هر یک از این خطوط به‌تنهایی تجزیه را متوقف می‌کند، پس کلاینت آن‌ها را یکی‌یکی گزارش می‌دهد. فهرست را پایین بروید و پس از هر حذف دوباره اجرا کنید.

ابتدا keysize را حذف کنید، چون معادل مدرنی ندارد و وجودش معمولاً نشانهٔ رمزنگاری‌ای است که کلاینت کنونی به‌هرحال رد می‌کند. سپس ncp-disable را حذف کنید که مذاکرهٔ رمزنگاری را کنترل می‌کرد، در 2.5 منسوخ شد و در 2.6 وجود ندارد. ns-cert-type server را با remote-cert-tls server جایگزین کنید که همان قصد را از طریق بررسی پشتیبانی‌شده بیان می‌کند. تاریخچهٔ تغییرات 2.6 حذف‌های باقی‌مانده را کنار جانشین‌هایشان فهرست می‌کند، پس هر چیزی که تجزیه‌گر هنوز رد می‌کند پاسخی مستند دارد.

پیش از نخستین ویرایش یک نسخه از پروفایل اصلی نگه دارید. ارائه‌دهندگان خروجی‌ها را دوباره تولید می‌کنند و diff با فایل دست‌نخورده سریع‌ترین راه جدا کردن تغییرات شما از تغییرات آن‌هاست. اگر حذفی به کلاینت اجازهٔ شروع بدهد اما تونل همچنان شکست بخورد، به دستهٔ مذاکره وارد شده‌اید و خطوط باقی‌مانده علت نیستند. نسخهٔ کلاینت را در نام فایل بگذارید تا نفر بعد بداند ویرایش‌ها برای کدام انتشار است.

BF-CBC را فقط به‌عنوان جایگزینی محدود در حال کار نگه دارید

برخی ارائه‌دهندگان هنوز روی BF-CBC پایان می‌دهند، که OpenVPN 2.6 بدون کمک بر سرش مذاکره نمی‌کند، چون این رمزنگاری بلوک 64 بیتی دارد. تعمیر باریک، یک فهرست جایگزین به‌همراه ارائه‌دهندهٔ قدیمی OpenSSL است، نه تنزل دادن کل کلاینت.

providers legacy default
data-ciphers AES-256-GCM:AES-128-GCM
data-ciphers-fallback BF-CBC

خط اول ارائه‌دهندهٔ قدیمی را بارگذاری می‌کند تا OpenSSL هنوز بتواند آن رمزنگاری را بسازد، خط دوم مذاکرهٔ مدرن را برای همتایانی که آن را پشتیبانی می‌کنند نگه می‌دارد و خط سوم فقط زمانی اعمال می‌شود که سرور چیزی بهتر پیشنهاد نکند. این تضعیف عامدانهٔ تونل است، پس کنار فایل بنویسید چرا وجود دارد. همزمان از ارائه‌دهنده خروجی تازه‌تولیدشده بخواهید، چون جایگزین یک پل است نه مقصد.

برای --compat-mode به‌عنوان پاسخ همه‌منظوره دست نبرید. چند رفتار را همزمان تغییر می‌دهد، از جمله پیش‌فرض‌های مذاکره و مذاکرهٔ دوباره، پس هرگز نمی‌فهمید کدام تغییر مهم بود. سه خط صریح بالا را ترجیح دهید، چون هر یک اثر خودش را اعلام می‌کند.

با پروفایلی که کلاینت واقعاً بارگذاری می‌کند بررسی کنید

اتصال‌های واردشده اغلب به پوشهٔ سیستم کپی می‌شوند، پس ویرایش فایل در پوشهٔ دانلود ممکن است هیچ چیزی را تغییر ندهد. نسخه‌ای را که اجرا می‌شود پیدا کنید: sudo grep -rl "remote " /etc/NetworkManager/system-connections /etc/openvpn. سپس تونل را آغاز کنید و خط گزارش را بخوانید که می‌گوید کدام رمزنگاری کانال داده واقعاً انتخاب شده است. اتصالی که دست‌دادن را روی جایگزین کامل می‌کند به شما می‌گوید سرور هرگز چیز مدرنی پیشنهاد نکرده است.

از شبکه‌ای آزمایش کنید که همان شبکهٔ مورد انتظار ارائه‌دهنده نیست، تا یک درگاه اسیر یا شبکهٔ مهمان فیلترشده به‌شکل نقص پروفایل درنیاید. نسخهٔ کلاینت را همراه هر درخواست پشتیبانی ثبت کنید.

وقتی تونل برپا شد، یک درخواست بفرستید که باید از آن عبور کند و یکی که نباید، سپس تأیید کنید پاسخ حل‌کننده همان‌طور که انتظار داشتید تغییر کرده است. اگر پروفایل اکنون تجزیه می‌شود اما اتصال همچنان شکست می‌خورد، مشکل نحو را پشت سر گذاشته‌اید و متن خطا دستهٔ تازه را نام می‌برد. فایل ویرایش‌شده را همراه یادداشتی که انتشار هدف OpenVPN را نام می‌برد در کنترل نسخه نگه دارید.

مقالات مرتبط