WireGuard לא מציג לחיצת יד אחרונה: מה לבדוק קודם
לחיצת יד ריקה יכולה פשוט לומר ששום דבר לא נשלח. הפעילו מנה מורשית, ואז בדקו את המסלול, צמד המפתחות ונתיב ה-UDP החיצוני.
שדה לחיצת יד אחרונה ריק בדרך כלל אומר שהממשק לא השלים לחיצת יד מאז שעלה, מה שאומר פחות על התצורה ממה שנדמה. WireGuard נשאר שקט עד שמנה צריכה לצאת דרך הממשק, כך שעמית סרק בלי מה לשלוח מדווח בדיוק על זה. קבעו אם משהו אכן הוצע לפני שתבדקו מפתחות.
הבדיקה היא מנה מורשית אל יעד שהעמית אמור לשאת. כל השאר במסך המצב הזה מתאר כוונה ולא פעילות.
לממשק סרק אין מה לדווח
WireGuard מבצע לחיצות יד בעצלתיים: המנה הראשונה שזקוקה למנהרה מפעילה את ההחלפה, והממשק נשאר שקט עד אז. עמית שהוגדר ומעולם לא שומש מציג לחיצת יד ריקה, אפס בתים שהתקבלו ופער גדל מאז האחרונה. המצב הזה בריא ללקוח סרק ומדאיג רק אם ציפיתם שתעבורה כבר זרמה. בדקו גם את מוני ההעברה, כי הם מפרידים בין לא-נשלח לבין נוסה-ונכשל.
אם המונים עומדים על אפס בשני הצדדים, הבעיה נמצאת במעלה המנהרה. שום דבר לא הגיע לממשק כדי להפעיל משהו.
הפעילו תעבורה שהעמית רשאי לשאת
בחרו כתובת בתוך הקידומות המורשות של העמית, במכונה המקומית, ואשרו שטבלת הניתוב תשלח אותה דרך הממשק. יעד מחוץ לקידומות האלה מייצר בקשה מנותבת רגילה בלי שום מעורבות של WireGuard. השתמשו בשירות שעונה מהר, כמו ping או חיבור TCP קצר, כדי שלניסיון יהיה התחלה וסוף גלויים. אחר כך קראו שוב את שורת לחיצת היד במקום להביט במסך ולהמתין.
ip route get 10.60.9.5
ping -c 3 -W 2 10.60.9.5
wg show wg0 latest-handshakes
wg show wg0 transfer
שאילתת המסלול חשובה יותר מה-ping. אם היא מציינת את הממשק הפיזי, המנה מעולם לא נכנסה למנהרה ולחיצת היד הריקה היא תשובת ניתוב ולא תשובה קריפטוגרפית. תקנו את המסלול לפני שאתם מאתרים תקלות בעמית.
השוו את צמד המפתחות ואת נקודת הקצה
לאחר שהתעבורה אכן מוצעת, הזהות היא הבדיקה הבאה. המפתח הפרטי המקומי חייב להתאים למפתח הציבורי שהצד השני מאשר, המפתח הציבורי המרוחק המוגדר חייב לזהות את העמית המיועד, וכל מפתח משותף מראש חייב להתאים בשני הקצוות. הבדל של תו אחד במפתח base64 יוצר עמית שנראה מוגדר ולעולם לא משלים החלפה. השוו לרשומת האספקה במקום ליצור מפתחות מחדש, כי מפתח חדש מבטל כל עמית שסמך על הישן.
נקודת הקצה דורשת את אותה בחינה: שם מארח, כתובת, יציאת UDP והמשפחה שבה מגיעים אליה. כתובת מיושנת או יציאה שגויה מייצרות שקט במקום הודעה.
עקבו אחרי נתיב ה-UDP החיצוני
לחיצת היד נוסעת כ-UDP אל נקודת הקצה, לכן הנתיב החיצוני חייב לשאת אותה. הפקודות שלמטה בודקות אם קיים מאזין, אם המחסנית המקומית שילחה את הדאטאגרם, ואיזו נקודת קצה מוגדרת. הריצו את הלכידה בזמן הפעלת תעבורה, לא לפניה.
ss -lunp | grep 51820
sudo tcpdump -ni eth0 udp port 51820
wg show wg0 endpoints
conntrack -L -p udp | grep 51820
לכידה שמראה את היזמה בלי תשובה מצביעה אל מחוץ למכונה, כי הצד המרוחק או לא מאזין, או מסונן, או ממוען שגוי. לכידה שלא מראה דבר פירושה שהמנה מעולם לא יצאה, מה שמחזיר אתכם למסלול ולכל סימון socket שבמשחק. כשאתם מנהלים את שני הקצוות, התאימו את הניסיון לפי חותמת זמן ללכידה צרה בשרת ולא ללכידה כללית. בדיקת יציאת TCP לא מוכיחה כאן דבר, כי הפרוטוקול הוא UDP בלבד.
כשמופיעה לחיצת יד, בדקו יישום דרך המנהרה, כי החלפה שהושלמה מוכיחה זהות ונגישות, לא תפוקה שמישה או DNS נכון. שמרו את פלט המצב לפני ואחרי השינוי, וההפרש יהפוך לראיה שלכם.