systemd-socket-proxyd יכול לשרוד את מנהרת ה-SSH SOCKS שלו
יישרו את מחזור החיים של עוזר העברת הסוקט עם התלות שלו ב-SSH, כדי שמנהרה מתה לא תשאיר חזית שנראית בריאה.
אם יציאת החזית עדיין מקבלת חיבורים לאחר ש-SSH יוצא, בדקו את שלוש היחידות. לסוקט ההפעלה, לעוזר systemd-socket-proxyd ולמאזין ה-SOCKS ש-SSH יוצר יש תוחלות חיים שונות:
| סוקט | עוזר | SSH | פירוש |
|---|---|---|---|
| מאזין | לא פעיל | לא פעיל | ייתכן שממתין כרגיל לביקוש |
| מאזין | פעיל | פעיל | קיימים תהליכים; בריאות היעד שבהמשך טרם הוכחה |
| מאזין | פעיל | לא פעיל | החזית יכולה לקבל עבודה בלי ה-backend שלה |
הפעלה משותפת של העוזר ושל SSH אינה מגדירה את מעבר העצירה המאוחר. עבור עוזר שאסור לו להישאר פעיל בלי המנהרה שלו, systemd מתעד את היחס החזק יותר:
[Unit]
BindsTo=ssh-socks.service
After=ssh-socks.service
החילו אותו על היחידה המתאימה בתכנון בפועל. Requires= והסדר מטפלים רק בחלק מהיחס. חזית שכבר פעילה עשויה אחרת שלא להפעיל שוב הפעלה לאחר שה-backend שלה נעלם. בדקו גם את מצב היחידות שנכשלו ואת מגבלות קצב ההפעלה; תלויות אינן עוקפות את המגבלות האלה.
לאחר מכן קבעו מוכנות הפעלה. After= מסדר משימות, לא את המוכנות של מאזין SSH מסוג Type=simple. המתנה קבועה עלולה להיכשל בזמן אימות איטי. השתמשו בחוזה הפעלה שמקים את המאזין הנדרש; ExitOnForwardFailure=yes תופס כשל בהגדרת ההעברה, לא את נגישות היעד המאוחרת.
לבסוף, הגדירו יציאה בחוסר פעילות והפעלה מחדש. אפשרות היציאה בחוסר פעילות של דמון ההעברה נוגעת להיעדר חיבורים פעילים, לא להיעדר בתים בחיבור פתוח. הפעלה שקטה יכולה להשאיר אותו פעיל. הביקוש הבא אמור להפעיל את השירותים הנדרשים, ולולאות הפעלה מחדש צריכות להישאר מוגבלות וגלויות. יצירה מחדש של המאזין מאפשרת חיבורים חדשים; היא אינה משחזרת הפעלות TCP קודמות שעברו דרך פרוקסי.