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

השורה שהסרתם הייתה קפיצה הבאה, לא מתג מדיניות

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

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

ארבעה מנופים, ארבע משימות שונות

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

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

What you are trying to changeDirective that decides itWhat it leaves alone
Which destinations use the tunnelredirect-gatewayPer-prefix routes and resolver choice
The next hop a pushed route points atroute-gatewayCoverage of public destinations
One reachable prefixrouteEvery other destination, default path included
All pushed routing and DNS at onceroute-nopullNothing, which is the problem

סננו את השורה הנדחפת, שמרו על הקפיצה הבאה

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

pull-filter ignore "redirect-gateway"

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

קראו את החיפוש, לא את הטבלה

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

ip route get 10.40.7.25
ip route get 203.0.113.77
ip rule show

הווריאנט def1 ראוי להכרות, כי הוא משאיר את ערך ברירת המחדל הישן גלוי בעוד זוג חצאי-ברירות מחדל מנצח את החיפוש. לכן שורה של 0.0.0.0/0 בפלט אינה מוכיחה דבר בעצמה. החיפוש עונה על השאלה שהרשימה רק נראית כעונה עליה.

DNS, IPv6 והמסלול הפרטי עדיין חייבים לעבוד

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

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

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