כאן נערמים שלושה תעבורות, ולכל אחד מסגור משלו. מטען ה-VPN נעלם בתוך הפעלת TLS, הפעלת TLS הזו נעלמת בתוך חיבור TCP לפורט לולאה מקומית, והבתים של אותו חיבור נעלמים בתוך SSH אל מארח ממסר, שפותח את חיבור ה-TCP האמיתי אל מאזין ה-VPN. שום דבר בסידור לא משנה את מה ש- OpenVPN מאמת, ושום דבר בו לא הופך מאזין UDP לנגיש דרך TCP. קראו את השאר כתיאור של נתיב הבתים, לא כמתכון לעקיפת בקרת רשת.

מה ההעברה המקומית באמת מעבירה

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

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

התחלת הפעלת ה-SSH מוכיחה רק שהממסר נגיש ומאומת. היא לא אומרת אם המאזין הבא פועל, אם חומת אש בין הממסר למאזין מקבלת את החיבור, או אם ה-VPN יקבל את הפרופיל שלכם.

כוונו את הלקוח אל המאזין המקומי

דוגמה מוצהרת: הממסר יכול להגיע למאזין TCP בכתובת gw.internal.example:443, ופורט מקומי גבוה חושף את הנתיב הזה למחשב הזה בלבד.

ssh -N -L 127.0.0.1:24011:gw.internal.example:443 [email protected]

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

אחר כך העבירו את לקוח ה-VPN למצב TCP וכוונו אותו אל 127.0.0.1:24011. אם הפרופיל משתמש ב-UDP, העיצוב הזה לא יכול לעזור: ההעברה נושאת זרם בתים, ואין נתיב datagram דרכה.

הפרידו בין שני האימותים

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

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

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

אל תבנו לולאה מתחת למנהרה

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

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

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

סגרו את המאזין כשסיימתם

הפסיקו את הפעלת ה-SSH כשהמנהרה אינה נחוצה עוד, ואשרו שהפורט המקומי שוחרר. העברה נשכחת משאירה נתיב מאומת פתוח במחשב שאולי משותף.

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

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