IKEv2 משתמש ב-UDP 500 ו-4500: איזה מהם נושא את הנתונים?
החילוף הראשון והנתיב שנושא את הנתונים אינם אותו זרם. בדקו את שני הפורטים, וזכרו ש-ESP מקורי הוא מספר פרוטוקול, לא פורט.
פתיחת UDP 500 בחומת האש מאפשרת למנהרה לנהל משא ומתן, ואז החיבור מפסיק להעביר תעבורה. רשימת הפורטים הייתה חסרה, לא שגויה. IKEv2 מתחיל בשקע אחד ובפריסות אמיתיות רבות ממשיך בשקע אחר, בעוד שהמטען עשוי כלל לא להיות פורט. קריאת השלבים לפי הסדר מסבירה איזה כלל חסר.
שני פורטים, שני תפקידים
IKEv2 מתחיל בחילופי מפתחות ב-UDP 500, שם הצדדים מאמתים את עצמם ומקימים אסוציאציית אבטחה למנהרה. נתיב הנתונים שאחר כך הוא עניין נפרד: ייתכן שהוא ESP מקורי, כלומר מספר פרוטוקול IP ולא פורט, או תעבורה עטופה ב-UDP בפורט 4500. ההפרדה ביניהם בסקירת חומת אש היא ההבדל בין מנהרה שמנהלת משא ומתן למנהרה שעובדת. שקע אחד נושא את הבקרה והשני את המטען.
לכן כלל שמתיר רק 500 מייצר את הסימפטום המבלבל ביותר במשפחת הפרוטוקולים כולה: המשא ומתן מצליח ושום דבר שימושי לא בא בעקבותיו. המצב מציג עמית, היומן מציג IKE SA שהוקם, והאפליקציה עדיין מגיעה לפסק זמן. ההרשאה החסרה שייכת לזרם אחר מזה שהצליח זה עתה.
למה 4500 קיים בכלל
התקני NAT רבים אינם יכולים להעביר פרוטוקול שאינו TCP או UDP, וחלקם כותבים מחדש כתובות באופן ששובר את בדיקת השלמות של ESP. עטיפת ESP בתוך UDP פותרת את שתי הבעיות, במחיר כותרת נוספת ופורט שני שצריך להתיר. העטיפה הזו היא הסיבה שהפורט השני קיים בכלל.
לאחר זיהוי NAT, גם IKE עצמו עובר ל-4500 כדי שכל התעבורה תשתף נתיב אחד דרך המתרגם. סמן בן ארבעה בתים שאינו ESP מבדיל הודעות בקרה מנתונים באותו שקע. המעבר הוא החלטת פרוטוקול, לא העדפה של מנהל.
היכן משתנה פורט המקור
מתרגם עשוי לכתוב מחדש את פורט המקור של הלקוח, כך שהצמד שנראה בשרת אינו תואם לצמד בלקוח. הסתכלו על שני הצדדים של כל קפיצת NAT לפני שאתם מסיקים שמתעלמים מכלל. פתרון תקלות בלקוח בלבד יכול להניב כלל שנראה נכון ובכל זאת נכשל.
מימושים התומכים ב-MOBIKE יכולים גם לעבור ל-4500 בלי זיהוי NAT, ופריסות מסוימות כופות את הנתיב הזה במכוון. לכן ראיית 4500 היא עדות להחלטה, לא הוכחה לנתב ביתי.
בדקו את שני הזרמים בכל גבול
עברו שלושה גבולות: רשת הלקוח, כל חומת אש ביניים והשרת. כל אחד צריך את הזרמים שהפריסה מתעדת, לא את הזרמים ממאמר על מקרה אחר.
sudo swanctl --list-sas
sudo tcpdump -ni any 'udp port 500 or udp port 4500'
sudo iptables -S | grep -E '500|4500|esp'
ip xfrm state
שורת ESP ברשימת חומת אש היא התאמת פרוטוקול, ולכן כלל פורט לעולם אינו מכסה אותה. אם המפעיל משתמש בפורט מותאם, פעלו לפי התצורה המתועדת בשני הקצוות, כי לקוח אינו יכול ליצור מאזין בשרת על ידי בחירת מספר מוכר.
תעדו היכן נעצר המשא ומתן והאם הותקנה אסוציאציית אבטחה בת, כי הצמד הזה מפריד בין נתיב חסום לבין שגיאת אימות או מדיניות. אחר כך חזרו על הבדיקה עם אימות שרת מופעל, כי נגישות אינה אימות. הצעד האחרון הזה מפריד בין פורט מותר לבין עמית מהימן.