vpn.persistent مدام تلاش میکند، اما شما را متصل نگه نمیدارد
این ویژگی از سرویس VPN میخواهد تونل را در تغییرات پیوند حفظ کند. فعالسازی، زندهبودن، قصد و رفتار kill switch پرسشهای جداگانه باقی میمانند.
NetworkManager یک ویژگی را در معرض دید قرار میدهد، vpn.persistent، و مردم از آن میخواهند همزمان به چهار پرسش متفاوت پاسخ دهد. مستندات بالادست آن دقیق است: ماندگاری زمانی اعمال میشود که سرویس VPN از آن پشتیبانی کند و نمایه آن را فعال کند، و سپس از اتصال خواسته میشود تا قطع صریح، تغییرات پیوند و قطعیها را دوام آورد. همان مستندات نشان میدهد که مقدار پیشفرض ویژگی false است، چیزی که بیشتر طرحهای بازیابی فرض نمیکنند. آن را درخواست یک تلاش بخوانید، نه وعده یک نتیجه.
تنظیم واقعاً به چه چیزی متعهد میشود
مقداری که در نمایه ذخیره میشود دستوری برای مدیر است، و مدیر باید آن دستور را به یک افزونه VPN بسپارد که بداند با آن چه کند. اگر افزونه نصبشده ویژگی را نادیده بگیرد، نمایه باز هم فعال میشود و گزارش ساکت میماند، که برای هر کسی که بعداً اشکالزدایی کند بدترین حالت هر دو جهان است. هیچ چیز درون یک نمایه نمیتواند افزونه را به پیادهسازی رفتاری که ندارد مجبور کند، پس تنها نتیجه دیدنی یک غیاب است.
به همین دلیل شرط درون مستندات مهمتر از کلید است. بررسی کنید واقعاً کدام افزونه و کدام انتشار را دارید، و نسخه را کنار توصیف اتصال بنویسید تا نفر بعد مجبور نشود دوباره آن را کشف کند. سیاست بازیابیای که بر پرچمی پیادهنشده بنا شده باشد دقیقاً یک بار در محیط تولید شکست میخورد، و همیشه در نامناسبترین لحظه.
برخورد با ویژگی بهعنوان یک تلاش، انتظار درست را هم برای آزمون تعیین میکند. شما بررسی نمیکنید که پرچم تنظیم شده است؛ بررسی میکنید که وقتی پیوند افتاد چیزی رخ داد یا نه. اینها آزمایشهای متفاوتی هستند، و تنها یکی از آنها ارزش یک بعدازظهر را دارد.
چهار پرسشی که در یکی ادغام میشوند
فعالسازی میپرسد چه چیزی VPN را در وهله اول بالا میآورد. نمایه NetworkManager میتواند به یک اتصال پایه گره بخورد، سرویس OpenVPN که جداگانه مدیریت میشود راهاندازی خودش را دارد، و افزودن یک راهانداز سوم به این چیدمان دو مالک به شما میدهد با ایدههای متفاوت درباره اینکه چه کسی فرمان میراند. پیش از افزودن محرک دیگر، تصمیم بگیرید کدام مؤلفه مالک راهاندازی است.
بازیابی میپرسد وقتی پیوند تغییر میکند یا ناپدید میشود چه رخ میدهد، و این همان پرسش باریکی است که vpn.persistent به آن میپردازد. زندهبودن میپرسد آیا سرویسگیرنده میتواند بفهمد طرف دور دست از پاسخ دادن کشیده است، و رفتار keepalive یا راهاندازی مجدد OpenVPN بهجای آن پاسخ میدهد؛ این دو سازوکار اغلب با یک واژه توصیف میشوند و در جاهای متفاوت پیادهسازی میشوند. آنها را جداگانه و با ابزارهای متفاوت بیازمایید، وگرنه یک رفتار را به دیگری نسبت میدهید.
قصد میپرسد آیا اتصال مجدد اصلاً خواسته شده است، و این همان پرسشی است که نظرسنجی وضعیت نمیتواند پاسخ دهد. توقف عمدی و یک قطعی همان حالت غیرفعال را تولید میکنند، پس هر چیزی که با نبود، دوباره متصل شود درباره یک تصمیم انسانی حدس میزند. حدس زدن تا لحظهای خوب است که از کسی پیشی بگیرد.
سیاههای که آنها را جدا نگه میدارد
رویدادها را به ترتیب اجرا کنید نه اینکه پیکربندی را بخوانید و دربارهاش استدلال کنید، و ثبت کنید هر کدام چه چیزی را با یک برچسب زمانی نشان میدهد.
نخست، اتصال پایه موردنظر را فعال کنید و تأیید کنید که VPN از طریق محرکی که انتظار داشتید بالا آمده است، نه از طریق سازوکاری که فراموش کرده بودید نصب شده است. دوم، در طول یک وقفه تأییدشده، رویدادهای VPN مدیر، وضعیت بازیابی سرویسگیرنده مالک و یک درخواست تازه به یک منبع خصوصی را مقایسه کنید. سوم، عمداً قطع کنید، صبر کنید و تأیید کنید که هیچ چیز پشت سر شما نمایه را دوباره راهاندازی نمیکند.
گام سوم همانی است که مردم از آن میگذرند، و همانی است که بیشتر اوقات نقص واقعی را پیدا میکند. نگهبانی که برای نمایه فعال نظرسنجی میکند و وقتی نیست دوباره متصل میشود، با خوشحالی قطع عمدی کاربر را باطل میکند. از دید کاربر این تابآوری نیست؛ ماشینی است که اطاعت نمیکند. پیش از افزودن یکی، از آنها بپرسید.
نتایج را در همان سندی بنویسید که توصیف اتصال در آن است. سیاست بازیابی تنها به اندازه آخرین باری خوب است که کسی آن را عمداً در حال شکست دیده است. برچسبهای زمانی تفاوت را برای هر کسی که دفعه بعد یادداشتها را میخواند دیدنی میکند.
احراز هویت بخشی از بازیابی است
اتصال مجدد یک عمل صرفاً شبکهای نیست. اگر جریان تأییدشده به یک چالش تازه، یک کد یکبارمصرف یا رازی نیاز داشته باشد که بافت فعالسازی به آن نمیرسد، هیچ تنظیم ماندگاریای نمیتواند آن را از هیچ پدید آورد.
این الگویی آشنا را توضیح میدهد: اتصال روی ماشینی با جاکلیدی باز بازیابی میشود و روی همان ماشین پس از راهاندازی مجدد شکست میخورد. لایه شبکه دقیقاً همان کاری را کرد که خواسته شده بود و لایه اعتبارنامه چیزی برای عرضه نداشت.
جریان اعتبارنامه را درست کنید نه اینکه بازه تلاش مجدد را کوتاه کنید. تلاشهای مجدد سریعتر در برابر اعلانی که هیچکس نمیتواند پاسخ دهد، نویز گزارش و این تصور نادرست را میسازد که چیزی در حال تلاش است.
ماندگاری یک kill switch نیست
ویژگی میکوشد رابطه VPN را حفظ یا بازیابی کند. تصمیم نمیگیرد برنامهها وقتی VPN پایین است چه میتوانند بکنند، و خودبهخود چیزی را مسدود نمیکند.
اگر شرط این است که هیچ ترافیکی بیرون از تونل نرود، آن یک سیاست جداگانه با سازوکار خودش، آزمون خودش و حالتهای شکست خودش است. فرض اینکه ماندگاری آن را پوشش میدهد، یک تصمیم امنیتی را به یک حادثه تبدیل میکند.
هر دو نیمه را در یادداشتهای بازیابی ثبت کنید: VPN چه چیزی را تلاش کرد، و چه ترافیک برنامهای هنگام آن تلاش مجاز بود.