ה-SA הבן של IPsec פעיל, אבל מוני החבילות נשארים באפס
מוני חבילות באפס על SA בן מותקן בדרך כלל אומרים ששום דבר לא התאים לו. עקבו אחר זרימה מוצמדת אחת דרך המונים, המסלול, הבוררים והמקור.
העליתם את המנהרה, טיימר חידוש המפתחות סופר לאחור, ושני הכיוונים עדיין מציגים אפס חבילות. צמד המספרים הזה אינו אומר שהעמית דחה את המנהרה שלכם: CHILD SA מותקן עם מונים לא פעילים הוא מצב רגיל של שיוך ששום דבר עדיין לא התאים לו. העבודה היא להוכיח שחבילה הייתה אמורה להתאים, ואז למצוא את הנקודה שבה היא עזבה את המסלול שהבוררים מתארים. עשו זאת פעם אחת, לפי הסדר, ושמרו על בקשה זהה בין ההרצות.
מה מונה אפס באמת מוכיח
CHILD SA הוא צמד בוררים בתוספת המפתחות וה-SPI שמצפינים תעבורה שנופלת בתוך הטווחים האלה. התקנתו אומרת רק ששני הצדדים הסכימו על הטווחים האלה ועל המפתחות הנגזרים; הגרעין יחזיק אותו שעות בלי שתגיע חבילה אחת. לכן השאלה לעולם אינה אם המנהרה קיימת, אלא אם חבילה כלשהי מהבדיקה שלכם נפלה בתוך הטווחים ששני הצדדים ניהלו משא ומתן עליהם. אם לא, המונים נשארים באפס והשיוך פג ללא שימוש בסוף חייו.
ההבחנה הזאת משנה מה בודקים קודם. הצעה שנדחתה, כשל אימות או IKE SA גוסס מופיעים ביומן או ברשימת ה-SA, ולא כאפס שקט. מנהרה שמנהלת משא ומתן נקי ואז נשארת לא פעילה מצביעה דווקא על התאמה, ניתוב או מקור תעבורת הבדיקה.
שלחו זרימה שאתם יכולים לתאר לפני שתשלחו אותה
בחרו יעד בתוך תת-הרשת המוגנת ופתחו חיבור חדש אליו; דף שטענתם לפני שעה עשוי להיות מוגש מהמטמון, ותשובה במטמון לעולם אינה נוגעת במנהרה. אחר כך רשמו ארבעה ערכים כשהבקשה עדיין היפותטית: כתובת המקור שהאפליקציה תקשור, היעד, משפחת הכתובות, והשם או צמד הבוררים של הבן שאתם צופים בו. הרשומה הזאת היא מה שהופך מונה שטוח לטענה שאפשר לבדוק.
כתובת המקור היא הערך שאנשים מדלגים עליו, והיא זו ששוברת את הבדיקה לרוב. מחשב נייד עם כתובת קווית, כתובת Wi-Fi וכתובת מנהרה יכול לקשור כל אחת מהן בהתאם לחיפוש המסלול, ורק אחת עשויה להיות בתוך הטווח שסוכם. השתמשו בכלי שמאפשר להצמיד את המקור, כגון ping -I 10.1.0.5 10.2.0.9 או curl --interface 10.1.0.5, כדי שהחבילה לא תבחר בשקט כתובת אחרת. כשההרצה המוצמדת מזיזה את המונים וזו שאינה מוצמדת לא, מצאתם בעיית ניתוב ולא בעיית IPsec.
אילו מספרים לקרוא, ואיפה הם גרים
ב-Linux הפקודה ip -s xfrm state מדפיסה כל שיוך עם שורת lifetime current: שסכום הבתים והחבילות שלה שייך רק ל-SA הזה, ואחריה שורת stats: עבור מוני חזרות ושגיאות. אצל עמית strongSwan הפקודה swanctl --list-sas מציגה שורת in אחת ושורת out אחת לכל בן מותקן, וכל אחת מסתיימת במספר בתים ובמספר חבילות; כלי ה-stroke הישנים יותר מכנים את אותו צמד bytes_i ו-bytes_o. קראו את שני הכיוונים בנפרד, כי הכיוון שנשאר שטוח הוא הממצא. חיבורם יחד מסתיר בדיוק את האסימטריה שאתם מחפשים.
שתי התצוגות הן לפי שיוך, ולכן חידוש מפתחות מתקין צמד SPI חדש וקו הבסיס שלכם חוזר לאפס בלי שמשהו נשבר. רשמו את ה-SPI שאתם צופים בו לפני שטיימר החידוש יורה, אחרת תשוו SA חדש למספר ישן. אם היוצא עולה והנכנס נשאר שטוח, הבורר התאים והתשובה לא חזרה, מה שמעביר את החקירה להעברה של העמית ולמדיניות שלו עצמו. תיעוד התצורה של IKEv2 של strongSwan מכסה את מחזור החיים של ה-SA הבן ואת תזמון החידוש שמאחורי המספרים האלה.
נקודת התצפית היא משתנה נפרד ממקור החבילה. פריקת חומרה יכולה להעלות את מוני השיוך בשעה שלכידה תוכנתית בממשק לא מראה דבר, מפני שחבילות שנפרקו מדלגות על הוו שהלכידה יושבת עליו, והנכנס יכול לסטות באותה דרך. כשאין הסכמה בין השניים, השתמשו במונים כדי לענות אם משהו התאים ובלכידה כדי לענות איך נראתה החבילה.
מסלול, בוררים והיכן נולדה החבילה
השוו שלושה דברים זה לצד זה: המסלול שהגרעין בוחר ליעד שלכם, המדיניות שמנתבת תעבורה אל המנהרה, וצמד הבוררים שהבן ניהל משא ומתן עליו. ip route get 10.2.0.9 from 10.1.0.5 מציין את הממשק והמקור שהגרעין היה משתמש בהם, ולעיתים קרובות זה אינו הצמד שהנחתם. ip xfrm policy מציג את התבניות והבוררים המותקנים מקומית, ואילו swanctl --list-sas מציג על מה הסכים העמית. חיפוש ששולח את החבילה דרך הממשק הפיזי אינו מגיע למדיניות כלל, ולכן המונים לא יכולים לזוז.
אי-התאמות מגיעות בכמה צורות שנראות זהות מנקודת מבט של מונה. יעד IPv6 מחוץ לבורר IPv4, כתובת מקור מתת-רשת שגויה ומדיניות צרה יותר מהבן כולם מייצרים את אותו אפס. תקנו קודם את הסיבה הצרה ביותר, כי הרחבת בורר רק כדי להזיז מספר משנה את מה שהמנהרה מגינה עליו.
ואז יש את מקור החבילה, המלכודת ששער מציב למפעיל שלו עצמו. תעבורה שהשער מייצר בעצמו מושווית למדיניות היציאה, ואילו חבילה שהוא מעביר עבור לקוח מושווית למדיניות ההעברה, ולכן פינג מהמכונה יכול להצליח במסלול שאף לקוח לא נוקט בו.
שינוי אחד הפיך ודוח שעומד בסקירה
שנו רכיב אחד, חזרו על הבקשה הזהה וקראו את אותם מונים. מחיקת כל כללי חומת האש או החלפת כל הבוררים בבת אחת תזיז מספר ותשמיד את הראיה שאמרה לכם למה. אם ההרצה השנייה עדיין מציגה אפס, ביטלתם השערה אחת במקום לבזבז את אחר הצהריים.
כתבו את הממצא בצורה שמישהו אחר יוכל לשחזר: שם הבן, הטווחים שהתקבלו, המקור שהצמדתם, היעד שבדקתם, הכיוון שנשאר באפס וה-SPI שקראתם. המשפט הזה מפריד בין שיוך שאיש לא השתמש בו לבין אפליקציה מרוחקת שקיבלה את התעבורה ודחתה אותה. החזירו את השינוי כשהוא לא הזיז את המונים, ושמרו את הרשומה; האדם הבא מתחיל במקום שבו עצרתם. שום דבר במנהרה לא היה צריך להיבנות מחדש בשביל כל זה, וזו הנקודה בבדיקת ההתאמה לפני שנוגעים בתצורה.