לולאת נתיב ברירת המחדל של WireGuard: מצאו את נתיב נקודת הקצה
נתיב ברירת מחדל מחזיר את החבילות המוצפנות של המנהרה לתוכה. קראו את נתיב נקודת הקצה, הוסיפו נתיב מארח אחד, ואז אמתו והחזירו לאחור.
הממשק עולה, תצורת העמית נראית נכונה, ושום לחיצת יד לעולם אינה מושלמת. הוספת נתיב ברירת מחדל דרך המנהרה היא השלב שלעיתים קרובות גורם לכך: אותה טבלת ניתוב מחליטה כעת לאן צריכות ללכת החבילות המוצפנות של המנהרה, והתשובה שהיא מפיקה חוזרת לתוך המנהרה. שום דבר לא יכול לשאת את החבילה החיצונית שתישא את הפנימית, ולכן החיבור נתקע לפני שהוא מתחיל. התיקון קטן, אבל יש לו סדר, והאימות חשוב יותר מהעריכה.
אמתו את הלולאה לפני שאתם משנים נתיב
קראו את כתובת נקודת הקצה הנוכחית של העמית ואז שאלו את מחסנית הניתוב לאן תגיע חבילה לכתובת הזו. אם התשובה מציינת את ממשק המנהרה, הלולאה מאומתת ואין צורך באבחון נוסף. שמרו את שתי הפלטים ביומן השינויים לפני שאתם נוגעים במשהו, כי ההשוואה לאחר התיקון היא אותן שתי פקודות. לולאה אינה עדינה ברגע שרואים אותה; הקושי הוא שהממשק נראה בריא בזמן שזה קורה.
sudo wg show wg1 endpoints
ip route get 198.51.100.20
ip rule show
כללו את כללי המדיניות בלכידה הזו. נתיב ברירת מחדל שנראה נכון בטבלה הראשית עדיין יכול להפסיד לכלל שבוחר טבלה אחרת לתעבורה מסומנת או לא מסומנת, והלולאה תופיע שוב עם טבלת ניתוב שנראית תקינה.
קראו את נתיב נקודת הקצה, לא את נתיב המנהרה
נתיב נקודת הקצה הוא הנתיב שדרכו עוברות הדאטגרמות המוצפנות לכתובת הציבורית של העמית, והוא חייב להישאר מחוץ למנהרה כל עוד המנהרה קיימת. נתיב המנהרה הוא כל מה שמותר לעמית לשאת. שני הנתיבים האלה חולקים טבלת ניתוב אחת, וזו בדיוק הסיבה לכך שערך כולל אחד יכול למחוץ אותם זה לתוך זה. הפרדת תעבורת המנהרה מהתעבורה של המנהרה עצמה היא כל בעיית התכנון, וכל כלי נתמך פותר אותה במקום קצת אחרת.
בדקו את שתי משפחות הכתובות בנפרד אם הממשק נושא את שתיהן. החרגת IPv4 שעובדת לא אומרת דבר על השאלה אם נקודת הקצה IPv6 עדיין נגישה, ותצורה מעורבת יכולה להיראות עובדת עד שנבחרת כתובת ה-IPv6 של העמית.
שחזרו את נתיב נקודת הקצה בשינוי אחד עקבי
קיימות שתי גישות נתמכות, וערבובן הוא הדרך שבה התקנה עובדת הופכת לבלתי צפויה. הראשונה היא לתת לכלי שמחזיק בממשק לטפל בכל המנהרה: wg-quick יש לו טיפול ייעודי לטווח עמיתים של ברירת מחדל שמתקין טבלה נפרדת, כללי מדיניות וסימן שקע, מה שמשאיר את החבילות החיצוניות מחוץ למנהרה. השאירו את המנגנון הזה שלם במקום לשחזר חצי ממנו ביד. התקנה שמערבבת ברירת מחדל שהוספה ביד עם מנהל שכבר מתקין סימנים וכללים נוטה להיכשל לאחר התחברות מחדש, כשהמנהל כותב מחדש מצב שהשלב הידני הניח.
השנייה היא תכנון ידני שבו נקודת הקצה מקבלת נתיב מארח מפורש דרך השער הפיזי. הוסיפו את הנתיב הזה לפני ברירת המחדל, החליפו במקום להוסיף כדי שערך מיושן לא יוכל לנצח, ואמתו את החיפוש לאחר מכן.
sudo ip route replace 198.51.100.20/32 via 192.0.2.1 dev eth0
ip route get 198.51.100.20
sudo ip route add default dev wg1
אמתו, ואז שמרו דרך חזרה
חתימת זמן של לחיצת יד שמתקדמת היא ההוכחה הראשונה, והיא חזקה יותר מממשק שרק קיים. עקבו אחריה בבדיקת יישום דרך המנהרה, ואז הורידו את הממשק בכוונה ואמתו שהמארח חוזר למצב שמיש במקום להחזיק נתיב ברירת מחדל שמצביע לשום מקום. הצעד האחרון הזה הוא זה שאנשים מדלגים עליו, והוא זה שקובע אם אתחול מחדש ישאיר את המכונה ללא חיבור.
sudo wg show wg1 latest-handshakes
sudo wg-quick down wg1
ip route show default
ip route get 198.51.100.20
לפני כל זה, שמרו את מצב הניתוב הנוכחי וודאו שיש דרך כניסה שאינה תלויה במנהרה: קונסולה, כתובת ניהול מחוץ לרצועה או עמית במקום. מכונה מרוחקת שמאבדת את נתיב ברירת המחדל שלה אינה ניתנת לשחזור דרך החיבור שהיא בדיוק איבדה, והצעד הבטוח ביותר בספר ההפעלה הוא זה שננקט לפני הפקודה הראשונה.