הפעלת VPN ואתר באותו מארח בלי התנגשויות
מארח אחד יכול לשרת אתר ולסיים עמיתי VPN, אבל רק בהחלטה מפורשת על מאזין, זהות וניהול. אחר כך בדקו את הגבולות.
כשמחלקים מארח אחד בין אתר ציבורי ל-VPN, יורשות שתי שאלות ולא אחת: מה מאזין איפה, ומי מאמת את מי. ענו על שתיהן לפני שנוגעים בקובץ תצורה, כי ברירות המחדל שגויות בדרכים שמתגלות רק תחת עומס. דף שנטען ב-HTTPS מוכיח שמאזין האינטרנט עונה, ולא אומר דבר על מאזין העמיתים. להלן סדר החלטות שמונע מהשניים לאכול זה את זה.
החליטו מה מאזין באיזו כתובת ותחבורה
כתבו טבלה עם שלושה עמודות, כתובת, תחבורה ופורט, ושורה אחת לכל שירות, כולל ממשק הניהול. TCP 443 לאתר ו-UDP 443 ל-VPN אינם התנגשות גם כשהמספרים זהים, מפני שהתחבורה שונה. שני שירותים באותה כתובת, אותה תחבורה ואותו פורט זקוקים לסידור שהמימוש מתעד, ולא לסידור שממציאים בזמן תקלה. הטבלה הזו היא גם החפץ שהופך את השינוי הבא לבר-סקירה.
כתובות נפרדות או פורט שני הופכות בעלות לגלויה בלכידת מנות, וזה שווה יותר מאלגנטיות. כמה מימושים של VPN תומכים בשיתוף פורט עם שרת אינטרנט, אבל המנגנון ספציפי: הדמון בודק את הבתים הראשונים ומעביר תעבורה שאינה הפרוטוקול שלו. פרוקסי הפוך כללי ל-HTTP אינו עושה זאת, ושכתוב כותרות לא יגרום לו להבין לחיצת יד של מנהרה מוצפנת. קראו את הערות הפריסה של הפרוטוקול, כמו תיעוד מאזין OpenVPN, ופעלו לפי הסידור שהוא מתאר.
החליטו איזו זהות שייכת לאיזה שירות
תעודת דפדפן ואישור עמית VPN הם אובייקטים שונים עם מודלי אמון שונים. התעודה של האינטרנט מאומתת על ידי רשות ציבורית ומציינת שם מארח, בעוד אישור העמית מאמת התקן או משתמש מול המרכז ועשוי להיות חתום עצמית או מונפק פנימית. שימוש חוזר באחד בתור האחר עובד במקרים צרים ולעיתים נדירות שווה את הצימוד. השבתת האימות כדי שתעודה משותפת תתאים אינה תוכנית הפרדה; היא מסירה את הבדיקה שנתנה לאישור משמעות.
החזיקו את שני המחסנים עצמאיים וכתבו איזו רשות מנפיקה כל אחד. כשאחד מוחלף, השני לא אמור להזדקק לשינוי, ואם הוא כן, הצימוד הוא הדבר לתקן.
החליטו היכן גר הניהול
ממשק הניהול של ה-VPN שייך לנתיב ניהול, ולעולם לא למאזין הציבורי, גם כשהמארח כבר משרת את האינטרנט. שרת אינטרנט על 443 אינו מרמז שקונסולת העמיתים צריכה להיות נגישה מכל מקום, והקונסולה היא בדרך כלל היעד בעל הערך הגבוה יותר. קשרו אותה לכתובת לופ-בק או ניהול, הגבילו אותה לפי מקור, והחזיקו נתיב התאוששות שאינו תלוי בכך שהמנהרה פעילה. נתיב ההתאוששות חשוב מפני שהכשל הנפוץ הוא לנעול את עצמכם בחוץ בזמן תיקון הנעילה.
כתבו כללי חומת אש צרים, אחד לכל מאזין, ותנו שם לממשק או לחשבון השירות היכן שהפלטפורמה תומכת בכך. כללים רחבים שפותחים את המארח מפני שהאתר זקוק ל-443 הם הדרך שבה ממשקי ניהול מגיעים לאינדקסים של סורקים.
סקרו את הכללים האלה מול טבלת המאזינים בכל פעם שנוסף שירות. הסקירה זולה והיא תופסת את הכלל שמישהו הוסיף בשתיים לפנות בוקר.
החליטו מה לעשות כשהשניים מתחרים
שיתוף מארח פירושו שיתוף מעבד, זיכרון, מתארי קבצים ורוחב פס, והמשאב השנוי במחלוקת אינו תמיד המובן מאליו. אתר עמוס יכול למלא את טבלת החיבורים, לרוקן את מקומות העבודה, או לדחוף את תור הדיסק חזק מספיק כדי שרישום ה-VPN ייתקע. הביטו בשימוש לפי שירות ולא בסכומים של המארח, מפני שממוצע מסתיר איזה תהליך רעב. אם עומס עבודה אחד משבש את האחר שוב ושוב, הפרידו ביניהם במקום לכוונן סביב התסמין.
ההפרדה יכולה להיות מכולה, מגבלת cgroup, תור נפרד או מארח שני, והבחירה הנכונה תלויה בכך איזה משאב מתחרה. שינוי פורט לא מתקן כאן דבר, ומופע גדול יותר לא מתקן דבר אם המגבלה היא תור רווי אחד. החליטו באמצעות מדידה: תנו שם למשאב, העמיסו אותו, ואז בחרו את ההפרדה הקטנה ביותר שמסירה את התחרות.
אמתו מבחוץ, ואז שוב לאחר הפעלה מחדש
בדקו מהתקן שאינו ברשת של המארח עצמו: טענו את האתר, העלו את המנהרה והגיעו למשאב אחד שמחייב אותה. אחר כך הפעילו מחדש כל שירות בנפרד וחזרו על הבדיקה האחרת, מפני שהפעלה מחדש היא הרגע שבו סידור מאזין משותף מאבד את הסדר שלו. אם ה-VPN עולה לפני שרת האינטרנט שבבעלותו הפורט המשותף, ייתכן שמנגנון השיתוף לא יתחבר לעולם, והתסמין הוא מנהרה שעבדה אתמול. הפכו את התלות למפורשת בסדר היחידות.
אחר כך אשרו את הגבולות: האתר עונה בפורט שלו, ה-VPN עונה בשלו, וממשק הניהול עונה רק מנתיב הניהול. רשמו את התוצאה לצד טבלת המאזינים עם התאריך. מארח שעובר את שלוש הבדיקות לאחר הפעלה מחדש הוא מארח שאפשר למסור למישהו אחר בלי תדרוך.