טבלת VPN ריקה אינה חוסמת דבר מעצמה
טבלת מדיניות בלי מסלול תואם אינה מפילה מנות; החיפוש ממשיך. הוסיפו פעולה סופית ואז בדקו את שני מצבי הכשל.
כלל מדיניות שולח מנות מסומנות לטבלה ייעודית, והציפייה הרגילה היא שאובדן מסלול ה-VPN חוסם אותן. המנגנון עושה משהו אחר. כשטבלה אינה מכילה מסלול תואם, החיפוש ממשיך לכלל הבא במקום לעצור, וטבלת main עדיין מחזיקה במסלול ברירת מחדל רגיל ל-uplink. התוצאה היא תצורה שנראית fail-closed ומתנהגת כ-fail-open.
שום דבר לא שבור; כך מוגדרת ניתוב מבוסס מדיניות.
החיפוש ממשיך כשבטבלה אין דבר
100: from all fwmark 0x36 lookup 42 110: from all fwmark 0x36 lookup default 32766: from all lookup main
קחו את מערך הכללים הזה: חיפוש מסומן הולך לטבלה 42, וכלל מאוחר יותר שולח את אותה סימון לטבלה בשם default. כל עוד טבלה 42 מחזיקה במסלול ברירת מחדל שמיש, החיפוש הראשון מספק את הנתיב. כשהמסלול הזה נעלם ושום דבר אחר בטבלה 42 אינו תואם, החיפוש אינו הופך להשלכה; העיבוד עובר לכלל הבא, וכשגם הוא לא מוצא דבר, הוא מגיע לטבלת main. שום דבר ברצף הזה אינו מדווח איזה כלל הפיק את התשובה הסופית, ולכן חיבור שעובד נראה כמו מדיניות שעובדת.
טבלה 253, שנקראת בדרך כלל default, היא טבלת ניתוב רגילה והיא בדרך כלל ריקה. שמה אינו הוראה להפיל מנות, והוא אינו אותו דבר כמו מסלול יעד של ברירת מחדל בתוך טבלה.
פעולות סופיות מסיימות את החיפוש
100: from all fwmark 0x36 lookup 42 110: from all fwmark 0x36 prohibit 32766: from all lookup main
כלל סופי יכול לבוא אחרי חיפוש ה-VPN במקום חיפוש בטבלה ריקה. עם אותו סימון, פעולת prohibit שממוקמת אחרי כלל טבלה 42 מסיימת את החיפוש כשהטבלה הזו אינה מניבה דבר, ומחזירה דחייה מנהלית במקום להציע לטבלת main הזדמנות נוספת. Unreachable ו-blackhole גם הם סופיים, עם התנהגות שגיאה שונה לשולח.
מסלול מסוג throw שונה: בתוך הטבלה הזו הוא מתנהג כאילו שום דבר לא תאם, כך שכללים מאוחרים עדיין מקבלים את תורם. זה הופך את throw לשימושי לנסיגה מכוונת ולשגוי כחסימה סופית.
אמתו עם הסימון והממשק האמיתיים
ip -4 rule show ip -4 route show table 42 ip -4 route get 198.51.100.20 from 10.44.0.2 iif lan0 mark 0x36
בדקו את הכללים והטבלה האמיתיים ולא תרשים, ואז שאלו את הזרימה עם הקשר המקור, הסימון והכניסה שיש לה באמת. חיפוש לקריאה בלבד המופנה ליעד, שנמסרים לו כתובת המקור, הממשק והסימון, מדווח את המסלול שהגרעין היה בוחר בלי שמנה תצא. אספקת סימון בשאילתה אינה מוכיחה שהחומת אש מסמנת תעבורה אמיתית; זו בדיקה נפרדת של כללי הסימון. אשרו את הערך עם מונה או יומן לפני הסקת מסקנות מהשאילתה.
בקשות שנוצרות מקומית זקוקות להקשר משלהן, כי נתיב הסימון שלהן שונה לעתים קרובות מזה של תעבורה מועברת. בדקו אותן עם ממשק היציאה שהאפליקציה הייתה משתמשת בו באמת.
שני מצבי כשל, לא אחד
מצב כשל אחד הוא היעלמות מסלול ה-VPN והתעבורה נופלת ל-uplink. מנהרה מתה שהמסלול שלה נשאר מותקן היא מצב אחר: המנות נשארות מכוונות לנתיב בלתי שמיש במקום ליפול, והתסמין הוא אובדן שקט ולא חיבור ישיר גלוי. בדקו את שניהם, וגם את ההתנהגות בעלייה, בהתחברות מחדש ובעצירת השירות.
כלל כזה עוזר רק כל עוד הוא קיים וכל עוד המנות עדיין נושאות את הסימון שבוחר בו. סקריפט כיבוי שמוחק את הכלל, או נתיב שמסיר את הסימון, מחזיר את ההתנהגות הפתוחה. כדאי להתאמן על המעברים האלה.
החילו את המדיניות על IPv6 בנפרד, והשאירו חריגות נקודות קצה מאושרות מפורשות ולא משתמעות.