קראו שורת מצב שאומרת Security Associations (1 up, 0 connecting) והיא נראית כמו דוח על מנהרה אחת שעובדת. שתי תת־רשתות מעבירות דרכה תעבורה בו־זמנית, כך שנראה שהמספר משקר. הוא לא משקר; הוא סופר שיוכי IKE, ואחד מהם יכול לאחסן כמה ילדים. קראו את המלאים לפני שאתם נוגעים בהצעה או בנתיב.

למה הכותרת והתעבורה לא מסכימות

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

פלט מודרני מציג לפעמים סכום במקום הניסוח הישן “up”, ודמון המנוהל בידי swanctl אינו מונע כלל מהגדרות stroke ישנות. אל תניחו לא את הניסוח ולא את כלל הספירה בין גרסאות.

השוו שלושה מלאים לפני שתשנו משהו

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

swanctl --list-conns
swanctl --list-sas

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

swanctl --list-sas --raw | head -40
ip -s xfrm state

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

קראו את ההיררכיה, לא את הסכום

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

swanctl --list-sas
swanctl --list-conns --raw | grep -A4 'accounting'

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

טעון, מותקן ותעבורה שעוברת

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

swanctl --initiate --child accounting
swanctl --list-sas --raw | grep -E 'bytes|packets'

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

כשהספירה באמת שגויה

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

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

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