מנות IKE כפולות: מצאו את המעבר החסר
בקשת IKE חוזרת היא אירוע טיימר, לא אבחנה. בנו שרשרת ראיות אחת מהמאתחל ועד לתגובה, עם מזהי הגרסה הנכונים.
היומן מציג את אותה בקשת IKE פעמיים, מישהו מצביע על הקישור הסלולרי, והכרטיס נסגר בניחוש. הניחוש הזה הוא המיתוס: מנה חוזרת היא תצפית על החלפה אחת, לא אבחנה של קישור. שליחה חוזרת היא התנהגות רגילה עם כללים משלה, והיא מופיעה בנתיבים בריאים בכל פעם שתגובה איטית. עקבו אחר התגובה לפני שאתם מאשימים ממשק.
המיתוס: בקשה חוזרת מוכיחה אובדן בקישור אחד
שני דברים שונים מייצרים כפילות, ואף אחד מהם לא נוקב באשם. המבקש יכול לחזור על בקשה מפני שלא קיבל תשובה, או שנקודת הלכידה יכולה להציג את אותה מנה פעמיים בגלל המקום שבו היא מחוברת למחסנית. ברז שרואה כניסה ויציאה באותו מארח יתעד בשמחה מנה אחת כשתיים, ולמפעיל שקורא את היומן הזה אין דרך להבחין ביניהן בלי מזהי ההחלפה. התייחסו לכפילות כאירוע טיימר עד שתוכלו לומר איזו משתי האפשרויות בידיכם.
שני קישורים סלולריים מחמירים את הבלבול במקום לשפר אותו. שורת יומן אחת נוקבת בממשק אחד, בעוד שהתגובה אולי יצאה דרך השני, כך שהממשק בהודעה מתאר היכן נראתה מנה ולא את צורת השיחה. זו גם הסיבה שהשאלה הראשונה היא איזו החלפה אתם בוחנים, ולא איזה קישור תקול.
מה השליחה החוזרת באמת אומרת לכם
ב-IKEv2, שליחה חוזרת פועלת כך: המבקש חוזר על בקשה כאשר לא הגיעה תשובה, והמשיב רשאי לשלוח שוב את תשובתו השמורה במקום לחשב תשובה חדשה. מזהי ההודעות שייכים להחלפה הזו, וזה מה שהופך בקשה חוזרת עם אותו מזהה למוכרת כעבודת הפרוטוקול ולא כניסיון חדש. ניסיון ראשוני זקוק לעתים קרובות ליותר מכתובת מקור או מ-SPI של המאתחל כדי להתאים, ולכן רשומת ההחלפה של הפלטפורמה עצמה עדיפה על רשימת מנות. IKEv1 נוהג לפי כללים אחרים עם מזהים אחרים, ואזהרת ספק על כפילות במנה הראשונה אינה זהה בכל הגרסאות.
אז חתימת זמן של שליחה חוזרת אומרת שטיימר פג. היא לא אומרת איזה דילוג היה איטי, ובוודאי לא אומרת שהמפעיל אשם. אלו טענות נפרדות, ורק השנייה שימושית בכרטיס.
ההשלכה המעשית היא לתעד את ההחלפה לפני שמסיקים מסקנה. רשמו את כתובת הקבלה המקומית, את נתיב התגובה שהמדיניות בחרה, את זוג העמית ואת מזהי ההחלפה במקום אחד, מפני שכל אחד מהם עונה על שאלה אחרת כשקוראים את הרשומה מאוחר יותר.
ארבע נקודות תצפית כשרשרת אחת
חשבו על ההחלפה כארבע חוליות בשרשרת ולא כארבעה מקומות נפרדים להסתכל בהם. חוליה מחזיקה בראיה או נשארת לא ידועה, והשרשרת עשירה במידע רק כמו החוליה החלשה ביותר שתועדה בה. הטבלה שלהלן היא המלאי: מה כל עמדה יכולה לבסס ומה היא משאירה בלי לגעת.
| עמדה | הראיה שהיא יכולה לספק | מה היא משאירה פתוח |
|---|---|---|
| המאתחל שולח | בקשה יצאה מהמארח הזה | אם הגיעה לעמית |
| המשיב מקבל | הבקשה הגיעה | אם נוצרה תגובה |
| המשיב שולח | תגובה יצאה מהשער | אם הלכה בנתיב המתוכנן |
| המאתחל מקבל | ההחלפה הושלמה | אם המדיניות קיבלה את התוצאה |
מלאו את השרשרת רק במקום שיש לכם גישה, וסמנו את השאר כלא ידוע במקום להסיק אותו. וו שמתעד מנות במכונה אחת לא אומר דבר על מה שקיבלה המכונה המרוחקת, ושורת יומן שמציינת שנראתה בקשה אינה ראיה לכך שאי פעם יצאה תגובה. פערים כנים שימושיים יותר מרשומה שנראית שלמה ונבנתה מניחושים.
מצאו את המעבר החסר הראשון
צעדו בשרשרת מהמאתחל החוצה ועצרו בחוליה הראשונה בלי ראיה. אם השער לא מתעד את הבקשה לעולם, התקלה נמצאת בנתיב שלפניה. כשהשער מתעד את אותה בקשה שוב ושוב בעוד הלקוח לא מתעד תגובה, הכיוון החוזר הוא החשוד: כתובת מקור, תרגום וסינון בכל גבול שאתם שולטים בו. אם התגובה מגיעה והלקוח עדיין לא מתקדם, השאלה עזבה את התעבורה והפכה למדיניות או למצב.
החזיקו את העמית והפרוטוקול קבועים בזמן ההשוואה, וזכרו ששהיה, אובדן, מדיניות ומצב יוצרים כל אחד ציר זמן אחר. רשת סלולרית אינה הסיבה אוטומטית, וקו נייח אינו אמין אוטומטית לכל דרישה. תעדו את שני הכיוונים בזמן שההחלפה חיה:
tcpdump -ni any -vv 'udp port 500 or udp port 4500'
כשהגישה נפסקת לפני הקצה המרוחק, הרשומה עדיין עוזרת אם היא אומרת היכן היא נפסקת. לכידה רק במאתחל יכולה להראות בקשה שיוצאת ותגובה שאינה מגיעה, מה שמצמצם את התקלה לכל מה שאחרי הוו הזה בלי להעמיד פנים שיודעים איזה דילוג הפיל אותה. סמנו את החוליות המרוחקות כלא ידועות והשאירו לאדם הבא עם גישה למלא אותן. כתוב כך, הרשומה נשארת כנה ועדיין קצרה.
השוו לפני שאתם משנים משהו. חזרה על אותה בקשה לאותו עמית עם אותו פרוטוקול משאירה את המשתנים ברי מנייה, בעוד איפוס, חידוש מפתח או עריכת מדיניות בין לכידות הורס את ההשוואה. אם שינוי בלתי נמנע, תעדו שוב מיד אחריו כדי שמה שלפני ומה שאחרי יתארו עדיין את אותה החלפה.
מה אומר דוח שימושי
דוח שראוי לפעול לפיו מצמיד בקשה אחת לתגובתה ומנקב בצעד הראשון שאין מאחוריו ראיה. המשפט הזה שורד קריאה כעבור שבוע בידי מהנדס שלא היה שם, והוא נותן לאדם הבא נקודת התחלה במקום חשוד.
לעולם אל תחלישו בדיקות זהות ואל תרחיבו את מערך הפרוטוקולים המותר רק כדי לבדוק תיאוריית שליחה חוזרת. שמרו את המנות ורשומות האירועים המקוריות לפני כל איפוס, מפני שאיפוס הורס בדיוק את החומר שעמדתם לאסוף ומוחק את התזמון שהראה היכן ההחלפה נתקעה.
המיתוס הוא שכפילות אחת מוכיחה שהמפעיל אשם. המציאות היא שכפילות אחת מוכיחה שטיימר פג, והתשובה חיה בנתיב התגובה.