OpenVPN 3 Linux: διαβάστε το σφάλμα D-Bus πριν κάνετε επαναφορά
Πέντε υπηρεσίες, ένα frontend. Αντιστοιχίστε το σφάλμα D-Bus στο συστατικό που αρνήθηκε, ελέγξτε αν υπάρχει συνεδρία και μετά διορθώστε σε εκείνο το όριο.
Οι αστοχίες του OpenVPN 3 Linux φτάνουν ως σφάλμα μεθόδου D-Bus με ένα άγνωστο όνομα προσαρτημένο, και ο πειρασμός είναι να υποβαθμίσετε ένα πακέτο και να ελπίζετε. Ο πελάτης δεν είναι ένα πρόγραμμα: ένα frontend γραμμής εντολών μιλάει μέσω του διαύλου με υπηρεσίες που κατέχουν τα προφίλ, τις συνεδρίες, τη μηχανή VPN και τις προνομιακές αλλαγές δικτύου. Το να αποφασίσετε ποια από αυτές τις πέντε κατέχει την αποτυχημένη κλήση είναι το μεγαλύτερο μέρος της διάγνωσης, και κοστίζει μία εντολή αντί για μια επαναφορά. Αυτό που ακολουθεί είναι εκείνη η απόφαση, με τη σειρά με την οποία εμφανίζονται συνήθως οι αστοχίες.
Πέντε ιδιοκτήτες πίσω από μία εντολή
Πέντε διεργασίες μετρούν, και καθεμία έχει το δικό της όνομα διαύλου: το frontend που δέχεται την εντολή σας, ο διαχειριστής ρυθμίσεων που αποθηκεύει τα προφίλ και την πολιτική πρόσβασής τους, ο διαχειριστής συνεδριών που κατέχει τη διάρκεια ζωής της συνεδρίας, το backend που εκτελεί τη σύνδεση μέσω του OpenVPN 3 Core Engine, και η υπηρεσία ρύθμισης δικτύου που εγκαθιστά τη διεπαφή, τις διαδρομές και τις ρυθμίσεις DNS. Ένα σφάλμα που ονομάζει αντικείμενο ρυθμίσεων επομένως δεν είναι σφάλμα backend, και ένα backend που δεν ξεκινά δεν είναι αποτυχία ταυτοποίησης. Η κατάταξη του μηνύματος σε μία από εκείνες τις γραμμές πρέπει να γίνει πριν αλλάξει οτιδήποτε, γιατί κάθε επόμενο βήμα εξαρτάται από το ποια γραμμή είναι αληθινή. Το να μαντέψετε τη γραμμή είναι ο τρόπος με τον οποίο μια σύντομη διόρθωση γίνεται ένα απόγευμα δουλειάς με πακέτα.
Ρωτήστε τον δίαυλο συστήματος ποιες υπηρεσίες είναι παρούσες πριν ρωτήσετε οτιδήποτε άλλο, και μετά επιβεβαιώστε ότι τα εγκατεστημένα κομμάτια συμφωνούν σε μια έκδοση. Το OpenVPN 3 Linux καταχωρεί αυτές τις υπηρεσίες ως μονάδες συστήματος, άρα ο δίαυλος που πρέπει να ρωτηθεί είναι ο δίαυλος συστήματος, το ερώτημα έκδοσης απαιτεί διαχειριστική εξουσία, και μια λίστα που γίνεται με --user διαβάζει τη συνεδρία σύνδεσής σας, όπου οι μονάδες δεν εμφανίζονται ποτέ. Οι υπηρεσίες ενεργοποιούνται κατά απαίτηση και μερικές τερματίζονται όταν είναι αδρανείς, άρα μια υπηρεσία που λείπει πριν από το πρώτο σας αίτημα απλώς δεν έχει ακόμη ερωτηθεί για τίποτα. Οι τρεις εντολές παρακάτω απαντούν για παρουσία, έκδοση και κατάσταση μονάδας χωρίς να ανοίξουν συνεδρία VPN.
sudo busctl list | grep -i openvpn
sudo openvpn3-admin version --services
systemctl list-units 'openvpn3*'Τι αποδεικνύει στην πραγματικότητα κάθε λίστα
Οι απόψεις του ίδιου του πελάτη είναι η φθηνότερη διαθέσιμη απόδειξη, και καθεμία από αυτές αποδεικνύει λιγότερα από όσα φαίνεται. Ένα προφίλ στη λίστα ρυθμίσεων δείχνει ότι ένα προφίλ έχει εισαχθεί και τίποτα για το αν κάποιος επιτρέπεται να συνδεθεί με αυτό. Μια συνεδρία στη λίστα συνεδριών δείχνει ότι υπάρχει αντικείμενο συνεδρίας και τίποτα για το αν ολοκληρώθηκε η απομακρυσμένη ταυτοποίηση.
openvpn3 configs-list
openvpn3 sessions-listΟι διαδρομές αντικειμένων σε εκείνες τις εξόδους προσδιορίζουν διαχειριζόμενα αντικείμενα στον δίαυλο και όχι αρχεία, άρα δεν μπορούν να επεξεργαστούν, και μια διαδρομή που καταγράφηκε νωρίτερα γίνεται παρωχημένη τη στιγμή που εκείνη η συνεδρία αποσυνδέεται. Η επαναχρησιμοποίηση μιας από τις σημειώσεις σας παράγει σφάλματα "no such object" που δεν έχουν καμία σχέση με το VPN. Ο πίνακας σταδίων παρακάτω χωρίζει τι εγκαθιδρύει κάθε βήμα μιας σύνδεσης από τι αφήνει ανοιχτό, και η απόφαση επαναφοράς στηρίζεται ακριβώς σε αυτή τη διάκριση. Διαβάστε τη γραμμή που ταιριάζει με την απόδειξή σας, και μετά διαβάστε ξανά το κείμενο του σφάλματος.
| Stage | What exists | What proves it | What it does not prove |
|---|---|---|---|
| Profile imported | A configuration object held by the configuration manager | The profile is listed by the client | That the profile owner permits a connection |
| Session requested | A session object held by the session manager | The session appears in the session list | That the remote side accepted the credentials |
| Connect dispatched | An asynchronous attempt on the VPN backend | Status changes arrive for that session | That an interface was configured |
| Tunnel configured | An interface, routes and DNS settings | The network service reports success and routes appear | That traffic reaches the peer |
Η κλήση σύνδεσης επιστρέφει πριν υπάρξει η σήραγγα
Η κλήση σύνδεσης σας δίνει μια συνεδρία για παρακολούθηση και επιστρέφει, γι' αυτό μια φαινομενικά επιτυχημένη κλήση που ακολουθείται από σιωπή είναι κανονική ενδιάμεση κατάσταση και όχι αντίφαση. Το frontend πρέπει ακόμη να ακολουθεί τις αλλαγές κατάστασης και να απαντά σε κάθε αίτημα αλληλεπίδρασης. Ένα προφίλ που χρειάζεται διαπιστευτήριο και δεν λαμβάνει απάντηση περιμένει σε κατάσταση που μοιάζει ακριβώς με κολλημένο backend. Αυτή η κατάσταση αναμονής αξίζει αναγνώριση, γιατί στέλνει τους ανθρώπους στο λάθος συστατικό.
Όσο μια προσπάθεια εκτελείται, παρακολουθήστε τη λίστα συνεδριών και το δικό του αρχείο καταγραφής του frontend για εκείνο το προφίλ. Μια συνεδρία που δεν εγκαταλείπει ποτέ την αρχική της κατάσταση ονομάζει το συστατικό που σταμάτησε, και το αρχείο καταγραφής το ονομάζει συνήθως ήδη στις πρώτες γραμμές. Κρατήστε το όνομα του προφίλ πρόχειρο, αφού η εντολή καταγραφής παίρνει προφίλ και όχι διαδρομή συνεδρίας, που είναι ένας ακόμη λόγος να διαβάσετε ξανά τη λίστα αντί να επαναχρησιμοποιήσετε μια διαδρομή.
openvpn3 sessions-list
openvpn3 log --config <profile> --level 6Ανάγνωση του αρχείου καταγραφής ενός συστατικού χωρίς άνοιγμα συνεδρίας
Όταν το frontend δεν αναφέρει τίποτα χρήσιμο, πηγαίνετε στο συστατικό που κατέγραψε την αστοχία αντί να ξεκινήσετε άλλη σύνδεση. Με διαμορφωμένο καταγραφέα systemd-journald, η περιορισμένη προβολή ημερολογίου του διαχειριστή διαβάζει τα γεγονότα ενός συστατικού χωρίς να αγγίξει την πολιτική του διαύλου ή να ανοίξει συνεδρία, κάτι που μετράει γιατί μια διάγνωση που αλλάζει το σύστημα που μετρά αποδεικνύει ελάχιστα. Φιλτράρετε κατά μονάδα και όχι κατά ετικέτα syslog: οι μεμονωμένες μονάδες υπηρεσίας δεν εγγυώνται κοινό αναγνωριστικό, άρα ένα ερώτημα ετικέτας μπορεί να επιστρέψει κενή σελίδα ενώ η ίδια η μονάδα κατέγραψε την αστοχία.
Καταγράψτε τέσσερα πεδία πριν ζητήσετε βοήθεια από οποιονδήποτε: το πλήρες όνομα του σφάλματος, την υπηρεσία και το αντικείμενο που εμπλέκονται, τη χρονική σφραγίδα και τις εκδόσεις των εγκατεστημένων πακέτων. Αυτά χρειάζεται ένας συντηρητής, και κανένα από αυτά δεν απαιτεί να επικολλήσετε ένα προφίλ ή ένα διαπιστευτήριο σε ένα δελτίο. Η διεύρυνση της πολιτικής πρόσβασης στον δίαυλο για να σωπάσει το σφάλμα δεν είναι διάγνωση, διαγράφει το όριο που ονόμαζε το συστατικό για εσάς. Το ιδιωτικό περιεχόμενο των προφίλ μένει έξω από κοινές αναφορές για τον ίδιο λόγο με τα διαπιστευτήρια.
journalctl -u 'openvpn3-service-*' -n 50 --no-pager
openvpn3-admin journal --service <name>Διόρθωση του ορίου που αρνήθηκε
Κάθε γραμμή του χάρτη έχει τη δική της διόρθωση, και οι γραμμές δεν αντικαθιστούν η μία την άλλη. Μια απορριφθείσα πράξη σε ένα προφίλ είναι ζήτημα πολιτικής και ιδιοκτησίας, ενώ ένα backend που δεν ενεργοποιείται είναι ζήτημα υπηρεσιών και συσκευασίας. Ένας διακομιστής που απορρίπτει την ταυτοποίηση δεν είναι κανένα από τα δύο, άρα επαναλαμβανόμενες αλλαγές κωδικού δεν μπορούν να επιδιορθώσουν ένα τοπικό πρόβλημα ενεργοποίησης. Η επιλογή λάθος διόρθωσης είναι ο τρόπος με τον οποίο ένα πρόβλημα πολιτικής γίνεται επανεγκατάσταση.
Μετά από αλλαγή πακέτων, επαληθεύστε μια συνεκτική και υποστηριζόμενη εγκατάσταση αντί να αντιγράψετε ένα παλιό δυαδικό στη θέση του. Μια ελεγχόμενη επαναφορά είναι νόμιμη απάντηση σε επιβεβαιωμένη παλινδρόμηση, υπό την προϋπόθεση ότι τα πακέτα παραμένουν συμβατά και υπάρχει δρόμος επιστροφής σε υποστηριζόμενη συντήρηση. Καθιερώστε αυτόν τον δρόμο πριν η υπηρεσία πάψει να ξεκινά, όχι μετά.
Μια άλλη πλατφόρμα μπορεί να μοιράζεται την ίδια βασική βιβλιοθήκη VPN χωρίς να μοιράζεται τις υπηρεσίες διαύλου του Linux, άρα μια παρόμοια αστοχία στα Windows δεν λέει τίποτα για αυτήν. Η επισκόπηση του D-Bus τεκμηριώνει τις διαδρομές αντικειμένων που εκτίθενται για ρυθμίσεις και συνεδρίες, και αυτό είναι το τμήμα της αρχιτεκτονικής στο οποίο στηρίζεται αυτή η διάγνωση. Διαβάστε την μία φορά, και το επόμενο σφάλμα θα έρθει με ένα συστατικό ήδη προσαρτημένο σε αυτό.