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

התחילו בחוזה הגישה, לא בקובץ הלקוח

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

דוגמה משרדית הופכת את הצורה למוחשית: שרתי אפליקציה ב-10.60.0.0/16, שמות פרטיים תחת corp.example, פותר פנימי בכתובת 10.61.0.53, והגלישה הרגילה נשארת בנתיב שהמכשיר כבר משתמש בו. הפריט האחרון הוא החלטת מדיניות, לא ברירת מחדל של הלקוח, וכמה לקוחות ישלחו הכול דרך המנהרה אם אף אחד לא יגיד אחרת. תעדו את החוזה עם תאריך ואחראי, כי הרשומה הזאת היא מה שיגיד לכם מאוחר יותר אם השתנתה המנהרה או המדיניות.

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

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

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

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

בנו חפץ אחד לכל פלטפורמה מתוך החוזה

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

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

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

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

PlatformArtifactCheck before handoff
WindowsVPNv2 profile or Add-VpnConnectionScope matches certificate store
macOSManaged VPN payload plus certificate payloadBoth payloads present in one profile
LinuxNetworkManager connection with strongSwan backendPlugin package installed on the image

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

מחובר אינו מבחן הקבלה. ב-Windows ‏Get-VpnConnection מציג את הפרופיל ו-route print מראה אם הקידומת הפרטית נחתה על ממשק המנהרה. ב-macOS ‏scutil --nc list מאשר את השירות הפעיל בעוד scutil --dns מציג את סדר הפותרים שהמערכת באמת תשתמש בו.

ב-Linux ‏nmcli connection show --active מוכיח שהחיבור פעיל ו-resolvectl status מציג DNS לכל קישור. פותר שקיים בקובץ החיבור אך חסר בפלט לכל קישור פירושו ש-DNS מפוצל אינו מיושם. זה ההבדל בין שמות שנפתרים לשמות שנפתרים דרך המנהרה, והוא משנה איזו קבוצת תמיכה מקבלת את הצעד הבא. השוו את הפלט לכל קישור לפני ואחרי שהחיבור עולה, ולא רק אחרי.

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

תנו גרסה לחבילה ושמרו נתיב חזרה

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

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

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