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

איזה ערך המנהרה משתלטת עליו

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

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

route print -4
Find-NetRoute -RemoteIPAddress 198.51.100.30

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

נתיב מארח מנצח בזכות הספציפיות

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

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

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

הפוך את הנתיב לשורד את ההתחברות הבאה

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

הצורה הידנית היא פקודה אחת. החולשה שלה היא שינוי הרשת ולא ההתחברות מחדש.

route -p add 198.51.100.30 mask 255.255.255.255 10.0.0.1 metric 1 if 7

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

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

rasdial Office
route add 198.51.100.30 mask 255.255.255.255 10.0.0.1 metric 1 if 7

כל מה שמעלה את המנהרה הוא המקום הנכון לשורה השנייה, וrasdial חוזר רק אחרי שהחיבור נוצר, ולכן הנתיב נוחת מאחורי הערכים של המתאם עצמו. הרץ אותו שוב אחרי חזרה משינה, כי השהיה יכולה להפיל את הנתיב ולהשאיר את המנהרה למעלה. אם המשימה היא ההפוכה, לדחוף קידומת אחת אל תוך המנהרה בעוד השאר נשאר מקומי, אז Add-VpnConnectionRoute הוא הכלי הנכון.

ניתוב אינו יכול לבחור תהליך

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

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

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

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

ודא שהחריגה שרדה התחברות מחדש

בחן את השינוי כפי שהוא ייכשל: התנתק, התחבר מחדש, פתח יישום חדש, ואז בקש כתובת אחת שחייבת להישאר מקומית ואחת שחייבת להשתמש במנהרה. השווה את שתיהן עם Find-NetRoute במצב מחובר.

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

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