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

שני כשלים, שתי צורות שונות

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

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

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

שלול העברה לפני שאתה מקטין משהו

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

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

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

מדוד היכן מתחיל השבר

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

sysctl net.ipv4.ip_forward
sudo iptables -S FORWARD
ip route get 10.30.0.9

לאחר מכן בדוק גדלים עם סיבית don’t-fragment, מהלקוח, לעבר מארח מעבר לשער:

ping -M do -s 1200 10.30.0.9
ping -M do -s 1400 10.30.0.9

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

ObservationPoints towardWhere to look
Nothing beyond the gateway worksForwarding or return routeForwarding flag, filter rules, routing table
Small works, large stallsPacket size on the pathTunnel MTU and the link underneath
Only names failDNS resolutionThe resolver configured for the tunnel
Works sometimesMultiple paths or state expiryFlow selection and NAT state

תקן את השכבה שהוכחת

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

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

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

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