אחרי שסקריפט ההתקנה רץ, מישהו צריך להיות הבעלים של שרת ה-VPN
הסקריפט יכול לבנות את השרת, אבל הוא לא יכול לקחת בעלות על מדיניות הגישה, על מסלול העדכון או על החזרה לאחור. הגדירו את המסירה לפני שאתם מריצים אותו.
שתי עבודות שונות נמכרות כאחת: להפוך מכונה לשרת VPN, ולהוסיף לקוח VPN למחשב נייד שאמור להצטרף לשער של מישהו אחר. סקריפט התקנה עונה לראשונה ואינו יכול לענות לשנייה, מה שה-README שלו ירמוז. קחו את הפרויקט setup-ipsec-vpn כדוגמה מוחשית: הוא בונה שרת IPsec/L2TP, Cisco IPsec או IKEv2 על מארח לינוקס נתמך באמצעות Libreswan ו-xl2tpd. זהו חוזה פריסה לשרת, לא מתכון כללי לכל מכונה. החליטו איזו עבודה יש לכם לפני שהסקריפט רץ, כי כל מה שאחר כך עוסק בשרת.
היו כנים לגבי המארח
מכונה שגם מסיימת משהו אחר, או שחומת האש שלה מנוהלת ממישור בקרה בענן ולא ממערכת ההפעלה, היא התקנה שונה ממכונה וירטואלית נקייה. רשמו את הפרוטוקול שאתם מפעילים ואת המהדורה שבה אתם משתמשים, ואז בדקו את שניהם מול רשימת התמיכה של הפרויקט, ולא מול פוסט בלוג מהשנה שעברה.
הפעלת השירות אינה פותחת את הדרך אליו. ב-IPsec על הרשת שלפני המארח לאפשר UDP 500 ו-4500, ובהתאם לפריסה גם את פרוטוקול ESP עצמו. סקריפט שמסתיים בהצלחה מאחורי קבוצת אבטחה שמפילה את פרוטוקול 50 יצר שרת שאיש אינו מגיע אליו, ושום דבר בפלט המתקין לא יגיד זאת.
מה המתקין באמת לוקח על עצמו
צפו לקובץ תצורה וסודות של IPsec, לתצורת דמון L2TP, לאפשרויות PPP וליחידות systemd שכבר מחזיקות בפורטים האלה. ה-README של הפרויקט מציין שקובצי התצורה הקיימים מגובים לפני שינויים, וזה מועיל ואינו אותו דבר כמו גיבוי של המארח. החליטו אילו רכיבים יתעדכנו בחבילות ההפצה ואילו בהרצה חוזרת או בשכתוב הסקריפט, כי אלה שני מסלולי תחזוקה עם מצבי כשל שונים.
נעלו את המהדורה שאישרתם. כתובת הורדה שמגישה את הענף הראשי הנוכחי עלולה להחזיר תוכן אחר בחודש הבא, לכן רשמו את ה-commit או המהדורה שהרצתם ושמרו עותק. ההרגל האחד הזה הופך מצב שאינו ניתן לייחוס למשהו שאדם שני יכול לחשוב עליו בשתיים בלילה.
מה הסקריפט לא יכול לתת לכם
אוטומציה מייצרת התקנה עובדת ועוצרת שם. היא אינה מחליטה לאילו משאבים פרטיים המנהרה צריכה להגיע, וזו שאלת מדיניות גישה שיש לחומת האש של המארח ולרשת שמעליה דעה לגביה. היא אינה מחליטה מי מקבל אישורים, איך הם נמסרים, או איך מוסרים את הגישה של אדם כשהוא עוזב. והיא אינה מחליטה כיצד המכונה משוחזרת אחרי עדכון גרוע, וזה החלק שמתגלה בדרך כלל ברגע הגרוע ביותר.
פרופילי לקוח וסודות מוצגים הם חומר גישה, לא יומני התקנה. פרופיל שנוצר והודבק בערוץ משותף הוא חשבון, ואותו סטנדרט חל על צילומי מסך של סיכום ההתקנה. נהלו מלאי מוגן של מצב הזהות הדרוש לשחזור השירות, וציינו אילו מהאישורים האלה בוטלו מאז.
הלקוח הראשון הוא מבחן הקבלה
קבלו את הפריסה מלקוח מורשה אחד, עם הפרוטוקול שהפעלתם בפועל. בדקו שהשם הפרטי נפתר, שדרך החזרה עובדת, שהתחברות מחדש מתנהגת כראוי, ושהיעד מחוץ לקבוצה המותרת נדחה. התחברות מוצלחת מאפליקציית לקוח אחרת אינה ראיה לזו ששלחתם.
אם הצירוף שאתם רוצים אינו נתמך עוד, בחרו מסלול מתוחזק לפני ההתקנה. החייאת מהדורה ישנה, החלשת אימות או הרצה חוזרת של סקריפט לא מוסבר הן דחיות ולא תוכניות תחזוקה, וכל אחת מהן מקשה את המסירה.
כתבו את דף המסירה
שמרו עליו קצר: השרת, המהדורה שבנתה אותו, הפורטים שהוא צריך, הרכיבים ובעלי העדכון שלהם, המשאבים המותרים, מסלול האישורים ונוהל השחזור. הוסיפו את מסלול הקונסולה או מחוץ לרצועה שבו תשתמשו כששינוי במנהרה הוא זה ששבר את הגישה. אז האדם הבא יורש שירות ולא פקודה שהוא חושש להריץ פעמיים.
סקרו את הדף הזה כשהמארח משתנה, ולא רק כשמשהו נשבר. מסמך מסירה שלעולם לא נקרא הוא מסמך שהפסיק בשקט להיות נכון.