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

דעו מה האפשרות באמת מוסיפה

IPsec מקורי נושא מטענים מוצפנים בתור פרוטוקול IP 50, בלי מספר פורט שצריך להתיר. NAT traversal עוטף את החבילות האלה ב-UDP אל פורט 4500, ולכן כל כך הרבה כללי חומת אש מזכירים את הפורט הזה. RFC 9329 מוסיף ייצוג זרימה: חבילות IKE ו-IPsec שתיהן נוסעות בתוך חיבור TCP אחד, בדרך כלל אל פורט 4500.

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

בדיקה מקדימה לפני שנוגעים בחומת האש

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

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

בצד המשיב: האם משהו מאזין

התחילו מהשקע. ss -ltnp | grep 4500 מראה אם קיים מאזין TCP ואיזה תהליך מחזיק בו. היעדר שורה מסיים את החקירה בתצורת השער ולא ברשת.

אם השקע קיים, צפו בלחיצת היד במקום לנחש מצד הלקוח: tcpdump -ni any 'tcp port 4500'. לחיצת יד תלת-כיוונית שהושלמה ואחריה שתיקה פירושה שהזרימה התקבלה והחלפת ה-IKE בתוכה נכשלה, בעוד SYN בלי תשובה מצביע על סינון או על הכתובת הלא נכונה.

השוו למסלול UDP באותו חלון לכידה כדי שלא יתבלבלו: tcpdump -ni any 'udp port 4500 or proto 50'. תעבורה על פרוטוקול 50 או פורט UDP 4500 כשאתם חושבים ש-TCP בשימוש פירושה שהקצוות מעולם לא הסכימו על החלופה. תעדו גם בשער אם אפשר, כי לכידה בצד הלקוח לא יכולה להראות מה הקצה המרוחק שלח.

קבלו בארבעה שלבים נפרדים

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

StageWhat you checkWhat it proves
1TCP connection established to 4500A listener exists and the path permits it
2IKE_SA authenticated in the gateway logBoth peers agreed on the encapsulation
3CHILD_SA installed, visible with ip xfrm stateKeys exist for the protected traffic
4A new application exchange succeedsThe data path works, not just the control path

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

חזרה לאחור, והמחיר של להשאיר את זה דלוק

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

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

רשימת קבלה

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

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

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