Cloud VPN מול Cisco ASA: בנייה מחדש לאחר אי־התאמה בהצעה
Cloud VPN מקבע את ההצעה בתוך אובייקט המנהרה, ולכן אי־התאמה עם ה־ASA מחייבת בנייה מחדש. תעדו סלקטורים, יישרו את שני השלבים, נקו SA ישנים.
NEGOTIATION_FAILURE במנהרת Cloud VPN מול Cisco ASA בצד השני הוא כמעט תמיד אי־התאמה בהצעה או בסלקטורים, והעובדה השימושית הראשונה היא ששום עריכה לא תתקן אותה. Cloud VPN קובע את הצעת ה־IKE ברגע יצירת אובייקט המנהרה. אין שדה לשינוי אלגוריתם במקום, ולכן התיקון הוא מחיקה ויצירה מחדש עם נקודת התחלה מתועדת. התייחסו לזה כאל בנייה מחדש והעבודה הופכת לרשימת בדיקה במקום אחר צהריים של ניחושים.
קראו את הכשל לפני שמוחקים משהו
כשל במשא ומתן הוא בעיית שלב, ולוג הצד השני בדרך כלל מציין את השלב. כשל בשלב 1 אומר שהקצוות לא הצליחו להסכים על הצעה או לא הצליחו לאמת זה את זה. כשל בשלב 2 אומר שהמנהרה עלתה והסלקטורים המוגנים לא התאימו. אלה תיקונים שונים, וכדאי לחלץ את שורת הלוג לפני שמישהו נוגע בתצורה.
הכשל גם שולל אפשרויות. זו אינה נתיב VPC, לא כלל חומת אש בממשק המנהרה, ולא תקלת פתרון שמות בתוך הרשת. רדיפה אחריהם מייצרת שינויים בטוחים בעצמם שלא יכולים לשנות את התוצאה, והם מקשים לייחס את התיקון הסופי.
תעדו את שתי התצורות בזמן שהן עוד קיימות
מחיקת מנהרה לוקחת חצי דקה והורסת את הראיה היחידה שהייתה לכם. לפני כן, רשמו את הסלקטורים המקומי והמרחוק, את כתובת הצד השני, מי מחזיק בסוד המשותף, ואת ה־crypto map או פרופיל ה־IKEv2 של ה־ASA. ה־ASA עונה על שתי שאלות נפרדות: מה מוגדר ומה עולה כעת:
show running-config crypto ikev2
show crypto ikev2 sa
show crypto ipsec sa | include local ident|remote ident|statusבצד של Google קראו את אובייקט המנהרה ולא את תקציר הקונסולה, כי כתובת הצד השני ושדות הסלקטור הם הערכים שעליכם לשחזר במדויק:
gcloud compute vpn-tunnels describe tunnel-to-asa --region europe-west1 \
--format="yaml(peerIp,localTrafficSelector,remoteTrafficSelector,ikeVersion,sharedSecret)"רשמו את הערכים האלה בטיקט לפני המחיקה הראשונה. הבנייה מחדש שלמטה עובדת רק משום שאתם יכולים ליצור מחדש את אותו אובייקט עם הבדל אחד מכוון.
האלגוריתמים שצד אחד מסרב לנהל עליהם משא ומתן
Cloud VPN אינו בוחר מתוך טווח אלגוריתמי IKEv1 כפי שעושה צד שני מסורתי. הגדרות הצד השני שהוא מצפה להן קבועות: aes-cbc-128 להצפנה, sha1-96 גם לשלמות וגם ל־PRF, קבוצת Diffie-Hellman 2, 36,600 שניות לשלב 1 ו־10,800 שניות לשלב 2. מדיניות ה־ASA חייבת להציע בדיוק את הקבוצה הזו. הצעה שנייה ב־ASA אינה מזיקה כל עוד המתאימה נמצאת גם ברשימה.
IKEv2 נותן לשני הצדדים יותר מקום, אבל הכללים שומרים על אותה צורה: הפעילו PFS, בחרו קבוצת DH שהמנהרה תומכת בה, והשאירו את רשימת ההצעות קצרה מספיק כדי שאי־התאמה תהיה ברורה. צד ASA ב־Cloud VPN משמעו גם ניתוב סטטי, ולכן יש לתכנן ולפרט את הקידומות המוגנות ולא להשאיר אותן ל־BGP.
משך חיים שהועתק מתבנית של ספק אחר הוא הפנייה השגויה הרגילה כאן. Google מפרסמת את הערכים האלה כהגדרות חובה של הצד השני, ולכן קבעו אותם; ערך קצר יותר אינו מנוהל כלפי מעלה עד למה שה־ASA רוצה.
מחקו, צרו מחדש ונקו את המצב הישן
מחקו את המנהרה, לא את השער, ורשמו את השם ש־Cloud VPN נותן לתחליף, כי שמות מוקצים ולא נעשה בהם שימוש חוזר. צרו אותה מחדש עם הערכים המתועדים ואותה כתובת של הצד השני, ואז הוסיפו את ההצעה המתאימה לרשימת המדיניות של ה־ASA.
נקו את אגודות האבטחה אחרי השינוי ב־ASA ולפני קריאת התוצאה. ASA יכול להמשיך להציע מדיניות מיושנת עד שה־SA הנוכחי יפוג, ולכן תצורה נכונה נראית שבורה לאורך כל משך החיים הישן והצופה מסיק שהבנייה מחדש נכשלה כשהיא עוד לא החלה:
clear crypto ikev2 sa
clear crypto ipsec saודאו ששלב 1 עולה לפני שמסתכלים על שלב 2. כל עוד שלב 1 למטה, ההצעה או המפתח המשותף מראש שגויים, ועבודה על סלקטורים לא תשנה זאת.
הסלקטורים משתקפים, ואז המונים מחליטים
שלב 2 עובד רק כששני הקצוות מסכימים על הכתובות המוגנות, וההסכמה היא שיקוף ולא שיתוף. הסלקטור המקומי של Google חייב להתאים לסלקטור שה־ASA מכנה מרוחק, והסלקטור המרוחק של Google למה שה־ASA מכנה מקומי. מנהרה עם 0.0.0.0/0 בצד אחד ותת־רשת אחת בצד השני עוברת את שלב 1 ואז נכשלת בשלב 2 עם אותה שגיאה ראשית. אף צד לא יכול להרחיב את הרשימה של האחר.
עבור סלקטורים מבוססי מדיניות, פרטו כל זוג קידומות ושמרו את הרשימה בטיקט. תת־רשת שתתווסף בהמשך באתר דורשת עריכה בשני הקצוות, כי נתיב חדש ב־ASA לא מרחיב סלקטור, והתוצאה היא מנהרה שעולה ומעבירה תעבורה רק עבור הקידומות שהיו קיימות ביום הראשון.
סיימו בזרימה אחת ממארח למארח וקראו מוני בתים בשני הצדדים. מונים שעולים ב־ASA ונשארים שטוחים ב־Google בדרך כלל אומרים שהתגובה יוצאת דרך ממשק אחר, או שהסלקטור לא מכסה את קידומת החזרה. תעדו את האלגוריתמים, משכי החיים, הסלקטורים ואת שם המנהרה החדש, כי שינוי ההצעה הבא חוזר על הבנייה מחדש הזו והערכים האלה הופכים אותה לעבודה קצרה.