מפתח פרטי כאן, מפתח ציבורי שם: המפתחות של WireGuard
המפתח הפרטי שלכם נשאר במכשיר; רשומת העמית מחזיקה את המפתח הציבורי של הצד השני. שתפו רק את החצי הציבורי, ותנו לכל מכשיר זהות משלו.
רוב הכשלים ב-WireGuard שנבנה ביד מסתכמים בשאלה איזה מפתח הלך לאן. קטע הממשק נושא את המפתח הפרטי של המכשיר שאתם מגדירים, ואילו קטע העמית נושא את המפתח הציבורי של המכונה בצד השני. החלפה של החצאים האלה, או הדבקה של המפתח הלא נכון, מייצרת לחיצת יד שלעולם אינה מסתיימת ויומן שלעולם אינו נוקב בשם מפתח. בצעו את ארבע הבדיקות שלמטה לפי הסדר לפני שנוגעים ב-AllowedIPs או ב-DNS.
שני מפתחות, שני כיוונים
מפתח פרטי שייך בדיוק למכשיר אחד ונשאר בקטע הממשק של אותו מכשיר. החצי הציבורי שלו הוא מה שכל עמית אחר צריך כדי לזהות את המכשיר, והכלים גוזרים אותו במקום להמציא אותו. בשרת, המפתח הציבורי של המכשיר שלכם מופיע כרשומת עמית; במכשיר שלכם, המפתח הציבורי של השרת ממלא את התפקיד הזה. קריאה בקול של תצורה במונחים האלה תופסת את רוב הבלבולים לפני שהם מגיעים ללחיצת יד.
הפקודה wg מדפיסה מה הממשק המקומי באמת משתמש בו, כולל שני המפתחות הציבוריים. זה הופך אותה לדרך המהירה ביותר להפריד בין שגיאת תצורה לבין בעיית קישוריות:
wg show
wg show interfaces
הפלט הראשון מפרט כל עמית עם המפתח הציבורי שלו, נקודת הקצה שבה השתמש לאחרונה וגיל לחיצת היד האחרונה שלו. גיל לחיצת יד של «מעולם לא» בצד אחד ושל לחיצה אחרונה בצד השני מצביע על מפתח שרק קצה אחד קיבל. הפקודה השנייה נוקבת בשמות הממשקים שאפשר לבדוק לעומק.
מה לשתף ומה לעולם לא
מפתח ציבורי נועד להימסר, אף שהוא עדיין מזהה יחס בין מכשירים, ולכן שליחתו למנהל שביקש אותה שונה מפרסומה. מפתח פרטי לעולם אינו עוזב את המכשיר שיצר אותו. פרופיל מיוצא או קוד QR מחזיק את כל התצורה כולל אותו מפתח פרטי, כך ששניהם אינם בטוחים להעברה, והסתרת הטקסט בתוך תמונה אינה משנה דבר. מפתחות משותפים מראש הם אופציונליים וסודיים באותה מידה, ושני הקצוות חייבים לשאת את אותו ערך, אחרת לחיצת היד נעצרת באותו שלב.
הבחנה נוספת שווה אמירה ישירה: נקודת קצה היא כתובת ופורט, ולעולם לא מפתח. הדבקה של מפתח ציבורי בשדה נקודת הקצה, או של כתובת בשדה מפתח, מייצרת פרופיל שמפוענח ואז לא עושה דבר. הכלים לא יתפסו את זה, מפני ששני השדות הם רק מחרוזות. ההתחלה המהירה של WireGuard מציגה את שרשרת היצירה והגזירה בשורה אחת.
מכשיר אחד, רשומת עמית אחת
במקום שהשירות מאפשר זאת, כל מכשיר צריך לשאת זהות עמית משלו. הדבקה של הפרופיל המלא של מחשב נייד בטלפון מטשטשת איזה מכשיר מחזיק את הזהות בשרת, ומקשה על ביטול של מכשיר אבוד אחד. אם מפתח פרטי דלף, הסירו את הרשאת העמית הישנה בשרת וספקו מחליף. מחיקת הקובץ המקומי אינה מסירה את הרשומה בשרת, ומפתח לקוח חדש לא עוזר לאיש עד שהשרת מכיר את החצי הציבורי שלו.
שמרו את המיפוי ממכשיר למפתח ציבורי לצד רשימת הכתובות. הרשימה הזו היא מה שהופך ביטול למשימה של שתי דקות במקום אחר צהריים שלם.
מה עדיין נכשל אחרי לחיצת היד
צמדי מפתחות מזהים עמיתים; הם אינם מחליטים על התנהגות הרשת. AllowedIPs מקשר טווחי כתובות לעמית, והמסלולים סביב זה מנוהלים בידי הלקוח או כלי ההגדרה. התסמין בדרך כלל אומר איזו שכבה לפתוח הלאה:
| What you see | Which key problem it usually means | Where to look first |
|---|---|---|
| Handshake age stays at never on both ends | Peer public key missing, or an endpoint pointing at nothing | wg show, then the endpoint value |
| Handshake completes on one side only | The two ends hold different public keys for each other | wg show on both hosts |
| Handshake works, then no traffic | AllowedIPs or routes rather than keys | wg show and the route table |
| Worked until a key was regenerated | The peer entry still holds the old public key | Compare both public keys, then update the peer |
DNS יכול להיכשל אחרי ששני העמיתים אומתו כראוי, ויישום יכול להיכשל בעוד המנהרה עצמה בריאה, כך שלחיצת יד שעובדת אינה סוף האבחון. מפתחות גם אינם אומרים דבר על נוהג הרישום ביומן של מפעיל או על כך שאתר מזהה את החשבון שלכם, ושאלות כאלה שייכות למקום אחר. עברו לשכבות הרשת לאחר שארבע הבדיקות עוברות, מפני שמפתח חסר אינו בעיית ניתוב בתחפושת.