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

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

שורת ה-DNS היא תכונה של העוזר

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

לכן קובץ הגדרה יכול להיות תקף לפרוטוקול ובכל זאת להיכשל במהלך ההגדרה: התקלה שייכת לוו שהפרוטוקול אף פעם לא רואה.

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

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

קראו את השגיאה הראשונה שהעוזר מדפיס

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

wg-quick up wg0
resolvectl status wg0
ip route get 10.66.0.1

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

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

איזה פותר באמת יש למארח

מארחי Linux מודרניים מריצים לעיתים קרובות פותר stub מקומי, כך שהכתובת שהעוזר מתקין נצרכת על ידי אותו stub ולא על ידי יישומים ישירות. עריכה ידנית של קובץ שנוצר עשויה להיראות עובדת עד החיבור מחדש הבא, כשהעוזר כותב אותו מחדש.

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

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

הניקוי חשוב לא פחות מההגדרה

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

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

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

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