ה-VPN נופל כשהמסך מחשיך: נעילה, כיבוי תצוגה או השהיה?
הפעלה נעולה, מסך חשוך ומכונה מושהה הם שלושה אירועים שונים. הצליבו אותם עם journalctl לפני שתאשימו את מנגנון שמירת החיים של ה-VPN.
כשמישהו אומר שה-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 עצר או הופעל מחדש, או שצד השרת נתן לשיוך לפוג בזמן שהלקוח המשיך להאמין שהוא מחובר. השוו את חותמות הזמן של אירוע הקישור הבסיסי עם אירוע המנהרה, והיו מדויקים לגבי מה בא קודם.
לאחר מכן בדקו את נתיב ההתאוששות בנפרד מההפעלה המקורית. בקשה חדשה דרך המנהרה ששוחזרה יכולה להצליח בזמן שהפעלת היישום ארוכת הטווח שנפתחה לפני הנפילה נשארת שבורה, מפני שהיישום מחזיק שקע מיושן או כתובת שמורה במטמון. זו בעיית יישום, לא הוכחה שהמנהרה לא חזרה.
מה מכיל דוח שימושי
כתבו את הרצף עם חותמות זמן ובעלים: מתי ההפעלה ננעלה, מתי המסך החשיך, אם נרשמה בקשת שינה, מתי הקישור נפל וחזר, מתי המנהרה שינתה מצב ומה היישום באמת עשה. לכל פריט יש בעלים, ולכן כל פריט יכול להימסר לאדם הנכון במקום להפוך לתלונה כללית על לינוקס.
אם אחד מהשורות האלה חסר, זה הדבר הבא שצריך למדוד ולא הדבר הבא שצריך לשנות. ציר זמן עם פער מאיר עיניים יותר משינוי הגדרות שנעשה על סמך תחושה.