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

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

קודם התעודה, אחר כך המנהרה

שתי ייבואים חשובים. זהות הלקוח נכנסת אל Cert:\LocalMachine\My דרך Import-PfxCertificate, וה-CA המנפיק נכנס אל Cert:\LocalMachine\Root דרך Import-Certificate. עלה לבדו אינו מוכיח שום שרשרת, ולכן דילוג על הייבוא השני משאיר את האימות בלי בסיס. מעבר לנוכחות, המפתח הפרטי חייב להיות מצורף וחשבון המחשב חייב להיות מורשה לקרוא אותו. Get-ChildItem Cert:\LocalMachine\My מפרט מה הגיע; השוו טביעות אצבע ולא נושאים, כי נושאים כמעט זהים נפוצים.

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

צרו את הפרופיל ואת המסלולים שלו

Add-VpnConnection -Name "Office IKEv2" -ServerAddress vpn.example.com -TunnelType Ikev2 -EncryptionLevel Required -AuthenticationMethod MachineCertificate -AllUserConnection כותב את הפרופיל. המתג -AllUserConnection מפרסם אותו בספר הטלפונים הגלובלי, מתאים לקופסה משותפת או מנוהלת כשירות; השמיטו אותו למשתמש יחיד. כל כתובת שתעבירו חייבת להתאים לשם ה-DNS בתעודה של השרת, אחרת הכשל מופיע לאחר שהמנהרה כבר עולה. לאחר מכן מוסיפים קידומות אחת בכל פעם עם Add-VpnConnectionRoute, ורק את אלה שהתכנון באמת צריך.

ל-IPv6 יש מוזרות: Windows מסרב ל-::/0 כמסלול VPN, ולכן ::/1 ו-8000::/1 יחד מכסים את אותו מרחב כתובות. ניתוב קידומת גם אינו מעניק דבר בחומת האש המרוחקת, ולכן רשימת הקידומות ומדיניות חומת האש נשארות מסמכים נפרדים.

פרטי הגישה שייכים לשיטת האימות

פרופיל עם תעודת מכונה אינו זקוק לשום סוד משתמש, ואילו פרופיל EAP-MSCHAPv2 כן זקוק. במקרה השני המודול VPNCredentialsHelper מספק את Set-VpnConnectionUsernamePassword, והוא רוצה טקסט פשוט: $cred.Password הוא SecureString, ולכן פרשו אותו תחילה עם GetNetworkCredential().Password. התקינו את המודול בכל מקום שבו הפקודה רצה, לא רק בתחנת העבודה שבה נוסחה. EAP-TLS או שיטה מותאמת אינם משתמשים ב-cmdlet הזה כלל; הם לוקחים במקום זאת XML של תצורת EAP.

rasdial "Office IKEv2" מעלה את החיבור מתוך מעטפת, וזו הדרך המהירה ביותר לראות את התוצאה בחזית ולא ביומן אירועים.

מה שמנהרה מחוברת אינה מוכיחה

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

כשמשנים פרופיל, מחקו את הקודם עם Remove-VpnConnection -Name "Office IKEv2" -Force לפני יצירתו מחדש; אחרת הגדרות ומסלולים מיושנים נשארים דרך העריכה. אם הוא עדיין לא מתחבר, השוו את טביעת האצבע הרשומה בפרופיל לזו שנמצאת במאגר, כי Windows עשוי להחזיק הפניה לזהות שהוחלפה בינתיים תחת נושא שלא השתנה.

שמרו את טביעת האצבע, שיטת ה-EAP ורשימת המסלולים לצד הפרופיל. יחד הם מסבירים את רוב מה שמשתבש בהמשך.

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