לקוח Wi-Fi והוט ספוט על רדיו אחד: מה נשבר
הוט ספוט ב-Pi יכול להיראות תקין בזמן שהקישור העולה שלו נתקע. קראו את שילובי הממשקים ומגבלות הערוץ של הרדיו המותקן לפני שאתם מאשימים את ה-VPN.
הטלפון שלכם נשאר מחובר להוט ספוט בזמן שהקישור העולה לא מעביר דבר. ה-Pi עדיין מדווח על שיוך Wi-Fi, נקודת הגישה עדיין משדרת beacon, וכל בקשה מגיעה לפסק זמן. רדיו אחד משרת שני תפקידים בו-זמנית, ואחד מהם מנצח כשהשני צריך את הערוץ. לפני שנוגעים ב-VPN, קבעו אם הדרייבר והקושחה המותקנים בכלל מקבלים את צמד התפקידים הזה.
התסמין מצביע על הרדיו, לא על המנהרה
עקבו אחרי הכשל לפי הסדר והוא מפסיק להיראות כמו תקלת ניתוב. לקוח מתחבר להוט ספוט, מקבל כתובת וטוען דף או שניים. אחר כך ממשק התחנה משייך את עצמו מחדש לנתב העליון לאחר נדידה, חידוש מפתח או צניחת אות קצרה. נקודת הגישה או מפעילה מחדש את ה-beacon שלה או משאירה את הלקוחות בלי נתיב, ויומן ה-VPN מתמלא בניסיונות התחברות מחדש שמעולם לא היו הסיבה.
שני שמות ממשק לא יוצרים שני רדיואים. wlan0 וממשק נקודת הגישה חולקים התקן אחד, מכונת מצב ערוץ אחת ומתזמן קושחה אחד. הגרעין חושף בדיוק אילו שילובי תפקיד וערוץ ההתקן הזה תומך בהם, לכן קראו את הרשימה הזו במקום להניח שהצמד עובד כי שני הממשקים עלו.
קראו את השילוב לפני שמשנים משהו
מחסנית האלחוט מדווחת את החוזה שלה בקטע שילובי הממשקים של הפקודה iw list. כל שילוב ממוספר מפרט את מספרי התפקידים המותרים, כמה ממשקים יכולים להתקיים וכמה ערוצים שונים הממשקים האלה יכולים לתפוס בו-זמנית. שילוב שמציין תחנה אחת ונקודת גישה אחת על ערוץ בודד הוא זה שהפריסה הזו צריכה.
iw list | sed -n '/valid interface combinations/,/^$/p'
קראו את המספרים, לא רק את נוכחות המילים. דרייבר יכול לתמוך במצב תחנה ובמצב נקודת גישה בנפרד, בעוד השילוב החוקי היחיד של שניהם מתיר רק ערוץ אחד, מספר קטן של ממשקים או מרווח beacon שההוט ספוט לא יכול לעמוד בו. חלק מהקושחות מאבדות גם תפקיד אחד במהלך סריקה או חידוש מפתח, מה שנראה כמו קישור עולה מהבהב ולא כמו מגבלת יכולת. אם אף שילוב לא מפרט את שני התפקידים, הצמד אינו נתמך, יהיה אשר יהיה מה שכפתור ההוט ספוט בשולחן העבודה מציע.
התיעוד של שילובי הממשקים של cfg80211 מתאר את השדות ואת מגבלת ה-beacon. ערכים של מתאם אחד לא אומרים דבר על אחר, לכן שמרו את הפלט יחד עם המכונה במקום להכליל אותו.
תוכנית הערוץ והכתובות מכריעה את השאר
נקודת גישה חייבת לשבת על ערוץ שהרדיו יכול לשרת, והקישור העולה של התחנה חייב לעקוב אחרי נקודת הגישה העליונה. כששתי ההחלטות האלה לא מסכימות, תפקיד אחד חייב להיות מופעל מחדש. במתאמים רבים עם רדיו אחד ההוט ספוט משקף לכן את ערוץ התחנה, ושינוי ערוץ בצד העליון מוריד איתו לרגע גם את ההוט ספוט.
תכננו את צד ה-IP בנפרד מהרדיו. הוט ספוט מנותב משתמש בדרך כלל בתת-רשת פרטית כמו 192.168.50.0/24 עם ה-Pi ב-192.168.50.1, מאגר DHCP בתוך אותה תת-רשת וה-Pi כמעביר resolver. מצב השיתוף של NetworkManager מגדיר העברה ותרגום כתובות לאותה תת-רשת, אבל הוא לא מוסיף קיבולת רדיו ולא הופך את המנהרה ליציאה היחידה. רשמו אם הלקוחות מגושרים בשכבה שתיים או מנותבים בשכבה שלוש לפני שתתחילו להתווכח על מדיניות VPN.
סדר בדיקות שמפריד בין הרדיו לניתוב
עבדו מההתקן החוצה ועצרו בשלב הראשון שנכשל. הקריאות האלה בטוחות במערכת פועלת ולא משנות שום תצורה. הריצו אותן כשהלקוח משויך והקישור העולה נמצא במצב שאתם מנפים.
iw dev
iw dev wlan0 link
nmcli -t -f DEVICE,STATE,CONNECTION device status
ip -br addr show
sysctl net.ipv4.ip_forward
אם iw dev wlan0 link לא מראה שיוך כלשהו, בעיית הרדיו באה ראשונה והמנהרה לא רלוונטית. אם הקישור העולה משויך וללקוח אין כתובת, החיבור והרשאת ה-DHCP שגויים. אם ללקוח יש כתובת אבל אין נגישות, חסרים העברה, תרגום או מסירת resolver. רק כשגם נתיב ההוט ספוט וגם נתיב הקישור העולה עובדים, מנהרה כושלת הופכת לדבר הבא שצריך לבדוק.
תעדו את המתאם, הדרייבר והקושחה לצד השילוב וכלל הערוץ שהתקבלו. עדכון גרעין או קושחה מאוחר יותר יכול לשנות את הרשימה הנתמכת, וההערה הזו היא מה שהופך תעלומה למגבלה ידועה.