אתם רוצים לדעת אם המנהרה שורדת שינה של מחשב נייד, הליכה בין נקודות גישה, או שעה של שיחות, ואתם מעדיפים לא למסור לאף אחד יומן של כל מה שאתם קוראים בדרך. שלושה דברים עונים על זה: בדיקה קבועה, אותן ארבע עובדות שנדגמות לפי לוח זמנים, והאירוע ששינה אותן בכתב. עשר דקות של זה עדיפות על אחר צהריים של צפייה בעמוד שלא נטען. היומן שנשאר בסוף גם קצר מספיק כדי לצרף לכרטיס בלי להשחיר חצי ממנו.

החליטו מה יציב חייב להיות אומר

האמירה שה-VPN נפל מתארת ארבעה כשלים שונים במילה אחת. ה-peer יכול לאבד את לחיצת היד, המסלול יכול ליפול חזרה לשער המקומי, פתרון השמות יכול ללכת לשרת שלעולם לא עונה דרך המנהרה, או שכל אלה יכולים להיות תקינים בזמן שאפליקציה אחת עדיין נכשלת. החליטו איזה מהם מתאים לתסמין שלכם לפני שאתם אוספים משהו, כי כל אחד צריך בדיקה אחרת. אחר כך בחרו מרווח שתוכלו להחזיק: דגימה אחת כל שלושים שניות במשך עשר דקות תופסת נדידת רשת בלי להפוך את הבדיקה לעומס עבודה.

אם התלונה היא שיחה שקופאת כשאתם הולכים למטבח, התכונה שצריכה לעניין אתכם היא אם בקשה חדשה מושלמת אחרי הנדידה. את זה אפשר לבדוק בשורה אחת וזה לא מתעד שום גלישה.

קבעו בדיקה אחת לא מזיקה

בחרו יעד שמותר לכם לשאול אותו ושאינו קשור לחשבונות שלכם: מארח תיעוד, נקודת קצה פנימית של סטטוס, או השער של המנהרה עצמו. הפכו את הפעולה לחזרתית, למשל curl -s -o /dev/null -w "%{http_code} %{time_total}\n" https://example.com/, שמדפיס שורה אחת לכל ניסיון. שמרו על פורמט הפלט הזה קבוע לאורך כל הריצה. קוד סטטוס ומשך שנאספים באותה דרך פעמיים הם מה שהופך שתי ריצות להשוואה.

התנגדו לאתר שאתם באמת נשענים עליו. עמוד של בנק או של דואר אינטרנטי גורר אל תוך המדידה עוקבים, הפניות ותוכן אישי, והוא מדפיס מזהי הפעלה לתוך כל מה שתדביקו לכרטיס אחר כך. השתמשו באותו יעד לאורך כל החקירה, ורשמו אותו לצד המרווח.

דגמו את ארבע העובדות

מצב ה-peer, המסלול, הפותר ובקשה חדשה אחת הם ארבע התצפיות, ולכל אחת מקור זול. ב-WireGuard, wg show wg0 latest-handshakes נותן את חותמת הזמן של ה-peer ו-ip route get 1.1.1.1 מראה באיזה ממשק הגרעין ישתמש. ב-OpenVPN המצב הזה נמצא בקובץ הסטטוס שנכתב על ידי --status /run/openvpn/status 10 או מאחורי state בממשק הניהול. לקוח Windows נשאר ב-PowerShell עם Get-NetAdapter ו-Resolve-DnsName.

הריצו אותם בלולאה במסוף אחד כדי שכל שורה תישא חותמת זמן: for i in $(seq 1 20); do date -Is; wg show wg0 latest-handshakes; ip route get 1.1.1.1; sleep 30; done. הלולאה הזו מכסה שלושה מששת שדות היומן; גרסת הלקוח נכנסת פעם אחת למעלה, וחותמת הזמן של האירוע מתווספת כשהאירוע קורה.

הפותר הוא העובדה שאנשים מדלגים עליה, ו-dig +short מסתיר אותה, כי הצורה הזו מדפיסה רק את התשובה. שאלו את השרת במפורש עם dig example.com | grep SERVER:, או השתמשו ב-nslookup example.com במקום שבו dig אינו מותקן, שמדפיס את כתובת השרת שאליו הלכה השאילתה. לחיצת יד ישנה על מנהרה לא פעילה גם היא אינה תקלה אוטומטית, כיוון ש-WireGuard מחליף מפתחות רק כשיש תעבורה להגן עליה.

גרמו לאירוע, לא לדליפה

קחו חמש דקות שקטות כקו בסיס לפני האירוע שמעניין אתכם, בין אם זה סגירת המכסה, הליכה לנקודת גישה אחרת או מעבר לנקודת גישה של טלפון. רשמו את השעה שבה גרמתם לו, כדי שאפשר יהיה ליישר את הדגימות משני הצדדים.

בלי חותמת הזמן הזו היומן מראה פער ואף אחד לא יכול לומר אם הלקוח או הרשת סגרו אותו. שתי ריצות עם האירוע במקומות שונים שוות יותר מעשר בלעדיו. השתמשו בפקדי הניתוק וההתחברות של הלקוח עצמו. אל תכבו את מתג ההרג ואל תדחפו תעבורה מחוץ למנהרה כדי לראות מה יקרה, כי במחשב נייד מנוהל זה הפרת מדיניות ובמכונה שלכם זה יוצר בדיוק את החשיפה שבדקתם.

שמרו יומן קטן מספיק כדי לסיים אותו

שישה שדות לכל דגימה: זמן, גרסת לקוח, נקודת קצה, רשת גישה, אירוע, תוצאה. השאירו בחוץ כתובות אינטרנט, מטענים, אסימונים וכל דבר שנושא מזהה הפעלה, כי היומן הוא ראיה על המנהרה ולא שום דבר אחר. שמרו אותו לצד הלולאה כדי שהאדם הבא יוכל להריץ אותו שוב בלי לשאול מה משמעות העמודות.

אחרי שינוי, חזרו על הבדיקה עם אותה בדיקה ואותו מרווח; אם תחליפו את היעד ואת גרסת הלקוח יחד, התוצאה לא שייכת לאף אחד מהם. ריצה נקייה של עשר דקות היא ראיה לאותם תנאים ולאותו יעד, לא הבטחה לגבי רשת המלון בחודש הבא. שמרו את הסקריפט ואת תבנית היומן במקום שבו תמצאו אותם. המגבלות המתועדות של WireGuard שוות קריאה לפני שאתם מייחסים נפילה לפרוטוקול.

מאמרים קשורים