برنامهٔ VPN سازنده در برابر NetworkManager: مالکیت وضعیت از کیست؟
نمایه یک افزونه را نام میبرد، نه رفتار کارخواه سازنده را. پیش از تغییر یک لپتاپ مدیریتشده، نقشهٔ مالکیت ثبتنام، DNS، مسدودسازی و بهروزرسانیها را روشن کنید.
وارد کردن نمایه با جایگزین کردن یک کارخواه یکی نیست. NetworkManager نوع افزونه را همراه با داده و رازهای ویژهٔ افزونه ذخیره میکند، و افزونهای که مالک آن نوع است تعیین میکند اتصال چه کاری میتواند انجام دهد. هر چیزی که برنامهٔ سازنده روی آن میگذارد، از ثبتنام تا مسدودسازی همیشگی، بیرون از فایل زندگی میکند. اینکه تغییر ایمن باشد به این بستگی دارد که واقعاً به کدامیک از این لایهها تکیه میکنید.
فایل یک افزونه را نام میبرد، نه مجموعهای از قابلیتها
مرجع تنظیمات VPN در NetworkManager نوع سرویسی را توصیف میکند که افزونه را انتخاب میکند، بههمراه یک واژهنامهٔ دادهٔ مبهم و یک واژهنامهٔ رازها که تنها افزونه آنها را تفسیر میکند. نمایه قراردادی با یک پیادهسازی است، نه توصیف رفتاری که هر کارخواهی بتواند بازتولید کند. دو کارخواه میتوانند یک پروتکل را صحبت کنند و باز هم در آنچه مذاکره میکنند و کدام مسیرهای داده را فعال میکنند تفاوت داشته باشند. برچسب پروتکل به شما میگوید تونل چیست، هرگز نمیگوید کارخواه اطرافش با آن چه میکند.
پس الزامها را مقایسه کنید، نه پوششها را. پرسش این نیست که آیا جایگزین میتواند متصل شود، چون معمولاً میتواند؛ پرسش این است که آیا هر الزامی که کارخواه اصلی را پذیرفتنی میکرد از این جابهجایی جان سالم به در میبرد. آن الزامها را پیش از نصب هر چیزی بنویسید، وگرنه مقایسه به شکار آنچه اول میشکند تبدیل میشود.
آنچه برنامهٔ سازنده پیرامون تونل میافزاید
کارخواههای سازندگان معمولاً ثبتنام و بررسیهای وضعیت دستگاه، جریان عامل دوم با رابط خودش، مسدودسازی همیشگی، یک کانال بهروزرسانی و ابزارهای پشتیبانی را یکجا بستهبندی میکنند. بخشی از آن کنار پروتکل مینشیند و بخشی محصولی جداست که فقط نصبکننده را شریک میشود. NetworkManager میتواند تونل و مسیریابی آن را جایگزین کند، و اسکریپتهای فرستنده میتوانند هنگام تغییر وضعیت اتصال کنشهایی را اجرا کنند. اما موتور مسدودسازی، جریان تمدید گواهی یا این فرض را که کدام کاربر میتواند اتصال را بالا بیاورد بازتولید نمیکند.
اجزای بیشتر به معنای امنتر نیست، و کمتر به معنای ضعیفتر نیست. پرسش این است که کدام جزء سیاستی را اجرا میکند که به شما گفته شده پیروی کنید. اگر بازرسی بپرسد وقتی تونل میافتد چه چیزی ترافیک را مسدود میکند، پاسخ باید چیزی را نام ببرد که واقعاً این کار را میکند، و نمایهای که فقط متصل میشود آن پاسخ نیست.
کجا مالکیت واقعاً تفاوت میکند
این را بهعنوان نقشهٔ مالکیت بخوانید نه فهرست وارسی، چون شکستهای زیر شکافهای مالکیتاند و هیچ مقدار پیکربندی کارخواه آنها را نمیبندد. هر ردیف لایه را نام میبرد، سویی که امروز معمولاً آن را نگه میدارد، و جایی که شکاف نخست آشکار میشود.
| Layer | Vendor application | NetworkManager connection | Where the gap shows up |
|---|---|---|---|
| Enrollment and posture | built into the client | absent unless something else supplies it | a managed device fails its next posture check |
| Address and resolver authority | the client sets both | the plugin plus dispatcher scripts | names resolve through the wrong resolver after a state change |
| Blocking on drop | a bundled engine | nothing by default | traffic continues in the clear after the tunnel dies |
| Upgrade path | the vendor's own channel | the distribution package and its plugin | a plugin update changes behaviour with no vendor note |
| Diagnostics and support | vendor tooling with client state | journal and dispatcher output | support cannot see why negotiation failed |
هر ردیف را با مشاهدهای که میتوانید تکرار کنید جفت کنید، نه با حسی دربارهٔ کارخواه. نامی که از طریق حلکنندهٔ مورد نظر حل شده، مسیری که با توقف تونل ناپدید میشود، و اتصالی که پس از قطع شبیهسازیشده مسدود شده، سه مشاهدهاند که با هم بیشتر جدول را پوشش میدهند. مشاهده را کنار الزامی بنویسید که اثبات میکند، و آنهایی که شکست خوردند را نگه دارید، چون مشاهدهٔ شکستخورده تنها بخشی از سابقه است که رخداد بعدی را پیشبینی میکند.
جابهجایی بدون همپوشانی مالکیت
اجرای همزمان کارخواه سازنده و یک اتصال NetworkManager برای همان سرویس، رایجترین راهی است که این مقایسهها خراب میشوند. هر دو مسیر نصب میکنند، هر دو ممکن است DNS را تنظیم کنند، و هر دو ممکن است وضعیت دیوار آتش را دست بزنند. آنچه سپس میسنجید آرایش سومی است که با رفتار مستند هیچیک از دو کارخواه نمیخواند.
nmcli -f NAME,UUID,TYPE connection show
nmcli connection show work --show-secrets | grep -E "^vpn\."
journalctl -u NetworkManager -b --since "10 min ago"فرمان نخست میگوید آیا نمایه اصلاً از نوع VPN است. دومی نوع سرویس افزونه و رازهای ذخیرهشده را نشان میدهد، که وقتی کلید از یک عامل بهجای فایل انتظار میرود اهمیت دارد. گزارش جایی است که افزونهای که بارگذاری شد اما نتوانست مذاکره کند آن را خواهد گفت. اگر هیچیک از این سه مشکلی نشان ندهد، شکاف در لایههای سیاست بالای تونل است نه در اتصال.
پیش از فعال کردن اتصال جدید کارخواه قدیمی را قطع کنید، نقاط پایانی و حساب را یکسان نگه دارید، و بنویسید کدام جزء مالک مسیرها، تنظیمات حلکننده و مسدودسازی است. همان یادداشت است که نمیگذارد بهروزرسانی بعدی با دو مالک تمام شود.