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

קראו את המספר כשלב

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

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

Code familyStageWhere the evidence lives
829, 703Link or dial completionClient event log, remote listener reachability
720PPP negotiation and miniport bindingAdapter state, bindings, client log detail
691, 649, 812Identity and authorizationGateway or authentication server decision
Connected, no trafficAddressing, routing and resolutionRoute table and resolver configuration

שלב ראשון: הקישור וניסיון החיוג

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

Get-VpnConnection -Name 'Corp' | Select-Object Name,ServerAddress,TunnelType,AuthenticationMethod,ConnectionStatus
Test-NetConnection -ComputerName vpn.example.net -Port 443
Get-WinEvent -LogName Application -MaxEvents 200 | Where-Object ProviderName -match 'RasClient' | Select-Object -First 15 TimeCreated,Id,Message

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

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

שלב שני: PPP וקשירת המיני-פורט

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

Get-NetAdapter -IncludeHidden | Where-Object InterfaceDescription -match 'WAN Miniport' | Select-Object Name,Status,ifIndex
Get-NetAdapterBinding | Where-Object ComponentID -match 'ms_pptp|ms_l2tp|ms_sstp|ms_agile' | Select-Object Name,ComponentID,Enabled

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

שלב שלישי: זהות והרשאה

691 פירושו שאישורי הכניסה נדחו. 649 פירושו שלחשבון אין הרשאת חיוג, ו-812 פירושו שמדיניות גישה מרחוק דחתה את החיבור. אלו החלטות, לא תקלות תעבורה, והלקוח יכול רק לדווח עליהן.

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

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

שלב רביעי: מחובר, ושום דבר לא עובד

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

Get-NetRoute -DestinationPrefix 10.24.0.0/16 | Select-Object DestinationPrefix,NextHop,InterfaceAlias
Resolve-DnsName files.corp.example.internal
Test-NetConnection -ComputerName 10.24.6.15 -Port 445

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

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

ניסיון אחד, שינוי אחד, רשומה אחת

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

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

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

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