שלושה מסלולים נותנים לכם לקוח OpenConnect ב-Mac, והם משאירים דברים שונים על הדיסק. נוסחת Homebrew מתקינה קובץ בינארי מהודר ותסריט הרשת שמגדיר מסלולים ו-DNS. ארכיון מהדורה נותן קוד מקור עם מערכת בנייה שנוצרה. שכפול git נותן קוד מקור בלעדיה. בחירה במסלול הלא נכון היא הסיבה שאנשים נתקלים ב-configure חסר כמה דקות לתוך מדריך.

שני מכונות שונות תחת אותו שם

מסלול החבילה הוא פקודה אחת, והוא ברירת המחדל הנכונה לכל מי שעבודתו היא להתחבר ולא לפתח.

brew install openconnect

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

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

מה מסלול קוד המקור באמת עושה

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

./autogen.sh
./configure
make
make install

כל שורה עושה משהו מסוים, ולדעת איזו נכשלה חוסך הרבה ניחושים. שלב autogen מריץ את כלי autotools כדי להפיק את configure. שלב configure בודק את המהדר, הספריות והכותרות שהלקוח צריך, ואז כותב את קובצי ה-make שמשקפים את מה שמצא. שלב make מהדר. שלב install מעתיק את התוצאות למקום כלשהו בנתיב שלכם.

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

הפעלת הרשת ותצורת הרשת נפרדות

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

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

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

דעו איזה קובץ בינארי אתם מריצים

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

which -a openconnect
openconnect --version
brew list --versions openconnect

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

התקנת לקוח היא לא אישור שער

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

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

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