חיבור מחדש של לקוח OpenVPN: שלושה אמצעי שליטה, שלושה היקפים
ניתוק הפעלה אחת, עדכון כל לקוח UDP והפעלה מחדש של הדמון הם פעולות שונות. קבעו תחילה את ההיקף, ואז אמתו את ההפעלה החדשה.
מישהו מבקש לחבר מחדש את לקוח ה-VPN, והבקשה יכולה להתכוון לשלושה דברים שונים. היא יכולה להתכוון לניתוק הפעלה מאומתת אחת, ליידע כל לקוח ששרת UDP עוזב, או להפעיל מחדש את הדמון עצמו. לכל אחת רדיוס השפעה אחר, ובחירה שגויה הופכת תיקון למשתמש אחד להשבתה של השירות. ההיקף הוא ההחלטה, והפקודה נגזרת ממנו.
שאלו מי אמור להיפגע לפני שתשאלו באיזה אמצעי שליטה להשתמש.
מופע אחד: ממשק הניהול
ממשק ניהול מוגדר יכול להציג מופעים מחוברים ולנתק בדיוק אחד מהם. כל הפעלה נושאת מזהה לקוח, ו-client-kill CID מכוון לאותו מזהה ולא לשם משותף. קראו את המזהה החי מפלט המצב הנוכחי, כי ערך שהועתק מיומן ישן יותר מתייחס להפעלה שכבר אינה קיימת. ניתוק המופע מסיים את החיבור הזה ושום דבר אחר.
הוא אינו מבטיח חיבור חדש. האם הלקוח יחזור תלוי בהגדרות הניסיון החוזר שלו, ברשומות המרוחקות שנותרו לו, בדרישות האימות שלו ובשאלה אם אפליקציית הפיקוח עדיין פועלת. לקוח שחוזר מקבל מזהה חדש, ולכן השוואת מזהים היא הדרך האמינה היחידה להבחין בין ישן לחדש.
הודעת יציאה של UDP אינה פקודה לכל לקוח
explicit-exit-notify היא הנחיית תצורה בנושא אירועי יציאה והפעלה מחדש. בלקוח UDP היא מודיעה לצד השני שההפעלה מסתיימת, והארגומנט המספרי שולט בכמה פעמים ההודעה נשלחת שוב. כשהשרת פועל מעל UDP הוא שולח הודעת שליטה על הפעלה מחדש ללקוחות המחוברים שלו, והערכים המתועדים מבדילים בין התחברות מחדש לאותו שרת לבין מעבר לרשומה מרוחקת אחרת. זהו אות מחזור חיים עם קהל רחב.
שום דבר בו לא בוחר לקוח שרירותי ברגע שרירותי. התייחסות אליו כאל כפתור חיבור מחדש מגיעה לכל הפעלה מחוברת בבת אחת.
אותות פועלים על התהליך, לא על הפעלה
SIGUSR1 מבקש מתהליך פועל להפעיל מחדש את החיבור שלו בלי לקרוא שוב את התצורה, ו-אפשרויות ההתמדה קובעות מה שורד את ההפעלה מחדש הזו. SIGHUP הולך רחוק יותר: הוא קורא שוב את קובץ התצורה ופותח מחדש את המשאבים שלו. SIGTERM ו-SIGINT מבקשים כיבוי מסודר. אלה פעולות ברמת התהליך: בשרת עם לקוחות רבים הן משפיעות על כל הפעלה שהתהליך נושא, לא על זו הנקובה בכרטיס.
כשהתהליך פועל תחת מנהל שירותים, השתמשו בשליטה של המנהל עצמו במקום לשלוח אות ל-PID שמצאתם ברשימת תהליכים. קראו את היחידה כדי לראות איזה אות המנהל שולח, כי הפעלה מחדש וטעינה מחדש עושות דברים שונים לאותו דמון.
קבעו את ההיקף לפני בחירת אמצעי השליטה
שלוש שאלות מכריעות. מי אמור להיפגע: משתמש אחד, כל לקוחות של שרת אחד, או הדמון וכל מה שהוא נושא. מה אמור לשרוד: התצורה, מצב המנהרה, או אף אחד מהם. מי מוסמך לעשות זאת: אינטגרציית הניהול, בעל השירות, או מפעיל הרשת ששולט בהודעת היציאה. ענו על אלה ורק אמצעי שליטה אחד מתאים.
הוספת מאזין שליטה לא מאומת כדי לקבל כפתור חיבור מחדש מוסרת למי שמגיע לפורט הרבה יותר מאותו כפתור.
אמתו את ההפעלה החדשה, לא את הניתוק
אירוע ניתוק מוכיח שההפעלה הישנה הסתיימה. הוא לא אומר דבר על הפעלה חדשה שמאומתת, מקבלת כתובת, מתקינה נתיבים או מגיעה למשאב שהמשתמש היה צריך. בדקו את המזהה החדש, אחר כך את מצב המנהרה, אחר כך משאב אמיתי אחד. שלושת השלבים האלה הם ההבדל בין חיבור מחדש לחיבור שעובד.
כתבו את ההיקף ברישום השינוי. 'חיברתי מחדש את הלקוח' אינו תיאור כשהלקוח היה אחד מארבעים בשרת משותף.