אם יציאת החזית עדיין מקבלת חיבורים לאחר ש-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 קודמות שעברו דרך פרוקסי.

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