قطع شدن VPN وقتی صفحه تاریک میشود: قفل، خاموشی نمایشگر یا تعلیق؟
نشست قفلشده، نمایشگر خاموش و دستگاه معلق سه رویداد متفاوتاند. پیش از متهم کردن مکانیزم حفظ اتصال VPN، آنها را با journalctl تطبیق دهید.
وقتی کسی میگوید VPN هنگام تاریک شدن صفحه مرد، نخستین پرسش مفید این است که کدام یک از سه رویداد واقعاً رخ داده است: نشست قفل شده، پنل خاموش شده، یا کل دستگاه به خواب رفته است. اینها مکانیزمهای جداگانه با تایمرهای جداگانهاند و تنها یکی از آنها میتواند اصلاً از زمانبندی یک فرایند جلوگیری کند. بررسیهای زیر را به ترتیب انجام دهید. در نخستین بررسی که به پرسش پاسخ میدهد بایستید، چون هر بررسی بعد از آن به چیز دیگری پاسخ میدهد.
بررسی یک: قفل را از خاموشی نمایشگر و از خواب جدا کنید
قفل تغییر میدهد چه کسی اجازه استفاده از نشست را دارد؛ ترکیبگر به رسم ادامه میدهد، پشته شبکه به کار خود ادامه میدهد و کلاینت VPN هیچ چیزی متوجه نمیشود. خاموشی نمایشگر پس از یک بازه بیکاری پنل را خاموش میکند و دستگاه را کاملاً بیدار باقی میگذارد. تعلیق پردازندهها را متوقف میکند، یعنی هیچ فرایندی در فضای کاربر زمانبندی نمیشود، پس هیچ حفظ اتصالی نمیتواند اجرا شود، هر قدر هم که بازه را کوتاه بگذارید.
| Event | What it stops | Can it kill the tunnel? |
|---|---|---|
| Session lock | Input to your session | No |
| Display blank | The panel | No |
| Suspend to RAM | CPU scheduling, hence every process | Yes, and silently |
| Hibernate | Everything, with state written to disk | Yes |
همین جدول دلیل آن است که «صفحه تاریک شد» تشخیص نیست. رایانه رومیزی که روی خاموشی در پنج دقیقه و تعلیق در سی دقیقه تنظیم شده، در دقیقه ششم صفحهای تاریک با تونلی کاملاً سالم نشان میدهد. خرابی در دقیقه سی رویدادی دیگر با راهحلی دیگر است و هر دو از آن سوی اتاق یکسان به نظر میرسند.
بررسی دو: رویدادهای توان و شبکه را روی یک خط زمانی بگذارید
ژورنال را برای یک پنجره محدود بخوانید نه کل بوت، و هم مدیر ورود و هم مالک اتصال را شامل کنید:
journalctl -b -u systemd-logind -u NetworkManager --since "45 minutes ago"
systemd-inhibit --list
فرمان نخست درخواستهای خواب، بیداری و گذارهای شبکهای را که پس از آنها آمدند نشان میدهد. دومی نشان میدهد چه چیزی اکنون یک قفل بازدارنده را نگه داشته است، که به شما میگوید آیا چیزی بهعمد جلوی خواب را میگیرد و کدام برنامه است. اگر مالک اتصال شما NetworkManager نیست نام واحدها را تنظیم کنید، و به یاد داشته باشید که خواندن واحد کاربر دیگر یا ژورنال سیستم به سیاست محلی بستگی دارد.
خطی که نیست نتیجه منفی نیست. اگر ژورنال واحد انتخابشده برای حساب شما قابل مشاهده نیست، نبودِ سابقه تعلیق چیزی را ثابت نمیکند، و نتیجهگیری «هرگز نخوابید» از یک صافی خالی همان راهی است که مردم یک هفته را صرف تنظیم حفظ اتصال میکنند.
بررسی سه: اگر معلق شد، تصمیم بگیرید که آیا عمدی بود
بهمحض اینکه گذار خواب روی خط زمانی بیاید، پرسش از «چرا VPN شکست» به «آیا دستگاه اصلاً باید میخوابید» تغییر میکند. روی لپتاپ پاسخ غالباً بله است و قطع تونل رفتاری مورد انتظار است که کلاینت باید هنگام بیداری از آن بازیابی شود. روی ایستگاه کاری که باید در دسترس بماند، سیاست خواب چیزی است که باید تغییر کند. تصمیمگیری درباره اینکه به کدام یک از این دو دستگاه نگاه میکنید یک پرسش میخواهد، و این پرسشی نیست که ژورنال بتواند به جای شما پاسخ دهد.
آن را از طریق کنترلهایی که به نشست واردشده تعلق دارند تغییر دهید، یا از طریق مکانیزمی که مدیر سیستم پشتیبانی میکند اگر الزام برای کل دستگاه است. ویرایش تنظیمات مدیر نمایشگر در حالی که با حساب دیگری وارد شدهاید همان کنش نیست و تا شروع نشست بعدی طوری به نظر میرسد که کار کرده است. غیرفعال کردن کامل مدیریت توان واکنشی نخستین و گسترده است که عمر باتری را میبلعد و پرسش واقعی سیاست را پنهان میکند.
بررسی چهار: اگر بیدار ماند، به شبکه و کلاینت نگاه کنید
دستگاه بیداری که تونلش را از دست داده یکی از سه داستان را دارد: شبکه دسترسی افتاد، کلاینت VPN متوقف یا دوباره راهاندازی شد، یا سمت سرور پیوند را منقضی کرد در حالی که کلاینت همچنان باور داشت متصل است. مُهرهای زمانی رویداد پیوند زیرین را با رویداد تونل مقایسه کنید و دقیق باشید که کدام اول آمد.
سپس مسیر بازیابی را جدا از نشست اصلی بیازمایید. درخواست تازه از تونل بازیابیشده میتواند موفق شود در حالی که نشست طولانیمدت برنامه که پیش از قطع باز شده خراب میماند، چون برنامه یک سوکت کهنه یا نشانی ذخیرهشده در حافظه نهان را نگه داشته است. این مشکلی در برنامه است، نه شاهدی بر اینکه تونل بازنگشت.
یک گزارش مفید چه دارد
توالی را با مُهرهای زمانی و مالکان بنویسید: چه وقت نشست قفل شد، چه وقت نمایشگر خاموش شد، آیا درخواست خواب ثبت شد، چه وقت پیوند افتاد و بازگشت، چه وقت تونل وضعیتش را عوض کرد و برنامه واقعاً چه کرد. هر مورد یک مالک دارد، پس هر مورد را میتوان به شخص درست سپرد بهجای اینکه به شکایتی کلی درباره لینوکس تبدیل شود.
اگر هر یک از این ردیفها نیست، آن چیز بعدی است که باید اندازهگیری شود نه چیز بعدی که باید تغییر کند. خط زمانیای که شکاف دارد آموزندهتر از تغییر تنظیماتی است که بر پایه حدس انجام شده باشد.