איך לבדוק מתג הרג של VPN בלי החשבונות האמיתיים שלך
הריצו בדיקת מתג הרג עם דף פיתיון ופרופיל חלופי: כסו כל סוג של ניתוק, קראו את קודי היציאה של curl והפרידו בין חסימה אמיתית לכשל DNS.
אין לכם צורך בחשבון אמיתי כדי לגלות אם מתג הרג מחזיק; בדיוק את זה בדיקה מעמידה בסיכון. הבדיקה יוצרת חלון קצר שבו התעבורה עשויה או לא עשויה לצאת מחוץ למנהרה, ולכן המטען צריך להיות משהו שאתם יכולים להרשות לעצמכם לאבד. אני עושה זאת כעת עם דף פיתיון ופרופיל דפדפן חלופי, וזה נותן תשובה ברורה יותר משגרת הדפדפן והדואר המקוון שהשתמשתי בה קודם. מה שלפניכם הולך באותו סדר שהלקוח מציג: ההגדרה, היעד, המעבר ואז הראיות.
הבדיקה עונה על שאלה צרה אחת: במעבר הזה, האם היישום הזה יכול להגיע לרשת שמחוץ למנהרה? היא לא אומרת דבר על כך אם שאר המדיניות הגיונית. החזיקו את ההיקף קטן כל כך והתוצאה שווה כתיבה.
מצאו את המתג ואת היקפו בלקוח
פתחו את הלקוח ומצאו את הגדרת החסימה לפני שתשנו מצב רשת כלשהו. הספקים קוראים לזה בשמות שונים: מתג הרג, מצב נעילה, מנעול רשת, חסימת תעבורה מחוץ למנהרה. התווית אומרת פחות מהאפשרויות שבתוכה. מה שחשוב הוא אם החסימה חלה תמיד, או רק כשהאפליקציה מחליטה שמנהרה בדיוק נכשלה, ואם היא מכסה כל אפליקציה או רשימה נבחרת.
לאחר מכן פרטו את המעברים שהלקוח שלכם באמת יכול לבצע. ניתוק שיזם המשתמש, יציאה מהאפליקציה ואובדן קשר עם השרת הם שלושה נתיבי קוד שונים ברוב הלקוחות, והם אינם חולקים מדיניות חסימה אחת. חלקם משחררים את החסימה כשהאפליקציה יוצאת. אחרים משאירים את כללי הסינון מותקנים עד שמשהו מסיר אותם. קראו את מראה ההגדרות של הספק עבור הגרסה שאתם מריצים במקום להניח, ואז רשמו איזה משלושת אלה אתם בודקים.
רשמו גם את הפרופיל: פרוטוקול, משפחות כתובות והאם מנהרה מפוצלת מופעלת. טענה על המכשיר כולו חסרת משמעות אם הפרופיל מחריג בכוונה כמה אפליקציות, והחרגה שהגדרתם אינה דליפה. מראה ההגדרות של OpenVPN Connect הוא סוג העמוד שמציין איזה מתג משנה איזו התנהגות, אם כי התוויות שונות בין לקוחות.
בחרו יעד פיתיון שעובד גם בלי המנהרה
הפיתיון צריך שני מאפיינים, ודילוג על כל אחד מהם נותן תוצאה בלתי קריאה. הוא חייב להיות נגיש ישירות כשהמנהרה למטה והחסימה כבויה, אחרת „הוא הפסיק להגיב” יכול פשוט לומר שהמארח נעלם. ואסור שיזדקק להתחברות, לעוגייה או לתשלום, כדי שדליפה תעלה לכם שורת יומן במקום הפעלה.
דף סטטי במארח שאתם שולטים בו הוא הבחירה הנקייה. מכונה וירטואלית חלופית עם שרת HTTP פשוט כמעט טובה באותה מידה, ודף בדיקת קישוריות ציבורי עובד אם תסכימו שזמינותו מחוץ לשליטתכם. רשמו את הכתובת, את הפורט, את משפחת הכתובות ואם הבקשה צריכה חיפוש שם, כי כל אחד מאלה הופך למשתנה שאולי תצטרכו לבודד בהמשך.
קבעו את קו הבסיס לפני שנוגעים במתג. כשהמנהרה למעלה, הפיתיון חייב להשיב דרך המנהרה, מה שמוכיח שמסלול המדיניות עובד. כשהמנהרה למטה והחסימה כבויה, הוא חייב להשיב ישירות, מה שמוכיח שהיעד חי. רק אז כשל במצב החסום אומר לכם משהו.
בצעו את המעברים בסדר קבוע
קחו את המעברים אחד אחד ותנו לכל אחד כמה שניות להתייצב, כי לקוחות מרבים לפרק ולבנות מחדש כללים ברווח הזה. הרצת אותה בדיקה קצרה בכל פעם משאירה את התצפיות ברות השוואה:
curl -sS -o /dev/null -w 'http=%{http_code}\n' --max-time 5 http://decoy.example/
echo "curl_exit=$?"
dig +short decoy.example
curl -6 -sS -o /dev/null -w 'v6_http=%{http_code}\n' --max-time 5 http://decoy.example/
echo "curl_v6_exit=$?"
| Transition | Expected with the block on | Failure signature |
|---|---|---|
| Manual disconnect | Decoy stops answering within seconds | Decoy still returns 200 |
| Server or path failure | Blocked, with no exemption for the old endpoint | Direct access during the gap |
| Quit the app | Client-dependent; record what happens | Block disappears with the process |
| Wi-Fi to Ethernet | Block holds until the tunnel returns | Traffic flows mid-change |
שורת היציאה מהאפליקציה ראויה להרצה נפרדת משלה גם אם לעולם לא תסגרו את הלקוח בשימוש רגיל. אם החסימה משתחררת ביציאה, קריסה או עדכון כפוי נותנים לכם את אותה חשיפה, וזו עובדה על הפריסה, לא על הסבלנות שלכם. ב-Windows הבדיקות המקבילות הן Resolve-DnsName decoy.example וcurl.exe -s -o NUL -w "%{http_code}" http://decoy.example/.
הפרידו בין חסימה לבין פותר שבור
לדף שלא נטען יש כמה סיבות, ורק אחת מהן היא המתג שעובד. אם השם לא נפתר, למדתם ש-DNS חסום או שבור, לא שמסלול הנתונים חסום. בדקו גם כתובת מילולית, כדי שהתשובה לא תלויה כלל בפתרון.
קודי היציאה של curl מפרידים בין המקרים האלה: 6 הוא כשל בפתרון שם, 7 פירושו שהחיבור נדחה, 28 הוא פסק זמן. מסלול חסום מופיע בדרך כלל כפסק זמן או כדחייה מול כתובת מילולית. חסימת DNS בלבד משאירה 6 ומסתירה את כל השאר. דף שמור במטמון או פורטל לכידה מטעים את העין, ולכן קוד היציאה, ולא המסך, הוא הראיה.
חזרו על הבדיקה מעל IPv6 עם כתובת מילולית. חסימה שמכסה IPv4 ומתעלמת מ-IPv6 נפוצה מספיק כדי להצדיק שורה משלה בהערות שלכם, ולקוח שמשבית IPv6 מחוץ למנהרה אמור להיכשל נקי בשתי המשפחות.
רשמו את ההיקף שהתוצאה מכסה
כשהמנהרה חוזרת, אשרו את ההתאוששות: הפיתיון משיב דרך המנהרה, הפותר מחזיר תשובות, והמדיניות נשארת במקום שהשארתם אותה. אחר כך בטלו את הניסויים. כלל חומת אש זמני, מסלול ניפוי או פרופיל בדיקה שנשארו במקומם יבלבלו את ההרצה הבאה ועלולים לשרוד את האפליקציה.
מעבר אחד מכסה גרסת לקוח אחת, פרופיל אחד, מעבר אחד ומשפחת כתובות אחת. רשמו את ארבעת אלה יחד עם התוצאה:
- גרסת הלקוח והפלטפורמה, והאם ההגדרה היא לפי פרופיל או גלובלית.
- פרופיל, פרוטוקול וכל החרגה של מנהרה מפוצלת.
- המעבר שנבדק, ואיך הפעלתם אותו.
- משפחות כתובות ו-DNS, עם קודי היציאה של curl למצב החסום והלא חסום.
אם שורה כלשהי ריקה, הבדיקה לא הסתיימה. נדידה פירושה חזרה על שורת שינוי הרשת. אתחול ללא השגחה פירושו בדיקה שהכללים חוזרים, וזו שאלה על סדר השחזור ולא על המתג. חזרו על הרצף אחרי עדכון לקוח, כי המתגים משתנים לעתים רחוקות בעוד ההתנהגות שמאחוריהם משתנה. שמרו את הפיתיון בקרבת מקום: אין מה לסובב, והבדיקה הבאה אורכת חמש דקות.