למה מסלול VPN לא מציג שער ביציאה של ip route
שורה עם התקן ובלי שער היא מסלול ישיר, לא שבור. קראו יעד, dev ו-scope, ואז אמתו עם ip route get.
טבלאות ניתוב נקראות לעיתים קרובות כשבורות בכל פעם שעמודת השער נשארת ריקה, בשעה שהשורה בדרך כלל שלמה בפני עצמה. השדה via מופיע רק כאשר הגרעין מוסר את החבילה לכתובת של קפיצה הבאה; מסלול המחובר לממשק מגיע ליעדים שלו במקום זאת דרך פתרון שכבת הקישור או דרך עמית נקודה לנקודה. קריאת העמודות משמאל לימין אומרת לכם באיזה מקרה אתם נמצאים, וקריאה זו צריכה להתרחש לפני שמישהו עורך מסלול ברירת מחדל. רוב הפניות על שער חסר מסתיימות בהבחנה הזו.
קראו שורת מסלול עמודה אחר עמודה
כל רשומה נפתחת ביעד ובאורך הקידומת שלו, ואז מוסיפה משנים באוצר מילים קבוע: via, dev, proto, scope, src ו metric. שורה כמו 198.51.100.0/24 dev tun0 proto kernel scope link src 198.51.100.2 צפופה אך מוגדרת במלואה. דבר אינו חסר בה, וכתובת נתב אינה משתמעת ממנה.
היעדרו של via הוא החלק המעניין. בלי קפיצה הבאה, הגרעין פותר את היעד ישירות בממשק הנקוב, אשר עבור מנהרה פירושו מסירת המסגרת להתקן המנהרה והשארת העטיפה לטפל בה משם. proto kernel מתעד שהרשומה הותקנה אוטומטית כשכתובת הוקצתה, ולא שהוקלדה בידי מנהל. scope link אומר שהיעד נגיש בקישור הזה בלי לעבור בנתב, ו src נוקב בכתובת שהגרעין יעדיף כמקור לתעבורה שמתאימה.
כעת קראו מסלול ברירת מחדל באותה דרך: default via 192.0.2.254 dev eth0 proto static metric 100. כאן via נוכח משום שהחבילה אכן זקוקה לקפיצה הבאה, וקפיצה זו חייבת בעצמה להיות נגישה ב eth0. שתי השורות אינן וריאציות זו של זו; הן עונות על שאלות שונות בדבר לאן התעבורה הולכת.
שני צורות מסלול שמתבלבלים ביניהם
מסלול תת-רשת של מנהרה ומסלול ברירת מחדל נראים דומים בצילום מסך ומתנהגים אחרת לגמרי. השתמשו בטבלה שלהלן כעזר קריאה לשדות, ואז אמתו את המספרים בפועל במכונה שאתם מדבגים במקום להאמין לדוגמה ממדריך.
| Piece of the line | What it settles | What it says nothing about |
|---|---|---|
| The destination and mask | Which packets are eligible to match | Where those packets leave the host |
via plus its address | Which next hop receives them, and therefore that a router is involved | Whether that router is reachable or sane |
dev | Which interface carries the encapsulated or raw packet | Whether the interface is up or has a carrier |
proto and scope | Who installed the entry and how far the destination is considered to be | Whether a firewall later drops the traffic |
מה שהטבלה לא יכולה לומר לכם הוא הכוונה. מסלול ישיר לטווח פרטי דרך מנהרה הוא תכנון מכוון של מנהרה מפוצלת; אותה צורה על מארח שאמור לשלוח הכול דרך ה-VPN היא סימפטום. הכוונה חיה בתצורה שיצרה את הרשומה, אז הסתכלו על הכלי שהתקין אותה לפני שאתם מסיקים שהגרעין עשה משהו לא נכון.
כמו כן, שער חסר אינו רשות להמציא אחד. אם מסלול באמת זקוק לקפיצה הבאה, קפיצה זו חייבת להיות נגישה בממשק שנושא אותה, ובמנהרת נקודה לנקודה כתובת העמית אינה אותו אובייקט כמו הכתובת המקומית. התייחסות לכתובת המנהרה המקומית כאל נתב Ethernet היא דרך נפוצה ליצור מסלול שנראה נכון ולא מעביר דבר.
שאלו את הגרעין באיזו שורה הוא ישתמש בפועל
קריאת הטבלה אינה אותו דבר כמו ביצוע החיפוש, משום שהגרעין מתייעץ בכללי מדיניות, בכמה טבלאות וברשומות שמורות לפני שהוא עונה. הפועל שמבצע את החיפוש האמיתי הוא ip route get, והוא מדפיס את המסלול שחבילה עם המאפיינים האלה הייתה נוקטת.
ip route get 203.0.113.37 from 198.51.100.2 iif tun0
החליפו ביעד שבאמת אכפת לכם ממנו, ואז הוסיפו from או iif כאשר התעבורה נבחרת לפי מקור או מועברת הלאה, משום שחיפוש מקומי רגיל יכול לבחור נתיב שונה מלקוח מועבר. התשובה נוקבת בממשק, בכתובת המקור שנבחרה ובכל קפיצה הבאה, וזה אותו מידע שדרכו הייתה מנותבת חבילה באותו רגע.
אם התשובה מפתיעה אתכם, הדפיסו את הכללים לפני כל שינוי: ip -4 rule show מפרט אותם לפי סדר עדיפות, ולקוח VPN שמתקין טבלה משלו או כלל לחבילות מסומנות לא יופיע בטבלה הראשית כלל. פירוט כל הטבלאות סוגר את הפער הזה.
ip -4 route show table all | grep -E 'tun|default'בדקו את שכבת הבסיס לפני שאתם מחליפים את ברירת המחדל
החבילות של המנהרה עצמה חייבות להגיע לנקודת הקצה המרוחקת, והן עושות זאת דרך הממשק הפיזי תוך שימוש במסלול שהתקיים לפני שה-VPN עלה. החלפת כל מסלול ברירת המחדל בלי לנעוץ את נקודת הקצה הזו שולחת את החבילות העטופות לתוך המנהרה שאמורות לבנות, והחיבור מתמוטט. אשרו תחילה את הנתיב לנקודת הקצה בחיפוש לפי כתובת נקודת הקצה בלבד.
הפרידו שלושה דברים כשאתם מבצעים את השינוי: מסלול נקודת הקצה שחייב להישאר בממשק הפיזי, הטווחים הפרטיים שאמורים להיכנס למנהרה, וברירת המחדל שמכריעה את כל השאר. פרקו אותם בסדר הזה, החילו אחד בכל פעם, והריצו שוב את החיפוש אחרי כל צעד. פינג שנכשל אחר כך מוכיח מעט מאוד בעצמו, מפני שהרשאות, ניתוב התשובות, DNS והשירות עצמו כולם נמצאים במורד הזרם של מסלול נכון.
רשמו את ארבעת הערכים שהשורה נתנה לכם לפני העריכה: יעד, קפיצה הבאה או היעדרה, התקן ומקור נבחר. אם שינוי מאוחר יותר יזיז אחד מהם, תדעו איזו החלטה שונתה באמת, ותוכלו לשחזר רשומה אחת במקום לנחש את כל הטבלה.