Ξεκινάτε το OpenVPN από ένα κέλυφος με ένα αρχείο ρυθμίσεων και το τερματικό μένει εκεί χωρίς καμία έξοδο. Χωρίς πανό, χωρίς σφάλμα, χωρίς προτροπή. Το ένστικτο λέει ότι η εκκίνηση απέτυχε, οπότε ξεκινάτε άλλο αντίγραφο, μετά άλλο, και το μηχάνημα καταλήγει με πολλές μισοδιαμορφωμένες παρουσίες. Πριν από όλα αυτά, ελέγξτε το προφίλ για μια οδηγία που έχει ήδη ανακατευθύνει το αρχείο καταγραφής κάπου αλλού. Η σιωπή είναι ιδιότητα της κονσόλας, όχι της διεργασίας.

Η σιωπή έχει δύο πολύ διαφορετικές εξηγήσεις

Η πρώτη είναι ότι η διεργασία τρέχει καλά και γράφει σε ένα αρχείο που δεν παρακολουθείτε. Η δεύτερη είναι ότι τερμάτισε αμέσως με ένα σφάλμα καταγεγραμμένο στο ίδιο αρχείο.

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

Βρείτε την οδηγία και μετά βρείτε τη διεργασία.

ps -o pid,args= -C openvpn
grep -nE '^\s*(log|log-append|cd|daemon|verb)\b' /etc/openvpn/server/server.conf

Βρείτε τον προορισμό που χρησιμοποιεί η τρέχουσα διεργασία

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

Μια ρητή οδηγία cd κάνει αυτή τη διάκριση πιο έντονη, γιατί η σχετική διαδρομή μετακινείται μαζί με την αλλαγή καταλόγου. Αν κληρονομήσατε αυτή τη διαμόρφωση, το αρχείο μπορεί να βρίσκεται κάπου που κανείς δεν θα το έψαχνε τώρα.

Συγκρίνετε τον χρόνο τροποποίησης του αρχείου με τη στιγμή που ξεκινήσατε. Ένα αρχείο καταγραφής της περασμένης εβδομάδας είναι απόδειξη για την περασμένη εβδομάδα. Μετά διαβάστε τις τελευταίες γραμμές του αρχείου που άλλαξε και θεωρήστε ό,τι υπάρχει εκεί ως το μήνυμα εκκίνησης που σας έλειπε.

log έναντι log-append: απόδειξη και διαγραφή

Το log-append προσθέτει σε ό,τι υπάρχει ήδη στο αρχείο. Το log ανοίγει το αρχείο για εγγραφή και το περικόπτει, οπότε η εναλλαγή μεταξύ τους μπορεί να διαγράψει την εκτέλεση που επρόκειτο να διαβάσετε.

Αν κάποιος άλλαξε την οδηγία κατά την αποσφαλμάτωση, η προηγούμενη απόδειξη έχει ήδη χαθεί και το μέγεθος του αρχείου θα φαίνεται ύποπτα μικρό. Αξίζει να το ξέρετε πριν συγκρίνετε δύο εκτελέσεις και συμπεράνετε ότι κάτι άλλαξε. Διαγράψτε ένα αρχείο καταγραφής σκόπιμα ή κρατήστε το, αλλά να ξέρετε ποιο από τα δύο κάνατε. Οι αποδείξεις που αφαιρέσατε σκόπιμα εξηγούνται ευκολότερα από εκείνες που χάσατε κατά λάθος.

Καμία από τις δύο επιλογές δεν δημιουργεί ανύπαρκτους γονικούς καταλόγους και καμία δεν παρέχει πρόσβαση μέσω δικαιωμάτων συστήματος αρχείων ή sandbox υπηρεσίας. Μια διαδρομή που φαίνεται σωστή στη διαμόρφωση μπορεί ακόμη να μην είναι εγγράψιμη από τον λογαριασμό με τον οποίο τρέχει ο δαίμονας, οπότε ο δαίμονας μπορεί να αποτύχει πριν προλάβει να αναφέρει οτιδήποτε. Ελέγξτε αν ο κατάλογος υπάρχει και ποιος τον κατέχει πριν υποθέσετε ότι το πρόβλημα είναι το όνομα αρχείου.

Όταν ένα περιτύλιγμα υπηρεσίας συλλαμβάνει την έξοδο

Στο systemd, η τυπική έξοδος και το σφάλμα πηγαίνουν στο journal εκτός αν μια ρητή οδηγία αρχείου έχει προτεραιότητα, και ένα περιτύλιγμα προμηθευτή μπορεί να τα συλλάβει εντελώς αλλού.

Γι' αυτό το ίδιο προφίλ συμπεριφέρεται διαφορετικά από ένα κέλυφος και από μια μονάδα. Το περιβάλλον της μονάδας, ο κατάλογος εργασίας της και οι τυπικές ροές της διαφέρουν από το διαδραστικό σας κέλυφος. Μια σχετική διαδρομή μπορεί να επιλυθεί σε ένα πλαίσιο και να μην καταλήξει πουθενά στο άλλο. Διαβάστε τον ορισμό της μονάδας όταν τα δύο διαφωνούν, όχι το προφίλ.

Συγκρίνετε τις δύο ρυθμίσεις εκκίνησης αντί να συμπεράνετε ότι μία από αυτές είναι χαλασμένη. Διαβάστε τη γραμμή εντολών της μονάδας και το περιβάλλον της και μετά διαβάστε το journal για το ίδιο χρονικό διάστημα. Αν το περιτύλιγμα ανακατευθύνει την έξοδο στο δικό του αρχείο, αυτό το αρχείο είναι τώρα το αρχείο καταγραφής σας και οι οδηγίες του OpenVPN είναι άσχετες με το πού πήγαν τα μηνύματα.

Ανεβάστε τη λεπτομέρεια μόνο αφού μπορείτε να τη διαβάσετε

Η αύξηση της λεπτομέρειας πριν βρεθεί ο προορισμός παράγει απλώς περισσότερο κείμενο σε ένα σημείο που δεν κοιτάτε.

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

Μετά διαβάστε το πραγματικό σφάλμα. Ένα σιωπηλό τερματικό δεν αποδεικνύει τίποτα για το αν σηκώθηκε το τούνελ, και η αποτυχία που καταγράφεται στο αρχείο είναι αυτή που αξίζει να διορθωθεί.

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