Η μονάδα -.mount είναι μασκαρισμένη: ο πελάτης OpenVPN δεν ξεκινά
Ένα υπολειπόμενο αρχείο -.mount στο /run/systemd/system μασκάρει τη μονάδα προσάρτησης ρίζας, οπότε κάθε μονάδα που χρειάζεται το σύστημα αρχείων αποτυγχάνει πριν ξεκινήσει το OpenVPN.
Η υπηρεσία σας αποτυγχάνει πριν το OpenVPN εκτελεστεί ποτέ, και το σφάλμα μιλά για μια μονάδα προσάρτησης που δεν ρυθμίσατε ποτέ. Αυτό είναι το σημάδι: το systemd απορρίπτει ολόκληρη τη συναλλαγή επειδή η μονάδα προσάρτησης ρίζας είναι μασκαρισμένη, και το προφίλ VPN σας δεν έχει διαβαστεί ακόμη. Η συνήθης αιτία είναι ένα εναπομείναν αρχείο στον κατάλογο μονάδων χρόνου εκτέλεσης, όχι ένα χαλασμένο fstab και όχι ένα πιστοποιητικό που λείπει. Ακολουθήστε πρώτα το αρχείο, γιατί αυτή είναι η φθηνότερη εξήγηση προς αποκλεισμό.
Το σφάλμα ονομάζει την προσάρτηση ρίζας, όχι το προφίλ σας
Το systemd δημιουργεί μόνο του τη μονάδα προσάρτησης ρίζας από τις πληροφορίες προσάρτησης του πυρήνα, και ονομάζει τη μονάδα -.mount επειδή η παύλα αντιπροσωπεύει τη διαδρομή ρίζας. Αυτή η μονάδα συνήθως υπάρχει μόνο στη μνήμη και δεν έχει αρχείο πίσω της. Όταν το σφάλμα λέει ότι είναι μασκαρισμένη, κάποιος έβαλε ένα αρχείο μονάδας εκεί όπου το systemd θα το φορτώσει και έστρεψε αυτό το αρχείο στο /dev/null. Το μασκάρισμα είναι πραγματική κατάσταση, όχι τυπογραφικό λάθος στο μήνυμα.
Η μονάδα στιγμιοτύπου αποτυγχάνει επειδή το γράφημα εργασιών της φτάνει στην προσάρτηση ρίζας μέσω της σειράς και μέσω των δικών της απαιτήσεων προσάρτησης. Η συναλλαγή απορρίπτεται πριν εκτελεστεί το δυαδικό του OpenVPN, οπότε τίποτα στη διαμόρφωση του πελάτη δεν μπορεί να είναι η αιτία. Γι' αυτό η αλλαγή προφίλ, πιστοποιητικών ή διαπιστευτηρίων δεν έχει καμία επίδραση σε αυτή τη συγκεκριμένη αποτυχία.
Κοιτάξτε τον κατάλογο χρόνου εκτέλεσης πριν αποσφαλματώσετε το OpenVPN
Αναζητήστε ένα αρχείο με ακριβώς αυτό το όνομα στον κατάλογο μονάδων χρόνου εκτέλεσης, έπειτα ρωτήστε το systemd τι νομίζει ότι είναι η μονάδα. Και οι δύο απαντήσεις είναι γρήγορες, και μαζί διαχωρίζουν ένα εναπομείναν αρχείο από ένα πραγματικό πρόβλημα προσάρτησης.
ls -l /run/systemd/system/-.mount
systemctl status -.mount
systemctl list-unit-files --state=masked | grep mount
Ένα κανονικό μηχάνημα δεν έχει τέτοιο αρχείο, και η λίστα μασκαρισμένων δεν περιέχει την προσάρτηση ρίζας. Αν η πρώτη εντολή εκτυπώσει έναν συμβολικό σύνδεσμο προς το /dev/null, η διάγνωση έχει κλείσει. Ο ίδιος κατάλογος μπορεί να περιέχει μια μάσκα tmp.mount που δημιούργησαν τα ίδια εργαλεία, και αυτό παράγει την ίδια κατηγορία αποτυχίας με άλλο όνομα. Κοιτάξτε ολόκληρο τον κατάλογο και όχι μόνο το όνομα στο σφάλμα.
ls -la /run/systemd/system/*.mount
Αν ο κατάλογος είναι καθαρός και η μονάδα είναι ακόμη μασκαρισμένη, η μάσκα βρίσκεται αλλού στη διαδρομή αναζήτησης, και το systemctl cat -.mount θα δείξει ποιο αρχείο φορτώνεται.
Διαγράψτε το αρχείο, επαναφορτώστε και ξεκινήστε ξανά
Αρκεί να αφαιρέσετε το αρχείο χρόνου εκτέλεσης και να επαναφορτώσετε τον διαχειριστή, και δεν αγγίζει τίποτα που προήλθε από πακέτο. Επαναφορτώστε πριν την εκκίνηση, γιατί το systemd κρατά την κατάσταση της φορτωμένης μονάδας μέχρι να ξαναδιαβάσει τον κατάλογο.
sudo rm -f /run/systemd/system/-.mount /run/systemd/system/tmp.mount
sudo systemctl daemon-reload
systemctl status -.mount
sudo systemctl start [email protected]
Έπειτα διαβάστε το ημερολόγιο της ίδιας της υπηρεσίας αντί να υποθέσετε ότι η διόρθωση λειτούργησε. Μια καθαρή εκκίνηση αποδεικνύει μόνο ότι το systemd δέχτηκε τη μονάδα; ο πελάτης μπορεί ακόμη να πεθάνει από ένα προφίλ που λείπει, έναν μη προσβάσιμο ομότιμο ή ένα πιστοποιητικό που δεν επικυρώνεται. Αυτά είναι συνηθισμένα προβλήματα του OpenVPN που ήταν κρυμμένα πίσω από τη μασκαρισμένη μονάδα. Το ημερολόγιο καταγράφει ποιο προφίλ φορτώθηκε και αν η σήραγγα στήθηκε πραγματικά. Αν η μονάδα ξεκινά και η σήραγγα όχι, περάσατε σε άλλο πρόβλημα, και αυτό είναι πρόοδος.
journalctl -u [email protected] -b --no-pager
Επειδή το /run είναι προσωρινό σύστημα αρχείων, μια επανεκκίνηση καθαρίζει και το αρχείο. Αυτό κάνει την επανεκκίνηση χρήσιμη δοκιμή: αν η υπηρεσία λειτουργεί μετά από επανεκκίνηση και αποτυγχάνει ξανά μετά την επόμενη ανάπτυξη, το αρχείο ψήνεται μέσα στην εικόνα.
Εμποδίστε την επιστροφή του από την εικόνα
Ένα πρότυπο κοντέινερ ή εικονικής μηχανής που μασκάρει μονάδες προσάρτησης κατά την κατασκευή του θα μεταφέρει αυτή τη μάσκα σε κάθε κλώνο. Το επόμενο που χρειάζεται το σύστημα αρχείων σπάει, και το μήνυμα κατηγορεί την προσάρτηση αντί για την εικόνα από την οποία προήλθε. Η διόρθωση μέσα σε ένα στιγμιότυπο που τρέχει κρύβει το πρόβλημα μέχρι να δημιουργηθεί το επόμενο στιγμιότυπο.
Αναζητήστε στο περιβάλλον κατασκευής το όνομα του αρχείου και την εντολή που το δημιουργεί, μετά αφαιρέστε τη μάσκα από το πρότυπο και ξαναχτίστε. Αν η μάσκα χρειάζεται πραγματικά κατά την κατασκευή, αφαιρέστε την στο ίδιο στρώμα που τελειώνει την κατασκευή, ώστε η εικόνα που αποστέλλεται να ξεκινά καθαρή. Επαληθεύστε σε έναν νέο κλώνο και όχι στο μηχάνημα που διορθώσατε με το χέρι. Αυτή είναι η μόνη δοκιμή που αποδεικνύει ότι η εικόνα άλλαξε.
Το σύμπτωμα που πρέπει να θυμάστε είναι η αναντιστοιχία ανάμεσα στο σφάλμα και σε αυτό που ρυθμίζατε. Όταν το systemd παραπονιέται για μια προσάρτηση ενώ ξεκινάτε έναν πελάτη VPN, διαβάστε πρώτα το όνομα της μονάδας στο μήνυμα και μετά το όνομα της υπηρεσίας.