ppp0 או ppp1? איך לתת שם לסשן PPP VPN עבור סקריפטים
pppd נותן לכל סשן שם ממשק וסמן פרופיל. קרא את שניהם מהוו, ולא מ-ppp0. הקצה שם קבוע רק כשהסירוב מכוון.
סקריפט הוו מופעל, קורא את ppp0 ומחיל מסלולים על הממשק שנושא את השם הזה באותו רגע. לפעמים זה המנהרה שהתכוונת אליה; לפעמים זה סשן שהתחבר דקה קודם. ההתחברות מחדש הבאה מזיזה את המספר, ואותו סקריפט מגדיר בשקט את הקישור הלא נכון. התיקון הוא לקחת את הממשק מהקריאה שהרגע רצה, ולשאת את הפרופיל המיועד לצידו.
עקבו אחר סשן אחד מהאפשרויות ועד הוו
התחילו במקום שבו הסשן נוצר. xl2tpd מפעיל את pppd עם קובץ האפשרויות שמציין pppoptfile של אותה מנהרה, כך שהתוסף, מספר היחידה וכל סמן פרופיל נקבעים שם ולא בקובץ גלובלי. מנהל חיבורים עשוי ליצור אפשרויות משלו, כלומר עריכת /etc/ppp/options אינה הוכחה שהמנהרה שמעניינת אתכם השתנתה. כשהקישור עולה, pppd מריץ את סקריפטי ההודעה של המשגר של ההפצה. הסקריפטים האלה מקבלים את שם הממשק כארגומנט הראשון, ואת סמן הפרופיל כשישי.
הסביבה נושאת את אותן עובדות תחת שמות כמו IFNAME ו-PPP_IPPARAM, אבל הזמינות שלהן תלויה במשגר המותקן. קראו את המשגר לפני שאתם מסתמכים על משתנה: חלק מההפצות שומרות על סדר הארגומנטים המקורי, ואחרות מסננות את הסביבה לפני שהן קוראות לסקריפט שלכם. סקריפט שמשתמש רק ב-$1 ובארגומנט השישי עובד בשני הסדרים.
קראו את הממשק מהקריאה
הוו המסורתי מקבל את הממשק ראשון. ערך המיקום הזה הוא מזהה הממשק שמתאר את הסשן שהפעיל את הסקריפט. שמרו אותו במשתנה בראש, ואז השתמשו במשתנה הזה למסלולים, לכללי חומת אש ולפירוק.
ipparam office-vpn
צרפו סמן פרופיל במקום שבו האפשרויות מוגדרות, ולא בסקריפט. עם השורה הזו בקובץ האפשרויות של המנהרה, כל סשן שנוצר מהקובץ הזה נושא את office-vpn כארגומנט השישי שלו. הסקריפט יכול להסתעף לפי הסמן ועדיין לפעול על הממשק האמיתי. הפרידו בין השניים בקוד, כי הסמן יציב והממשק מוקצה לכל סשן.
בקשו שם רק כאשר הסירוב נכון
שם קבוע נראה פשוט יותר מקריאת ארגומנטים, אבל הוא משנה את התנהגות הכשל. האפשרות unit מבקשת מספר לחיבור יוצא, ו-pppd נופל חזרה להקצאה דינמית כאשר היחידה הזו כבר תפוסה. דבר בתוצאה הזו לא מקצה את ppp0 לפרופיל שלכם.
ifname ppp-office
האפשרות ifname מתנהגת אחרת: אם השם המבוקש כבר בשימוש או לא ניתן להקצות, pppd יוצא במקום לבחור אחר. זו בחירת מדיניות, לא שינוי שם קוסמטי. השתמשו בה כאשר יש לסרב למופע שני במקביל של אותו פרופיל, וודאו שה-pppd המותקן ומנהל החיבורים שלכם מעבירים את האפשרות.
כך או אחרת, השם שהסקריפט רואה הוא זה שעליו יש לפעול. שם מוגדר אינו מסיר את הצורך לקרוא את הקריאה, כי סשן שהופעל מחדש עדיין יכול להציג שם שונה מהקודם.
התאימו את הפירוק לסשן שהגדרתם
מסלולים וכללי חומת אש שורדים יותר מהסקריפט שיצר אותם, ולכן הפירוק חייב להסיר בדיוק את האובייקטים שהסשן מחזיק. תייגו כללים בסמן הפרופיל וגם בממשק, ומחקו לפי התג הזה. אם שתי מנהרות יכולות להיות פעילות, מחיקת כל מה שמזכיר ppp היא הדרך שבה ניתוק אחד שובר את החיבור האחר.
בדקו את המקרה שחושף את הבאג: העלו את סשן ה-PPP השני כשהראשון עדיין מחובר, ואז חברו מחדש את הראשון וצפו איזה ממשק הוו מדווח. ריצה מוצלחת עם סשן אחד אינה מוכיחה דבר על הקצאת שמות. חזרו על כך כשה-VPN עצור כדי לוודא שהפירוק לא מותיר מסלול מיושן.
שמרו את הסמן, הממשק ונתיב הוו בהערות הפריסה. כאשר המספר משתנה לאחר אתחול, שלושת הערכים האלה מסבירים מדוע הסקריפט התנהג אחרת בלי שום עריכת תצורה.