مسیر VPN گمشده در NetworkManager: سیاست پروفایل یا یک اسکریپت؟
تونل وصل میشود و یک پیشوند هرگز ظاهر نمیشود. پیش از افزودن یک اسکریپت کمکی، بین سیاست پروفایل، دادههای افزونه و یک مالک دوم مسیر تصمیم بگیرید.
وصل میشوید، رابط تونل ظاهر میشود، و یک پیشوندی که لازم دارید بهسادگی در جدول نیست. قدم بعدی معمولاً جستوجو برای اسکریپتی است که آن را اضافه میکند. آن جستوجو به پاسخهایی میرسد که یک کمککنندهٔ OpenVPN را داخل پروفایل میچسبانند، و نیمی از آن پاسخها وضعیت را بدتر میکنند نه بهتر، چون یک مسیر گمشده سه مالک ممکن دارد و تنها یکی از آنها یک اسکریپت گمشده است.
پیش از نوشتن هر چیزی تصمیم بگیرید کدام مالک مسئول است.
سه مالک، یک پیشوند گمشده
پیشوند میتواند غایب باشد چون هیچکس آن را تأمین نکرده، چون پروفایل آن را رد کرده، یا چون جایی نصب شده که شما نگاه نمیکنید. اینها خطاهای متفاوتی هستند و رفعهای متفاوتی دارند.
اولی آسانترین برای بررسی است: آیا سرور یا افزونه هرگز مسیر را ارائه کرد؟ بکاندی که هرگز پیشوند را دریافت نکرده نمیتواند آن را نصب کند، و یک اسکریپت کمکی نمیتواند دسترسپذیریای را از خود بسازد که همتا هرگز توصیف نکرده است. دومی سیاست پروفایل است، که میتواند مسیرهایی را که اتصال در غیر این صورت میگرفت سرکوب کند. سومی یک جدول یا قاعده است، که میتواند مسیر را جایی نگه دارد که جستوجوی پیشفرض هرگز به آن مراجعه نمیکند.
مالک چهارم خود شما هستید، بعداً: اسکریپتی که مسیر را هنگام اتصال اضافه میکند اما هنگام قطع اتصال آن را حذف نمیکند. این پیشوندی میسازد که از تونل عمر بیشتری میکند، به یک رابط مرده اشاره میکند و نفر بعدی را که ماشین را اشکالزدایی میکند سردرگم میکند.
پیش از افزودن هر چیزی پروفایل را بخوانید
با ویژگیهای خودِ اتصال ذخیرهشده شروع کنید. آنها را بدون ریختن اسرار بخوانید، و اگر نام پروفایل مبهم است از UUID استفاده کنید.
nmcli -f vpn.service-type,ipv4.never-default,ipv4.ignore-auto-routes,ipv4.route-table,ipv4.routes connection show office
vpn.service-type به شما میگوید کدام بکاند مالک اتصال است، و این مهم است چون دادههای افزونه مخصوص بکاند است. کلیدی که یک افزونه میپذیرد دستور پشتیبانیشده برای افزونهٔ دیگری نیست، پس قطعهای که از مستندات کلاینت دیگری کپی شده شواهد هیچ چیز نیست.
ipv4.ignore-auto-routes و ipv4.never-default به پرسشهای متفاوتی پاسخ میدهند. اولی میتواند مسیرهایی را که اتصال در غیر این صورت بهطور خودکار میگرفت رد کند، و دومی کنترل میکند که آیا پروفایل میتواند مسیر پیشفرض شود. پروفایلی که مسیرهای خودکار را نادیده میگیرد و به چیز دیگری تکیه نمیکند بهتمیزی وصل میشود و تقریباً هیچ چیز نصب نمیکند.
ip -4 rule show
ip -4 route show table all
این دو فرمان احتمال سوم را روشن میکنند. پیشوند خود را در هر جدول جستوجو کنید، نه فقط در main، و بررسی کنید آیا یک قاعدهٔ سیاست جستوجوی مربوط را جای دیگری میفرستد. اگر پیشوند در جدول دیگری هست و هیچ چیز آن را مراجعه نمیکند، مسیر گمشده ندارید؛ جستوجویی دارید که هرگز به آن نمیرسد.
چیزی که یک اسکریپت نمیتواند درست کند
افزودن یک اسکریپت کمکی به vpn.data در NetworkManager برنامهای برای اجرا میدهد. این سازوکار واقعی است، و برای بیشتر این موارد سازوکار اشتباه است، چون اسکریپت کنترل را پس از آن میگیرد که سیاست خود پروفایل قبلاً تصمیم گرفته چه چیزی را بپذیرد.
script-security در OpenVPN سردرگمی تکرارشوندهٔ دیگر است. این تنظیمی در OpenVPN است که تعیین میکند کلاینت کدام اسکریپتها را میتواند اجرا کند و چه چیزی را میتواند در محیط آنها بگذارد؛ سطح 3 اجازه میدهد اعتبارنامهها از طریق محیط منتقل شوند، که تصمیمی دربارهٔ مدیریت اسرار است نه اصلاح مسیریابی. چسباندن آن در پروفایلی که بکاندش OpenVPN نیست، یا بالا بردن آن وقتی هیچ اسکریپتی به آن نیاز ندارد، مواجهه را زیاد میکند بدون افزودن مسیر.
سپس رفلکس راهاندازی مجدد هست. راهاندازی مجدد سرویس NetworkManager هر پیوند مدیریتشده را از بین میبرد و بازسازی میکند، از جمله همان پیوندی که اگر از راه دور کار میکنید از طریق آن وصل هستید. این اقدامی اخلالگر است، نه یک تشخیص بیضرر، و روی یک سرور میتواند تفاوت میان نشستی که زنده میماند و نشستی که نمیماند باشد.
تصمیم، به ترتیب
سه پرسش را به ترتیب بپرسید. آیا همتا پیشوند را تأمین کرد، که گزارش بکاند یا خروجی وضعیت خودش نشان خواهد داد؟ اگر بله، آیا پروفایل برای پذیرش و نصب مسیرها پیکربندی شده یا آنها را سرکوب میکند؟ اگر مسیر جایی وجود دارد، آیا مسیر جستوجو برای ترافیکی که آزمایش میکنید درست است؟
تنها وقتی پاسخ اول بله است، دومی بله است و سومی درست است، یک اسکریپت تکمیلی قابل دفاع میشود، و حتی آنگاه باید بپرسید آیا بکاند مسیر را بهطور بومی پشتیبانی میکند. مرجع تنظیمات VPN service-type و فرهنگ دادهٔ مخصوص افزونه را مستند میکند، و پیش از فرض وجود یک کلید باید از همانجا شروع کرد.
پس از یک اصلاح تأییدشده، دوباره وصل شوید و مقصد را ابتدا با نشانی و سپس با نام بیازمایید، سپس قطع کنید و دوباره وصل شوید تا تأیید کنید وضعیت تکرارپذیر است. یک مالک، یک جدول، و مسیری که با تونل ناپدید میشود نتیجهای است که ارزش داشتن را دارد.