Το OpenVPN δείχνει active (exited); Βρείτε την παρουσία που ξεκινήσατε
Το active (exited) δεν είναι σήραγγα, αλλά μία εφάπαξ εργασία /bin/true που συγκρατεί το RemainAfterExit. Βρείτε την παρουσία, διαβάστε το αρχείο στο οποίο δείχνει και μετά το ημερολόγιό της.
Ελέγχετε τη σήραγγα, εκτελείτε systemctl status openvpn και παίρνετε active (exited) χωρίς Main PID και με κενή λίστα διεργασιών. Η φυσική ανάγνωση είναι ότι η υπηρεσία ξεκίνησε και πέθανε, οπότε ανοίγετε το unit, βρίσκετε το /bin/true και συμπεραίνετε ότι το πακέτο είναι χαλασμένο. Στη συσκευασία του Debian αυτή η κατάσταση είναι το wrapper που δουλεύει όπως σχεδιάστηκε, και η σήραγγα ζει σε μία από τις μονάδες παρουσίας που ξεκινά. Η συνολική μονάδα δεν θα σας πει ποτέ ποια παρουσία την έχτισε.
Τι σημαίνει στην πραγματικότητα το active (exited) σε αυτή τη μονάδα
Η συσκευασμένη μονάδα είναι εφάπαξ: το ExecStart της είναι /bin/true και το RemainAfterExit=yes είναι αυτό που κρατά μια ολοκληρωμένη μονάδα να αναφέρεται ως active (exited). Αφαιρέστε αυτή την οδηγία και η ίδια επιτυχημένη εφάπαξ εργασία /bin/true καταλήγει σε inactive (dead), που είναι ακριβώς η κατάσταση που οι άνθρωποι περιμένουν και διαβάζουν λάθος προς την άλλη κατεύθυνση. Η εντολή είναι υποκατάστατο και η μονάδα αναφέρει εργασία που κάνουν άλλες μονάδες. Τίποτα σε αυτή τη διάταξη δεν είναι χαλασμένο, και η αντικατάσταση του /bin/true αλλάζει το συμβόλαιο συσκευασίας και όχι τη σήραγγα.
Το wrapper αναθέτει. Ξεκινά τις μονάδες παρουσίας που παρέχει η διαμόρφωση του πακέτου ή η γεννήτρια systemd του, γι' αυτό μια κενή λίστα διεργασιών δεν αποδεικνύει τίποτα για τη σήραγγα. Όταν δεν έχει επιλεγεί καμία παρουσία, το wrapper πετυχαίνει ακόμη και δεν ξεκινά τίποτα. Η κατάσταση απαντά αν έτρεξε το wrapper, όχι αν υπάρχει σήραγγα.
Διαβάστε τις τρεις γραμμές της εξόδου status αντί για τη λέξη στην παρένθεση. Το Loaded ονομάζει το αρχείο μονάδας που διάβασε το systemd, το Active φέρει τη χρονική σφραγίδα της τελευταίας επιτυχημένης εκτέλεσης και το απόν Main PID ταιριάζει με μια ολοκληρωμένη εφάπαξ εργασία. Αυτές οι τρεις γραμμές είναι και ο τρόπος να ξεχωρίσετε αυτό το wrapper από μια υπηρεσία που κατέρρευσε ένα δευτερόλεπτο μετά την εκκίνηση.
Καταγράψτε τις μονάδες πριν ξαναδιαβάσετε το status
Ρωτήστε το systemd τι υπάρχει πριν ρωτήσετε τι τρέχει. Ένα πρότυπο μπορεί να είναι εγκατεστημένο ενώ δεν έχει δημιουργηθεί καμία παρουσία, και μόνο μια δημιουργημένη μονάδα κουβαλά σήραγγα. Ξεκινήστε από το φορτωμένο σύνολο:
systemctl list-units 'openvpn*'
Αυτή η λίστα είναι ό,τι έχει φορτώσει το systemd αυτή τη στιγμή και είναι το πιο κοντινό σε απογραφή σηράγγων. Τα εγκατεστημένα αρχεία μονάδων απαντούν σε άλλη ερώτηση, και αυτή η λίστα εξακολουθεί να δείχνει πρότυπο όταν δεν έχει δημιουργηθεί τίποτα:
systemctl list-unit-files 'openvpn*'
Διαβάστε τις δύο λίστες μαζί, γιατί ένα πρότυπο στη δεύτερη και μια παρουσία στην πρώτη είναι διαφορετικές απαντήσεις. Ένα πρότυπο που υπάρχει και μια παρουσία που τρέχει δεν είναι το ίδιο γεγονός, και μόνο το δεύτερο σημαίνει σήραγγα. Οι διατάξεις πακέτων διαφέρουν και μεταξύ διανομών και εκδόσεων του OpenVPN. Ένα παλαιότερο πρότυπο openvpn@, ένα χωριστό ζεύγος client και server και ένα wrapper διανομής μπορούν όλα να είναι νόμιμα στη δική τους συσκευασία.
Προσαρμοστείτε στο μηχάνημά σας και όχι στον οδηγό που βρήκατε. Το όνομα παρουσίας στην έξοδο κάποιου άλλου μπορεί να είναι office ενώ το δικό σας είναι home ή work. Αυτό που μεταφέρεται είναι η μέθοδος, όχι η συμβολοσειρά.
Ακολουθήστε το όνομα παρουσίας στο αρχείο που διαβάζει
Στο πρότυπο client του upstream ο κατάλογος εργασίας της μονάδας είναι /etc/openvpn/client και η εντολή της παίρνει από εκεί το %i.conf, άρα το openvpn-client@office διαβάζει το /etc/openvpn/client/office.conf. Επιβεβαιώστε αυτή την αντιστοίχιση στην εγκατεστημένη μονάδα αντί να εμπιστευτείτε το παράδειγμα, γιατί το πρότυπο που έχετε μπορεί να είναι παλαιότερο ή ξαναγραμμένο από τη διανομή:
systemctl cat [email protected]
Διαβάστε τα drop-in που εμφανίζονται στο τέλος αυτής της εξόδου, γιατί ένα αρχείο κάτω από το .d/ μπορεί να αλλάξει το ExecStart, τον κατάλογο εργασίας ή τη διαδρομή διαμόρφωσης. Ένα προφίλ που κατεβάσατε ως office.ovpn δεν είναι το αρχείο που ανοίγει η παρουσία. Αυτό το κενό είναι ο συνηθισμένος λόγος που ένα σφάλμα ονομάζει διαδρομή που δεν επεξεργαστήκατε ποτέ.
Οι σχετικές διαδρομές μέσα στο προφίλ είναι η επόμενη παγίδα. Η μετακίνηση του κύριου αρχείου ενώ οι αναφορές ca, cert και key μένουν σχετικές ανταλλάσσει ένα σφάλμα αρχείου που λείπει με ένα άλλο σφάλμα αρχείου που λείπει. Το δεύτερο δείχνει αρχείο που ήσασταν σίγουροι ότι υπάρχει, γι' αυτό ο κατάλογος του προφίλ μετράει περισσότερο από το όνομα αρχείου.
Ξεκινήστε την και μετά διαβάστε το ημερολόγιο αυτής της παρουσίας
Ξεκινήστε την παρουσία που μόλις εξετάσατε, γιατί το log της συνολικής μονάδας δεν θα περιέχει τα σφάλματα της σήραγγας. Μετά διαβάστε το ημερολόγιο για αυτή την εκκίνηση και ψάξτε με αυτή τη σειρά για σφάλμα διαμόρφωσης, σφάλμα πρόσβασης αρχείου και σφάλμα σύνδεσης, γιατί το καθένα αποτυγχάνει σε διαφορετικό στάδιο της εκκίνησης.
sudo systemctl start [email protected]
journalctl -u [email protected] -b
Η εκκίνηση και η ενεργοποίηση είναι χωριστές αποφάσεις: το start εκτελεί τη μονάδα τώρα, το enable κανονίζει την επόμενη εκκίνηση και το enable --now κάνει και τα δύο σε ένα βήμα. Το daemon-reload ξαναδιαβάζει ορισμούς μονάδων και δεν επανεκκινεί μια διεργασία που τρέχει ούτε εφαρμόζει ένα επεξεργασμένο προφίλ. Αφού αλλάξετε το προφίλ, επανεκκινήστε την παρουσία, γιατί αυτό ξαναδιαβάζει το αρχείο.
Μη βάζετε δεύτερο διαχειριστή στην ίδια σήραγγα
Το NetworkManager και οι διαχειριστές συνεδρίας του OpenVPN 3 έχουν δική τους κατάσταση σύνδεσης, και μια παρουσία systemd δίπλα σε έναν από αυτούς βάζει δύο ιδιοκτήτες στην ίδια σήραγγα. Το σύμπτωμα είναι σήραγγα που σηκώνεται και αντικαθίσταται δευτερόλεπτα μετά, ή μία που αρνείται να μείνει σταματημένη. Διαλέξτε τον διαχειριστή που η διανομή σας τεκμηριώνει για την επιφάνεια εργασίας και χρησιμοποιήστε το systemd συνειδητά σε διακομιστή.
Ελέγξτε για υπάρχοντα ιδιοκτήτη πριν ξεκινήσετε μια παρουσία. Όταν ένα applet της επιφάνειας εργασίας δείχνει τη σύνδεση, η παρουσία που ξεκινάτε ανταγωνίζεται αυτό αντί να το ολοκληρώνει. Απενεργοποιήστε τον διαχειριστή που δεν χρησιμοποιείτε αντί να τρέχετε και τους δύο και να ελπίζετε ότι η σειρά θα κρατήσει. Αυτή η σύγκρουση εξηγεί και ημερολόγια όπου μια σήραγγα στήνεται και μετά διαλύεται από διεργασία που δεν ξεκινήσατε ποτέ.
Απαντήστε στην αρχική ερώτηση με το όνομα παρουσίας, το αρχείο που διάβασε και τη γραμμή ημερολογίου που απέτυχε. Οι σημειώσεις του OpenVPN για την ενσωμάτωση με το systemd περιγράφουν τη διάταξη του προτύπου και την αντιστοίχιση αρχείου μέσω της οποίας επιλύεται το όνομα παρουσίας.