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

מבחוץ הן נראות זהות ודורשות תיקונים שונים. קראו את יומן הלקוח בנקודה שבה מתקבלת ההחלטה על המסלול.

הוכיחו שהמסלול חסר, לא רק שהוא שבור

התחילו בהוכחה שהמסלול חסר ולא שבור. בלינוקס, ip route show dev tun0 מפרט מה הלקוח התקין בהתקן המנהרה. בווינדוס, route print או Get-NetRoute מציג את אותו דבר בצורת טבלה.

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

תזמון: ההוספה רצה לפני שההתקן היה קיים

הלקוח מנתח את PUSH_REPLY של השרת לאחר שער הבקרה עלה ולאחר שהגדיר את הממשק. רק אז הוא נוגע בטבלת הניתוב, בכל מנגנון שהפלטפורמה מספקת. לינוקס עוברת דרך netlink; ווינדוס משתמשת ב-API שדורש אסימון מוגבר. סקריפט או לקוח שמוסיף מסלולים ברגע שהוא קורא את התצורה עלול לרוץ לפני שהתקן TUN/TAP קיים, והליבה דוחה את ההוספה.

אותו מירוץ מסביר מדוע מסלול שהוקלד ביד עובד ואילו האוטומטי לא: עד שאתם מקלידים אותו, הממשק כבר למעלה.

route-delay קיים בדיוק למקרה הזה, ו-route-up מפנה לסקריפט שרץ לאחר שהממשק והמסלולים הוגדרו. שימו מסלולים התלויים בכתובת המנהרה בוויסות הזה ולא בשלב מוקדם.

הרשאות: מי רשאי לשנות את הטבלה

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

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

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

מדיניות: אפשר להשליך מסלולים שנדחפו בכוונה

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

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

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

השוו את רשימת הדחיפה לטבלה

לאחר ההתחברות, הניחו את רשימת הדחיפה של השרת לצד הטבלה של הלקוח. בלינוקס זה ip route show dev tun0; בווינדוס, route print או Get-NetRoute. אם המסלול חסר, תקנו קודם את ההתקנה. אם הוא קיים והתעבורה נכשלת, עברו למדיניות העברה וחומת אש.

רשמו את גרסת הלקוח, את החשבון שתחתיו הוא רץ והאם הוא מבוסס שירות. שלוש העובדות האלה אומרות לאדם הבא אילו סיבות נשללו.

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