Γιατί ο πελάτης OpenVPN σας μένει κάτω μετά από ένα μόνο χρονικό όριο
Ένας πελάτης που βγαίνει στο πρώτο χρονικό όριο αφήνει έναν κεντρικό υπολογιστή που φαίνεται συνδεδεμένος και δεν μεταφέρει τίποτα. Διορθώστε την επιλογή προφίλ και την πολιτική επανεκκίνησης ξεχωριστά.
Δευτέρα πρωί: η σήραγγα που ανέβηκε την Παρασκευή έχει φύγει, η διεπαφή εξακολουθεί να εμφανίζεται, και τίποτα στο ημερολόγιο δεν λέει ότι κάποιος το πρόσεξε. Ο κεντρικός υπολογιστής είναι συνδεδεμένος, ο πίνακας είναι πράσινος, και ό,τι έστειλε το Σαββατοκύριακο βγήκε από τη φυσική διεπαφή. Εδώ λείπουν δύο ανεξάρτητες αποφάσεις: μία για το αν η διεργασία του πελάτη επιβιώνει από μια παροδική αστοχία και μία για το αν κάτι πάνω από αυτήν ξεκινά ξανά τη διεργασία μετά την έξοδό της. Αν διορθώσετε μόνο τη μία, το άλλο κενό μένει ανοιχτό.
Ξεκινήστε από το τι έκανε πραγματικά η μονάδα, όχι από το τι ισχυρίζεται η παρακολούθηση. Τα systemctl status openvpn-client@office και journalctl -u openvpn-client@office -n 50 δείχνουν τον λόγο εξόδου και την τελευταία γραμμή που έγραψε ο πελάτης πριν φύγει.
Η διεργασία βγήκε πριν το προσέξει κανείς
Ένας πελάτης που εξαφανίζεται χωρίς σφάλμα συνήθως βγήκε σκόπιμα. Το προφίλ αποφασίζει αυτή τη συμπεριφορά, όχι ο διαχειριστής υπηρεσιών: το ping-exit τερματίζει τη διεργασία μόλις ο ομότιμος σταματήσει να απαντά, ενώ το ping-restart κρατά τη διεργασία και επανασυνδέεται μέσα της. Τα όρια συνεδρίας και τα χρονόμετρα αδράνειας παράγουν από έξω την ίδια εικόνα: χωρίς σήραγγα και χωρίς συναγερμό.
Οι δύο οδηγίες ping δεν μπορούν να βρίσκονται μαζί σε ένα προφίλ, οπότε επιλέξτε μία και καταγράψτε την επιλογή. Κοιτάξτε και τον διακομιστή, γιατί το δικό του ping-exit κλείνει μια συνεδρία ό,τι κι αν ζήτησε ο πελάτης, και μόνο το αρχείο καταγραφής του διακομιστή καταγράφει ποιος πήρε αυτή την απόφαση.
Επιλογή μεταξύ ping-exit και ping-restart
Επιλέξτε το ping-restart για φορητό υπολογιστή ή απομακρυσμένη τοποθεσία που πρέπει να αυτοθεραπεύεται, και κρατήστε το ping-exit για περιπτώσεις όπου μια νεκρή σήραγγα πρέπει να σταματήσει τη διεργασία ώστε κάτι άλλο να μπορεί να αντιδράσει. Οι αριθμοί έχουν μικρότερη σημασία από τη σχέση: το ping 10 με το ping-restart 60 σημαίνει δέκα δευτερόλεπτα σιωπής πριν από έναν έλεγχο και εξήντα πριν από την επανεκκίνηση, κάτι επιθετικό σε κινητή ζεύξη με απώλειες και λογικό σε ενσύρματη. Γράψτε τον λόγο δίπλα στη γραμμή, αλλιώς ο επόμενος αναγνώστης θα υποθέσει ότι οι προεπιλογές ήταν σκόπιμες.
Στη συνέχεια επιβεβαιώστε ότι αυτό που βγήκε είναι πράγματι η διεργασία. Μια μονάδα που αναφέρει ενεργή κατάσταση ενώ η σήραγγα είναι νεκρή είναι διαφορετική αστοχία, που εξετάζεται πιο κάτω.
Εποπτεία που πραγματικά επανεκκινεί τη μονάδα
Σε κεντρικό υπολογιστή με systemd, η μικρότερη διαρκής αλλαγή είναι ένα αρχείο drop-in: τα Restart=on-failure και RestartSec=10 στο /etc/systemd/system/[email protected]/restart.conf. Ένα drop-in διαβάζεται μόνο όταν το systemd επαναφορτώνει τους δικούς του ορισμούς, οπότε εκτελέστε το systemctl daemon-reload μετά. Επαληθεύστε με το systemctl show -p Restart -p ExecMainStatus openvpn-client@office αντί να υποθέσετε ότι η τιμή έφτασε. Το στιγμιότυπο στο όνομα του αρχείου πρέπει να είναι το προφίλ που φορτώνει πραγματικά η μονάδα, οπότε ένα αρχείο γραμμένο για το office δεν κάνει τίποτα για το openvpn-client@home.
Το on-failure αγνοεί μία περίπτωση: καθαρή έξοδο με κατάσταση μηδέν. Κάποιες διαδρομές κατεδάφισης τελειώνουν έτσι, οπότε διαβάστε την καταγεγραμμένη κατάσταση αντί να εμπιστευτείτε τη διατύπωση μιας σελίδας εγχειριδίου. Αν ο πελάτης σας τα παρατά με μηδέν, χρειάζεστε το Restart=always, και το κόστος είναι ότι ένα πραγματικά χαλασμένο προφίλ επιστρέφει ξανά και ξανά έως ότου ενεργοποιηθεί το όριο ρυθμού εκκίνησης και γεμίσει το ημερολόγιο.
Το Restart=always ενεργοποιείται και μετά από σκόπιμη διακοπή. Χρησιμοποιήστε το systemctl stop για συντήρηση, και αποκρύψτε τη μονάδα αν πρέπει να μείνει κάτω όσο εργάζεστε.
Πιάστε τη διαρροή όσο η σήραγγα είναι κάτω
Η εποπτεία κρατά τη σήραγγα να επιστρέφει· δεν εμποδίζει την κυκλοφορία να βγαίνει όσο η σήραγγα λείπει. Το persist-tun κρατά τη συσκευή και τις διαδρομές της στις επανασυνδέσεις, κάτι βολικό που ανοίγει ένα παράθυρο. Η συσκευή επιβιώνει, οι διαδρομές εξακολουθούν να δείχνουν σε αυτήν, και τα πακέτα διαρρέουν απροστάτευτα και χωρίς αναφορά. Είναι επιλογή πολιτικής, όχι ουδέτερη προεπιλογή.
Όταν ένας κεντρικός υπολογιστής δεν επιτρέπεται καθόλου να εκπέμπει απροστάτευτα πακέτα, μόνο το τείχος προστασίας μπορεί να το εγγυηθεί. Ένας κανόνας εξόδου που επιτρέπει τη διεπαφή της σήραγγας και τη διεύθυνση του διακομιστή VPN ενώ απορρίπτει όλα τα άλλα εξακολουθεί να ισχύει μετά τον θάνατο του πελάτη, και τίποτα στη διαμόρφωση του ίδιου του πελάτη δεν μπορεί να φιλτράρει κυκλοφορία που ο πελάτης δεν μεταφέρει.
Δοκιμάστε το σταματώντας τον πελάτη σκόπιμα. Εκτελέστε το systemctl stop openvpn-client@office, μετά το curl -m 5 https://example.com, το οποίο θα πρέπει να αποτύχει αντί να πετύχει μέσω της φυσικής ζεύξης. Μια επιτυχία σημαίνει ότι ο κανόνας του τείχους προστασίας λείπει ή είναι πολύ επιτρεπτικός.
Επανασυνδεθείτε, επιβεβαιώστε ότι η σήραγγα μεταφέρει ξανά κυκλοφορία, και μόνο τότε προσθέστε τον έλεγχο στην παρακολούθηση. Η δειγματοληψία του ip addr από το cron για συσκευή tun είναι η εποπτεία που αποτυγχάνει συχνότερα, γιατί με το persist-tun η συσκευή ζει περισσότερο από τη συνεδρία και ο έλεγχος αναφέρει υγεία ενώ δεν μεταφέρεται τίποτα.