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

שני הסימנים חיים במקומות שונים ופגים לפי לוחות זמנים שונים.

שני סימנים, שני חיים

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

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

ההעתקה ביניהם היא שלב שאתם כותבים

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

ct mark set meta mark
meta mark set ct mark

רשמו את הכיוון לצד הכלל, כי הוא אינו מובן מאליו מהתחביר במבט ראשון. השורה הראשונה שומרת, השנייה מחזירה, ואף אחת מהן לא מחייבת את השנייה.

סווגו לפני החיפוש שצורך זאת

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

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

שאלו את הנתיב שאלה מסומנת

ip route get 10.77.0.10 mark 0x2

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

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

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

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