בדיקת VPN ללא ממשק: זרימה אחת בכל פעם, עם ראיות
תיבה ללא ממשק זקוקה לבקשה שאת תשובתה אפשר לקרוא. בדקו כל משפחת כתובות, הקשר ויעד, ואז רשמו מה התוצאה לא כיסתה.
בתיבה ללא ממשק אין דפדפן לפתוח ואין מנעול להסתכל עליו, ולכן הבדיקה חייבת להיות בקשה שאת תשובתה אפשר לקרוא. זה נשמע טריוויאלי עד שמבחינים שתוצאת כתובת יציאה אחת משמשת להסמכה של התקן שמריץ תריסר שירותים, שתי משפחות כתובות ופרוקסי. הסיור שלהלן בונה בכל פעם פיסת ראיה תחומה אחת, באותו הקשר שבו עומס העבודה באמת רץ.
החליטו מה הבדיקה חייבת להוכיח
לפני שמריצים משהו, כתבו את הצפייה בשורה אחת: איזו זרימה, דרך איזה ממשק, לאיזה יעד, ומה צריך להיראות בקצה השני. בדיקה בלי צפייה מוצהרת מייצרת מספר שאיש לא יכול לפרש.
הגרסה השימושית ביותר נוקבת בנקודת קצה מאושרת שמדווחת על כתובת המקור שראתה.
נקודת הקצה הזו היא החלק היחיד שעליכם לארגן. כל השאר הוא תצפית מצד הלקוח, ותצפיות מצד הלקוח נכשלות בדרכים מעניינות.
הריצו את התצפית בהקשר הנכון
מעטפת של מנהל אינה סביבת עומס העבודה. היא עשויה לשאת משתנה פרוקסי אחר, טבלת ניתוב אחרת במרחב שמות אחר, או קובץ סביבה של משתמש אחר. הריצו את הבדיקה באותו הקשר מארח, מכולה, מרחב שמות או שירות כמו הדבר שאתם בודקים. אחרת אתם מודדים את המעטפת שלכם.
במארח רגיל זה אומר אותו משתמש ואותה יחידה. בסביבת מכולות זה אומר להיכנס למרחב השמות של הרשת של המכולה במקום לבדוק מהמארח. בשירות systemd זה יכול להיות יחידה זמנית עם אותן הגדרות.
הבקשה שלאחר מכן משמעותית רק כשאתם בהקשר הנכון.
בדקו משפחות כתובות בנפרד
בקשו כל משפחה במפורש, כי בקשת IPv4 מוצלחת אינה מפעילה נתיב IPv6 כלל. הבוררים --ipv4 ו--ipv6 כופים את הבחירה, וההבדל בין שתי התוצאות הוא בעצמו מידע.
curl --ipv4 https://probe.example/observed-source
curl --ipv6 https://probe.example/observed-sourceבקשת IPv6 שנכשלה אינה הוכחה לחסימה אפקטיבית. היא יכולה לומר שנקודת הקצה אינה בעלת כתובת IPv6, ש-DNS לא החזיר דבר שמיש, או שלהתקן אין נתיב IPv6 כלל. קראו את הכשל לפני הסקת מסקנה. בקשת IPv6 מוצלחת דרך המנהרה היא התוצאה היחידה שמוכיחה שנתיב IPv6 מכוסה.
רשמו את שתי התשובות זו לצד זו. אחת מהן לבדה היא חצי עובדה.
הוסיפו את ארבעת הדברים שבדיקת יציאה מפספסת
כתובת יציאה עונה על שאלה אחת. ארבע נוספות קובעות אם המנהרה מתנהגת כמתוכנן.
| Check | What it proves | What it does not |
|---|---|---|
| Included and excluded destinations | The split behaves as designed for those flows | Coverage of any other destination |
| Resolver path | Where a fresh lookup actually travelled | Where a cached answer came from |
| Tunnel-down behaviour | The failure policy for a new request | What an already open connection does |
| Reconnect and restart | The requirement survives the lifecycle event | Behaviour under load or partial failure |
מדיניות היעדים באה ראשונה: בדקו זרימה שאמורה להיכלל ואחת שאמורה להיות מוחרגת, כשהתכנון כולל פיצול. אחר כך DNS, שם אתם בוחנים את נתיב הפותר בפועל ולא את הערך המוגדר, כי תשובה שמורה במטמון או הגדרה מודפסת לא אומרות דבר על לאן פנתה שאילתה חדשה.
התנהגות כשל זקוקה לתוכנית ולנתיב התאוששות משומר. צפו בבקשה חדשה כשהמנהרה אינה זמינה, וזכרו שחיבור פתוח ישן אינו ראיה למדיניות הכשל. מחזור החיים בא אחרון: חזרו על התצפית לאחר התחברות מחדש או הפעלה מחדש של שירות אם אירועים אלה משפיעים על הדרישה.
רשמו ראיות, לא פסק דין
לכל תוצאה שמרו את הקשר התהליך, היעד, משפחת הכתובות, הזמן והמקור שנצפה. הקבוצה הזו היא ראיה תחומה על הזרימות שהפעלתם, והיא ניתנת להגנה דווקא מפני שהיא אומרת מה כיסתה.
זה אינו ביקורת של רשומות מפעיל ה-VPN, ואינו תעודה לכל יישום עתידי בהתקן.
כתבו את המגבלות לצד התוצאה. בדיקה שמצהירה מה לא כיסתה שורדת סקירה, בעוד שזו שטוענת שההתקן אומת אינה שורדת. החזיקו את מדריך curl לצד בוררי המשפחה שהשתמשתם בהם, ואת הטבלה בעלת ארבע השורות לצד התוצאות.