Αν η μπροστινή θύρα εξακολουθεί να δέχεται συνδέσεις μετά την έξοδο του SSH, ελέγξτε και τις τρεις μονάδες. Η υποδοχή ενεργοποίησης, ο βοηθός systemd-socket-proxyd και ο ακροατής SOCKS που δημιουργεί το SSH έχουν διαφορετική διάρκεια ζωής:

ΥποδοχήΒοηθόςSSHΕρμηνεία
ΑκούειΑνενεργόΑνενεργόΊσως περιμένει κανονικά ζήτηση
ΑκούειΕνεργόΕνεργόΥπάρχουν διεργασίες· η υγεία του τελικού προορισμού παραμένει αναπόδεικτη
ΑκούειΕνεργόΑνενεργόΤο front end μπορεί να δέχεται εργασία χωρίς το backend του

Η ταυτόχρονη εκκίνηση βοηθού και SSH δεν ορίζει τη μεταγενέστερη μετάβαση διακοπής. Για βοηθό που δεν πρέπει να μένει ενεργός χωρίς τη σήραγγά του, το systemd τεκμηριώνει την ισχυρότερη σχέση:

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

Εφαρμόστε την στην κατάλληλη μονάδα του πραγματικού σχεδιασμού. Το Requires= και η σειρά καλύπτουν μόνο μέρος της σχέσης. Ένα ήδη ενεργό front end μπορεί αλλιώς να μην πυροδοτήσει ποτέ ξανά ενεργοποίηση αφού εξαφανιστεί το backend του. Ελέγξτε επίσης την κατάσταση αποτυχημένων μονάδων και τα όρια ρυθμού εκκίνησης· οι εξαρτήσεις δεν παρακάμπτουν αυτά τα όρια.

Έπειτα καθιερώστε την ετοιμότητα εκκίνησης. Το After= ταξινομεί εργασίες, όχι την ετοιμότητα ενός ακροατή SSH Type=simple. Μια σταθερή αναμονή μπορεί να αποτύχει σε αργή ταυτοποίηση. Χρησιμοποιήστε ένα συμβόλαιο εκκίνησης που καθιερώνει τον απαιτούμενο ακροατή· το ExitOnForwardFailure=yes πιάνει αποτυχία της ρύθμισης προώθησης, όχι τη μεταγενέστερη προσβασιμότητα του προορισμού.

Τέλος, ορίστε την έξοδο αδράνειας και την επανενεργοποίηση. Η επιλογή εξόδου αδράνειας του δαίμονα προώθησης αφορά την απουσία ενεργών συνδέσεων, όχι την έλλειψη byte σε ανοιχτή σύνδεση. Μια ήσυχη συνεδρία μπορεί να τον κρατήσει ενεργό. Η επόμενη ζήτηση πρέπει να ενεργοποιήσει τις απαιτούμενες υπηρεσίες, και οι βρόχοι επανεκκίνησης πρέπει να μένουν φραγμένοι και ορατοί. Η αναδημιουργία του ακροατή επιτρέπει νέες συνδέσεις· δεν αποκαθιστά παλιές συνεδρίες TCP μέσω διαμεσολάβησης.

Σχετικά άρθρα