ה-VPN של Windows לוקח את כל התעבורה? הסירו את נתיב ברירת המחדל
בטלו את הסימון של שימוש בשער ברירת מחדל ברשת המרוחקת, מחקו את נתיב ברירת המחדל שנדחף, החזירו את קידומות המשרד, ואז בדקו שוב DNS ו-IPv6.
אתם מתחברים ל-VPN של המשרד וכל עמוד בדפדפן מתחיל לעבור דרך אותה רשת: שרת הקבצים מהיר, כל השאר איטי, מסונן או נעלם. הלקוח אינו מתנהג רע; הפרופיל ביקש מנהרה מלאה. המתג שעוצר את זה הוא תיבת סימון אחת בתיבת דו-שיח שאפליקציית ההגדרות המודרנית אינה מציגה, והשער מקבל שוב מילה בכל התחברות. הסיור הזה עוקב אחרי הסדר שממשק Windows באמת מציג, ואז מכסה את הבדיקות שעדיין נכשלות כשטבלת הנתיבים נראית תקינה.
התחילו במאפייני המתאם, לא בהגדרות
אפליקציית ההגדרות מציגה את הפרופיל תחת רשת ואינטרנט, ואז VPN, אבל היא חושפת רק אפשרויות כלליות. ההחלטה על שער ברירת המחדל נמצאת במתאם. פתחו את רשימת המתאמים הקלאסית עם Win+R ו-ncpa.cpl, לחצו לחיצה ימנית על חיבור ה-VPN, בחרו מאפיינים, בחרו פרוטוקול אינטרנט גרסה 4, בחרו שוב מאפיינים ואז מתקדם. הסירו את הסימון משימוש בשער ברירת מחדל ברשת המרוחקת ואשרו את היציאה משלוש תיבות הדו-שיח.
התחברו מחדש לפני הבדיקה, כי תיבת הסימון מוחלת כשהמנהרה נוצרת והפעלה קיימת שומרת על הטבלה שבנתה. אם המתאם חסר כשהלקוח מנותק, התחברו פעם אחת ופתחו שוב את החלון. ללקוח של ספק שמתקין מתאם TAP או Wintun בלי עמוד מאפייני IPv4 אין תיבת דו-שיח כזו בכלל; עבורם אותה החלטה היא אפשרות מנהרה מפוצלת בהגדרות של הלקוח עצמו, ותיבת הסימון של המתאם היא המקום הלא נכון לחפש בו.
אותו שינוי מ-PowerShell
לפרופיל שנוצר במאגר ה-VPN של Windows, ההגדרה ניתנת לסקריפט, וזה מה שתרצו אם המכונה נבנית מחדש לעתים קרובות:
Set-VpnConnection -Name "Office" -SplitTunneling $true
Get-VpnConnection -Name "Office" | Select-Object Name,SplitTunneling
זה cmdlet מגיע רק לפרופילים במאגר הזה. חיבור שנוסף על ידי לקוח צד שלישי לא יופיע, והפקודה נכשלת בשגיאת שם שנראית כמו שגיאת הקלדה. שימו לב גם למה המתג לא עושה: הוא מונע מהלקוח להתקין נתיב ברירת מחדל, אבל הוא לא מסיר נתיבים שהשער דוחף בזמן ההתחברות, ולכן הסעיף הבא עדיין נדרש ברשתות רבות.
כשהשער דוחף את ברירת המחדל בחזרה
קראו קודם את הטבלה. שתי רשומות ברירת מחדל עם מדדים שונים אומרות ששינוי הפרופיל עבד ושהנתיב שנדחף החליף אותו בכל זאת:
route print -4
Get-NetRoute -DestinationPrefix 0.0.0.0/0 | Sort-Object RouteMetric
Get-NetAdapter | Select-Object Name,ifIndex
מחקו את ברירת המחדל ששייכת למנהרה והשאירו את הפיזית. השתמשו באינדקס הממשק מהפקודה השלישית, לא בכינוי של המתאם, כי סקריפטים שמעבירים כינוי נשברים ברגע ששם התצוגה משתנה:
Remove-NetRoute -DestinationPrefix 0.0.0.0/0 -InterfaceIndex 21 -Confirm:$false
route delete 0.0.0.0 10.8.0.1
המחיקה לוקחת איתה את המשרד, אז החזירו את קידומות הארגון דרך שער המנהרה. זו השורה שאנשים מדלגים עליה, וזו הסיבה ש«ה-VPN הפסיק לעבוד» מגיע אחרי שינוי מנהרה מפוצלת מוצלח:
route add 10.0.0.0 mask 255.0.0.0 10.8.0.1 metric 5 if 21
שום דבר מזה לא שורד התחברות מחדש, וזו התנהגות הוגנת ולא באג: המתאם נבנה מחדש והלקוח מיישם שוב את מה שהפרופיל והשער סיכמו. אם ברירת המחדל חוזרת בכל פעם, השער מוגדר לסרב למנהרה מפוצלת וימשיך לדחוף אותה, או ינתק את ההפעלה. זו המדיניות של מפעיל הרשת, והבקשה שייכת לשם ולא לסקריפט מקומי שנלחם בה פעם בכל התחברות.
בדקו שוב DNS, IPv6 והמדדים אחרי התחברות מחדש אחת
הסרת נתיב ברירת מחדל של IPv4 לא מוכיחה דבר על המשפחה השנייה או על פתרון שמות. מנהרה יכולה לשאת IPv6 בזמן שברירת המחדל של IPv4 נשארת מקומית, ורשימת פותרי שמות שנדחפה יכולה להשאיר שמות פנימיים עובדים בזמן שהשאילתות שמשתמשות בה עוברות בדרך אחרת. בדקו את שלושתם לפני שאתם קוראים לזה גמור:
Get-NetRoute -DestinationPrefix ::/0
Get-DnsClientServerAddress -InterfaceAlias "Office"
Get-DnsClientNrptPolicy
אם המצב חוזר בכל התחברות, העבירו את הפקודות לפעולה בכל התחברות במקום לערוך את הטבלה ביד: משימה מתוזמנת שמופעלת באירוע ההתחברות, או הגדרת המנהרה המפוצלת של הלקוח עצמו כשיש לו כזו. שמרו את אינדקס הממשק במשתנה וחפשו אותו בזמן ריצה, כי הוא יכול להשתנות כשמוסיפים או מסירים מתאמים.
החליטו למה ויתרתם
תעבורת האינטרנט המקומית כבר לא נבדקת או מסוננת על ידי המשרד, וכל דבר שמפורסם רק דרך המנהרה צריך עכשיו נתיב משלו. ארגונים מסוימים רואים במנהרה מפוצלת הפרת מדיניות, אז אשרו זאת לפני שינוי התקן מנוהל; ברירת מחדל שנדחפה היא לפעמים מנגנון האכיפה ולא תקלה. התיעוד של Set-VpnConnection מפרט את פרמטר המנהרה המפוצלת ואת סוגי הפרופיל שהוא חל עליהם.
ואז אמתו בסדר קבוע: מי הבעלים של נתיב ברירת המחדל, גלישה רגילה, מארח ארגוני אחד לפי כתובת, שם פנימי אחד, ואותם ארבעה אחרי התחברות מחדש אחת. אם הגלישה עובדת והמארח הארגוני נכשל, חסר נתיב הקידומת ולא ברירת המחדל שהסרתם, ותיקון זה זול בהרבה מבנייה מחדש של הפרופיל.