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

השגיאה מתרחשת לפני שכל עמית מדבר

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

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

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

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

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

lsmod | grep wireguard
ip link add wgtest0 type wireguard

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

Error textWhat refusedNext step
Unknown device type or operation not supportedThe kernel has no wireguard driverLoad the module or use the userspace implementation
Operation not permittedMissing privilegeUse the service context or grant the capability
File existsThe name is already in useInspect the owner before touching it
No such device in a containerNo tunnel device or capabilityAdd the device and NET_ADMIN to the container

הרשאות וגבולות הקונטיינר

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

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

פתרו את התנגשות השמות ואז נסו שוב

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

ip link show wg0
sudo wg show wg0

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

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

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