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

שני מודלים של שחזור, תנאי מכריע אחד

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

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

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

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

מה גיבוי אינו משחזר

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

What changedRestored by a configuration backupNeeds its own action
Service unit or startup orderingPartly, if the unit file was includedPackage state and enabled links
Kernel module or interface supportNoKernel or module rollback, or a boot-time decision
Peer or device authorizationOnly if the backup predates the revocationA deliberate decision about which peers return
Firewall rules applied outside the configOnly if they were capturedReplaying and verifying each rule

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

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

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

נקודת ביקורת, עדכון, ואז אימות מבחוץ

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

systemctl list-units --type=service | grep -E 'openvpn|wg-quick'
ss -lunp | grep -E ':51820|:1194'
journalctl -u wg-quick@wg0 --since '-10 min'

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

אמת מרשת שאינה משתמשת במנהרה: אמת לקוח מורשה אחד, פתור שם, והגע ליישום אחד מיועד. שורת מצב מקומית שאומרת שהממשק למעלה היא הצהרה על הממשק, לא על ניתוב, מפתחות או המדיניות שמקבלת עמית.

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

כשזה נכשל, השתמש בנתיב שבדקת

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

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

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

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

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