ifconfig-noexec לא ישמור את סשן ה-SSH שלך: מה הוא עושה בפועל
הוא מדכא את הגדרת כתובת הממשק של OpenVPN עצמו. הוא לא שומר נתיב תשובה ל-SSH, לא מבטל כל שינוי נתיב ולא מספק את הכתובת החסרה.
בשרשור כלשהו בפורום, ifconfig-noexec מוצע בתור התיקון ששומר על סשן SSH חי כשמנהרה עולה. ההסבר נשמע סביר עד שבודקים מה האפשרות הזו נוגעת בו. היא מונעת מOpenVPN להגדיר את כתובת ממשק המנהרה ומעבירה את הערכים האלה לסקריפטים במקום; אין לה מה לומר על לאן הולכות התשובות לחיבור הניהול שלך. אמונה אחרת מייצרת מנהרה בלי כתובת שמישהו יכול להשתמש בה וסשן SSH שממשיך למות.
מה האפשרות הזו באמת מעבירה הלאה
כברירת מחדל, הלקוח מעלה את התקן המנהרה ומקצה את הכתובות המקומית והמרחוקה שהשרת מסר לו. כשifconfig-noexec מוגדרת, המדרגה הזו מדולגת, והערכים שנדונו מיוצאים לסביבת הסקריפט כדי שמשהו אחר יוכל ליישם אותם.
הבעלות עוברת. שום דבר לא מומצא במקומה.
אז השאלה שהאפשרות עונה עליה היא מי מגדיר את הממשק, והשאלה שהיא לא עונה עליה היא איך מנות מוצאות את הדרך חזרה אליך. שמור את השתיים נפרדות, אחרת תבלה ערב שלם בעריכת נתיבים כדי לפצות על ממשק בלי כתובת.
שלוש אפשרויות דומות עם תפקידים שונים
קל להתבלבל במשפחה הזו כי השמות נבדלים במילה אחת והתסמינים חופפים. קרא מה כל אחת מדכאת לפני שתבחר באחת.
| Option | What stops happening |
|---|---|
ifconfig-noexec | OpenVPN's own tunnel-address configuration; values go to scripts instead |
route-noexec | Automatic route addition and removal; route details go to a script |
route-nopull | Server-pushed routes and related options such as DNS are rejected |
אלה חלופות שכל אחת מהן נועדה להיות מובנת בנפרד, לא סט שמדביקים יחד. דיכוי הגדרת הכתובת לא מדכא שינויי נתיבים, כללי חומת אש או האפשרויות הנדחפות שנושאות DNS. סקריפט מואצל גם הוא חופשי לשנות נתיבים, וזו החלטה שאתה מוסר ולא נמנע ממנה.
אם לקוח של ספק עוטף את המנוע, השתמש באינטגרציה הנתמכת שלו במקום לזרוק הוראה ברמה נמוכה לפרופיל ולקוות שהעוטף יכבד אותה. עוטפים לעתים קרובות מייצרים מחדש את הפרופיל בעת החיבור, כך שעריכה ידנית נעלמת בלי שגיאה. בדוק היכן הלקוח שומר את ההגדרות שלו לפני שתבזבז ערב על הקובץ. זה חל על כל שורה בטבלה, לא רק על זו שבאת בשבילה.
סשן ה-SSH שרצית להגן עליו
לחיבור SSH יש כתובת מקור, כתובת יעד ונתיב תשובה. בשרת שזה עתה התקין ברירת מחדל של מנהרה מלאה, התשובה לכתובת הציבורית שלך מתאימה למנהרה, ושער ה-VPN מפיל אותה.
שום דבר בהגדרת הכתובות של ממשק המנהרה לא משנה את זה.
מה שמתקן את זה הוא נתיב ספציפי יותר לכתובת הניהול שלך דרך השער שלפני המנהרה, או כלל מדיניות שמנווט את התעבורה הזו, ובנוסף הגדרות הסינון שהמארח שלך מיישם. שתי הבעיות מופיעות לפעמים יחד, וכך אחת מהן נחשבת בטעות לתרופה של השנייה. בדוק אותן בנפרד: העלה את המנהרה בלי האפשרות, הסתכל בכתובת הממשק ובנתיב התשובה, ואז החלט איזו מהשתיים באמת שבורה.
מה סקריפט מואצל חייב לקחת על עצמו
אם אתה באמת רוצה שבעלים אחר יגדיר את הממשק, ספור את העבודה: החל את הכתובת המקומית והמרחוקה, העלה את ההתקן, שחזר או הסר את הכתובות בעת סגירה, ועשה שוב את אותו דבר אחרי התחברות מחדש. אסור לקבע ערכים מסשן מוצלח אחד, כי השרת עשוי למסור זוג אחר בפעם הבאה.
משתני הסביבה שהלקוח מייצא הם הקלט הנתמך היחיד לעבודה הזו.
env | grep -E '^ifconfig_|^route_'בתוך סקריפט route-up המשתנים האלה זמינים; ממשימת cron או ממעטפת ידנית הם לא. אשר איזה וו מחזור חיים הגרסה שלך משתמשת בו, ואשר שהוו רץ עם מספיק הרשאות כדי לשנות את הממשק, כי הלקוח אולי כבר ירד למשתמש לא מורשה.
בדוק את כל מחזור החיים, לא סשן אחד
העלה את המנהרה, בדוק את הכתובת בהתקן, ואז התחבר מחדש ובדוק שוב. תצורה שעובדת פעם אחת ונכשלת בניסיון השני בדרך כלל אומרת שהמדרגה המואצלת רצה רק בחיבור הראשון.
ואז בדוק את שני קריטריוני הקבלה יחד: חיבור SSH חדש דרך נתיב הניהול המיועד עובד, ואפליקציה מורשית משתמשת במנהרה כראוי.
סשן SSH ישן שממשיך לחיות במקרה בזמן שלמנהרה אין כתובת אינו הצלחה, וזה בדיוק המצב שהאפשרות הזו מייצרת כשאיש לא לוקח על עצמו את העבודה. בדוק קודם את כתובת הממשק, אחר כך את נתיב תשובת הניהול, ואחר כך את האפליקציה. אם שניים מהשלושה שגויים, האפשרות העבירה עבודה בלי לתת לה בעלים.