מה מגלה מענה STUN כשה-VPN פועל בנתב
כתובת המנהרה של הנתב אינה הכתובת המקומית של הדפדפן. עקבו אחרי הדרך שבה כל בקשה מנותבת ומתורגמת לפני שתקראו מה מדווח משקף.
כשהמנהרה נמצאת בנתב, למכונה שמריצה את הדפדפן אין ממשק מנהרה כלל. בקשו מהמכונה הזו את הכתובות המקומיות שלה ותקבלו כתובת LAN פרטית וכתובת לולאה, שום דבר שמזכיר כתובת VPN. ובכל זאת, שרת STUN בצד השני עדיין יכול לדווח משהו בעל משמעות על הנתיב, ומה שהוא מדווח תלוי לחלוטין באופן שבו הבקשה המסוימת הזו נותבה ותורגמה.
זה החלק שראוי להאט בגללו. „הדפדפן אינו הבעלים של כתובת ה-VPN“ עונה על שאלה בנוגע לממשקים, ואילו כתובת משוקפת היא תשובה בנוגע לנתיב דרך תרגום. ערבוב של השניים מייצר מסקנות בטוחות בנוגע לחשיפה שהראיות אינן תומכות בהן.
שני התקנים, שתי קבוצות ממשקים
בהתקנה מבוססת נתב המנהרה מסתיימת בנתב ולקוח ה-LAN שולח תעבורה רגילה לשער ברירת המחדל שלו. רשימת הממשקים של הלקוח נשארת קצרה: כתובת פרטית אחת, אולי שנייה עבור רשת אחרת, ולולאה. הסיכון אינו שאחת מהן היא במקרה כתובת המנהרה; הסיכון הוא שהבקשה יוצאת בנתיב שלא בחרתם.
שאלו את הלקוח איזה נתיב יעד מסוים ייקח במקום לשאול אילו ממשקים קיימים. התשובה נוקבת בשער ובכתובת המקור שהליבה תשתמש בה, וזה כבר מאלף יותר מכל מלאי כתובות.
ip route get 198.51.100.20
ip -6 route get 2001:db8::20
wg show wg0 allowed-ips
טווחי תיעוד הם יעדי בדיקה טובים מפני שהם לעולם אינם נפתרים לשירות אמיתי. השוו את מה שהלקוח אומר למה שהנתב אומר, והתייחסו לכל אי-התאמה כראיה לכך שניתוב מדיניות, כלל מנהרה מפוצלת או נתיב ברירת מחדל שני עושים משהו שלא לקחתם בחשבון.
מה מותר לתגובת Binding לומר
RFC 8489 מגדיר את בקשת ה-Binding ואת תגובתה, שבה השרת מדווח את כתובת ההובלה של המקור שצפה בה עבור אותה בקשה. זהו הצהר על חמישייה אחת ברגע אחד, לא מפקד של ממשקי הלקוח. לכן כל מה שמעניין קורה בין הלקוח לנקודת התצפית.
את הפער הזה ממלאים ניתוב ותרגום. נתב שעושה NAT מקור על תעבורה יוצאת מחליף את המקור הפרטי של הלקוח בכתובת שלו בממשק היציאה. אם הממשק הזה הוא המנהרה, המשקף רואה את כתובת המנהרה. אם החבילה הוחרגה מהמנהרה, המשקף רואה את מה שתרגום ה-WAN יצר. אותו לקוח, אותו משקף, תשובה אחרת.
שלושה מקרים שנראים דומים ואינם
ההבחנה השימושית אינה ציבורי לעומת פרטי, אלא איזו נקודת אכיפה טיפלה בחבילה. עברו על המקרים עם הטבלאות של הנתב עצמו פתוחות, כי דפדפן אחד יכול לייצר את כל השלושה בהתאם לכלל ששכחתם שכתבתם.
| Where the request leaves | What rewrites the source | What the reflector reports |
|---|---|---|
| Tunnel interface on the router | Router NAT towards the tunnel address | The tunnel address as seen on that path |
| WAN interface, excluded by policy | Ordinary WAN translation | The public WAN address |
| Private reflector reached through the tunnel route | Router NAT towards the tunnel address | An internal identifier valid only inside that path |
רק המקרה השני מפר דרישה שתעבורה מסוימת לעולם לא תצא ישירות, ורק הראשון והשלישי חושפים מזהה מצד המנהרה. אף אחת משלוש השורות אינה טענה על התנהגות של ספק מסוים: האם ניתן בכלל להגיע למשקף פרטי תלוי בניתוב, בכתובות ה-IP המותרות של הצד השני ובמדיניות חומת האש בשני הקצוות.
החזקת חשבון אצל אותו ספק אינה מבססת דבר מזה. כדאי גם לזכור שבקשה מנותבת יכולה לשמור על מקור ה-LAN של הלקוח אם שום דבר אינו מתרגם אותו, ולכן את שדה המקור יש לעקוב ולא להניח מתוך תרשים הטופולוגיה.
איסוף אינו בחירה
WebRTC אוסף כתובות מועמדות לניסוי, ומועמד שמופיע ברשימת אבחון עשוי שלא לשאת מדיה לעולם. קריאת הרשימה כ„זה מה שהצד השני למד“ מגזימה בראיות. הזוג הנבחר הוא זה שנשא את הפגישה בפועל, והוא נמצא בשדה אחר.
בודק יציאה ב-HTTPS עונה על שאלה אחרת: כתובת המקור ששרת אינטרנט ראה עבור אותה בקשה. זהו בדיקה צולבת שימושית דווקא מפני שהוא משתמש בפרוטוקול אחר ולעיתים קרובות ביעד אחר מאשר משקף UDP, ואי-התאמה בין השניים מצביעה בדרך כלל על כלל ניתוב ולא על תקלה.
החליטו על המדיניות, ואז קראו את התשובה
כתבו את הכוונה לפני הבדיקה: איזו תעבורה חייבת להשתמש במנהרה, איזו רשאית לצאת ישירות, אילו משפחות כתובות נמצאות בתחום, ומה צריך לקרות כשהמנהרה למטה. בלי קו בסיס כזה כל תצפית דו-משמעית, כי אינכם יכולים להפריד בין דליפה לבין נתיב שהרשיתם בכוונה.
אחר כך שאלו שאלה אחת בכל פעם. איזה נתיב היעד הזה לוקח. איזו כתובת המשקף הזה מדווח. איזה זוג מועמדים הפגישה בחרה. שמרו את התשובות לצד המדיניות ותארכו אותן, כי עדכון קושחה יכול לשנות התנהגות ברירת מחדל בדרכים שפוסלות בשקט את מסקנת השנה שעברה.
הנתב הוא עדיין נקודת אכיפה חזקה, כי הוא רואה תעבורה שלקוח לא יכול לעקוף בלי להגדיר את עצמו מחדש. זו אינה הבטחה שכל שדה בכל פרוטוקול יישום אינו חושף דבר, והיא אינה תחליף לכתיבת הנתיבים שבחרתם להתיר.