إذا كان منفذ الواجهة لا يزال يقبل الاتصالات بعد خروج SSH، فافحص الوحدات الثلاث كلها. فمقبس التنشيط ومساعد systemd-socket-proxyd ومستمع SOCKS الذي ينشئه SSH لها أعمار مختلفة:

المقبسالمساعدSSHالتفسير
يستمعغير نشطغير نشطقد ينتظر الطلب على نحو طبيعي
يستمعنشطنشطالعمليات موجودة؛ لكن سلامة الوجهة النهائية غير مثبتة
يستمعنشطغير نشطيمكن للواجهة قبول العمل دون خلفيتها

تشغيل المساعد وSSH معًا لا يحدد انتقال التوقف اللاحق. وبالنسبة إلى مساعد يجب ألا يبقى نشطًا دون نفقه، توثّق systemd العلاقة الأقوى:

[Unit]
BindsTo=ssh-socks.service
After=ssh-socks.service

طبّقها على الوحدة المناسبة في التصميم الفعلي. فـRequires= والترتيب لا يعالجان إلا جزءًا من العلاقة. وقد لا تحفّز واجهة نشطة سلفًا التنشيط مرة أخرى أبدًا بعد اختفاء خلفيتها. افحص أيضًا حالة الوحدات الفاشلة وحدود معدل البدء؛ فالاعتماديات لا تتجاوز تلك الحدود.

ثم أثبت جاهزية البدء. فـAfter= يرتّب المهام لا جاهزية مستمع SSH من النوع Type=simple. وقد يفشل انتظار ثابت أثناء مصادقة بطيئة. استخدم عقد بدء ينشئ المستمع المطلوب؛ وExitOnForwardFailure=yes يلتقط فشل إعداد التمرير لا إمكانية الوصول إلى الوجهة لاحقًا.

أخيرًا حدّد الخروج عند الخمول وإعادة التنشيط. فخيار الخروج عند الخمول في عفريت التمرير يتعلق بغياب الاتصالات النشطة لا بغياب البايتات على اتصال مفتوح. وقد تُبقي جلسة هادئة المساعد نشطًا. وينبغي أن ينشّط الطلب التالي الخدمات المطلوبة، وأن تبقى حلقات إعادة التشغيل محدودة ومرئية. إعادة إنشاء المستمع تسمح باتصالات جديدة؛ ولا تعيد جلسات TCP القديمة الممرَّرة.

مقالات ذات صلة