openvpn3 session-start αγνοεί το αρχείο διαπιστευτηρίων σας
Ο client 3.x παίρνει διαπιστευτήρια στην έναρξη της συνεδρίας και δεν θα διαβάσει αποθηκευμένο αρχείο. Χρησιμοποιήστε την προτροπή ή τη διαδρομή αυτόματης φόρτωσης και δεχτείτε τι αποθηκεύει καθεμία.
Συνδεθείτε με τον client 2.x και το προφίλ λειτουργεί· δώστε το ίδιο αρχείο στον client 3.x και σταματά σε προτροπή κωδικού. Δώστε --auth-user-pass creds.txt στο openvpn3 session-start και το αποτέλεσμα είναι το ίδιο, επειδή ο νεότερος client δεν έχει στάδιο που διαβάζει το αρχείο. Η άρνηση είναι σκόπιμη: τα διαπιστευτήρια ανήκουν σε μια συνεδρία, και τη συνεδρία τη δημιουργεί μια υπηρεσία, όχι η διεργασία στο τερματικό σας. Επιλέξτε ανάμεσα στη διαδραστική προτροπή και τον βοηθό αυτόματης φόρτωσης, και μάθετε τι αποθηκεύει ο καθένας.
Γιατί το αποθηκευμένο αρχείο δεν έχει πού να πάει
Στον νεότερο σχεδιασμό, η διαχείριση διαμόρφωσης και η διαχείριση συνεδριών είναι ξεχωριστές υπηρεσίες που μιλούν μέσω του διαύλου συστήματος. Αυτός ο διαχωρισμός επιτρέπει σε έναν συνηθισμένο χρήστη να ξεκινήσει μια συνεδρία χωρίς ένα προνομιακό δαίμονα να διαβάζει για λογαριασμό του ένα προστατευμένο αρχείο κωδικών. Τα διαπιστευτήρια που βασίζονται σε αρχείο δεν έχουν θέση σε αυτό το μοντέλο, γιατί δεν υπάρχει εκκίνηση στην πλευρά του δαίμονα που θα τα διάβαζε. Η άρνηση είναι συνέπεια της αρχιτεκτονικής, όχι χαρακτηριστικό που λείπει.
Αξίζει να ονομάσουμε το παλιό μοτίβο για να το ξεμάθουμε ευκολότερα: ένα προφίλ παραπέμπει σε αρχείο διαπιστευτηρίων, και ο δαίμονας το διαβάζει όταν ξεκινά η σήραγγα. Στο νέο μοντέλο, τα διαπιστευτήρια ανήκουν σε μια συνεδρία και παρέχονται όταν αρχίζει αυτή η συνεδρία. Το openvpn3 session-start --config work.ovpn τα ζητά, και το --auth-user-pass creds.txt απορρίπτεται επειδή τίποτα σε αυτή τη διαδρομή δεν θα άνοιγε το αρχείο. Κάθε συνταγή για 2.x που θα βρείτε προϋποθέτει ένα στάδιο που δεν υπάρχει πια.
Η διαμόρφωση και οι τοπικές ρυθμίσεις του ιστότοπου είναι επίσης χωρισμένες, κάτι που εξηγεί μια δεύτερη έκπληξη. Ένα προφίλ μπορεί να φαίνεται πλήρες ενώ η σύνδεση που παράγει στερείται διαμόρφωσης δρομολόγησης και επιλυτή. Αυτά τα κομμάτια εφαρμόζονται ως τοπικές ρυθμίσεις του ιστότοπου, ξεχωριστά από το εισαγόμενο αρχείο.
Η διαδρομή της προτροπής και η συνεδρία που αφήνει
Η παροχή του κωδικού όταν ξεκινά η συνεδρία είναι η προβλεπόμενη ροή εργασίας. Ο client ρωτά μία φορά, παραδίδει τα διαπιστευτήρια στο backend της συνεδρίας και συνεχίζει:
openvpn3 session-start --config work.ovpn
openvpn3 sessions-list
Με αυτή τη διαδρομή δεν γράφεται τίποτα στον δίσκο. Η συνεδρία συνεχίζει να τρέχει και αφού κλείσει το τερματικό, κάτι που εκπλήσσει όσους περιμένουν η διεργασία να πεθάνει μαζί με το κέλυφός τους. Αυτό ακριβώς είναι το νόημα της μεταφοράς της διαχείρισης συνεδριών σε μια υπηρεσία. Η συνεδρία επιβιώνει του τερματικού που τη ζήτησε, και πρέπει να σταματήσει ρητά.
Για ένα σταθμό εργασίας με άνθρωπο μπροστά, αυτή είναι και η ασφαλέστερη επιλογή, γιατί δεν υπάρχει αποθηκευμένο μυστικό να προστατεύσετε ή να ξεχάσετε. Είναι ακατάλληλη μόνο εκεί όπου δεν υπάρχει κανείς να πληκτρολογήσει.
Αυτοματισμός χωρίς άνθρωπο στο πληκτρολόγιο
Όπου ένα μηχάνημα πρέπει να συνδεθεί χωρίς άνθρωπο, το έργο παρέχει το openvpn3-autoload. Διαβάζει έναν κατάλογο προφίλ και έναν αντίστοιχο περιγραφέα για κάθε προφίλ, και ο περιγραφέας παρέχει τα διαπιστευτήρια σε απλό κείμενο. Ο βοηθός είναι ξεχωριστό δυαδικό αρχείο, συνήθως στο /usr/sbin/openvpn3-autoload, όχι σημαία του session-start. Η ρύθμιση σημαίνει δημιουργία του καταλόγου, αντιγραφή του προφίλ με το όνομα που περιμένει ο περιγραφέας, και συγγραφή του περιγραφέα.
Μια ρύθμιση ανά χρήστη μοιάζει έτσι και εκτελείται ως ο λογαριασμός που θα κατέχει τη συνεδρία. Η λειτουργία του καταλόγου κρατά έξω τους άλλους τοπικούς χρήστες:
mkdir -m700 -p ~/.openvpn3/autoload
cp work.ovpn ~/.openvpn3/autoload/client.conf
$EDITOR ~/.openvpn3/autoload/client.autoload
Ο περιγραφέας ονομάζει τα διαπιστευτήρια και ζητά αυτόματη εκκίνηση. Κρατήστε την τιμή του κωδικού έξω από τον έλεγχο εκδόσεων:
{
"autostart": true,
"user-auth": {
"autologin": true,
"username": "svc-vpn",
"password": "change-this-value"
}
}
Στη συνέχεια καλέστε τον βοηθό μία φορά και επιβεβαιώστε ότι η συνεδρία εμφανίζεται. Η δεύτερη εντολή είναι ο έλεγχος, όχι άλλο βήμα ρύθμισης:
/usr/sbin/openvpn3-autoload --directory ~/.openvpn3/autoload
openvpn3 sessions-list
Κατά την εκκίνηση, μια πακεταρισμένη μονάδα με όνομα openvpn3-autoload.service χρησιμοποιεί τον κατάλογο σε επίπεδο συστήματος /etc/openvpn3/autoload, όχι τον κατά χρήστη. Αυτή η θέση απαιτεί ιδιοκτησία root και αυστηρότερη λειτουργία, και ο περιγραφέας εξακολουθεί να κρατά τον κωδικό σε απλό κείμενο. Ο συμβιβασμός είναι σαφής: ο κωδικός βρίσκεται τώρα στον δίσκο, οπότε αντιμετωπίστε αυτόν τον κατάλογο ως μυστικό, εξαιρέστε τον από αντίγραφα ασφαλείας εκτός του κεντρικού υπολογιστή, και επιλέξτε τη διαδραστική διαδρομή όποτε υπάρχει άνθρωπος.
Βλάβες διαύλου που μοιάζουν με βλάβες κωδικού
Ορισμένες βλάβες που αποδίδονται στα διαπιστευτήρια δεν είναι καθόλου τέτοιες. Ένα σφάλμα άδειας που ονομάζει τη διαδρομή ενεργοποίησης της υπηρεσίας σημαίνει ένα από δύο: το backend δεν τρέχει, ή ο καλών δεν έχει άδεια να το ενεργοποιήσει. Καμία επεξεργασία προφίλ δεν αλλάζει κανένα από τα δύο. Ελέγξτε την κατάσταση της υπηρεσίας και την πολιτική διαύλου που παρέχεται πριν αγγίξετε τη διαμόρφωση.
Οι παρακάτω εντολές χωρίζουν τα δύο. Η πρώτη αναφέρει αν τρέχει το backend· η δεύτερη δείχνει πρόσφατα σφάλματα διαύλου:
systemctl status openvpn3-service-client
journalctl -b -u openvpn3-service-client --no-pager | tail -20
Η άλλη συχνή παρερμηνεία είναι μια συνεδρία που εμφανίζεται και εξαφανίζεται αμέσως. Αυτό το μοτίβο συνήθως σημαίνει ότι οι τοπικές ρυθμίσεις του ιστότοπου δεν εφαρμόστηκαν ποτέ, οπότε η σήραγγα ανέβηκε χωρίς τις αλλαγές δρομολόγησης και επιλυτή που την κάνουν χρήσιμη. Διαβάστε την ακολουθία και όχι την τελευταία γραμμή: αν η συνεδρία δημιουργήθηκε, αν έφτασε σε συνδεδεμένη κατάσταση και αν επιβίωσε είναι τρία ξεχωριστά γεγονότα.
Όταν ο παλαιότερος client χρησιμοποιείται ακόμη
Ο client 2.x εξακολουθεί να δέχεται αρχείο διαπιστευτηρίων, και μια κλειδοθήκη μπορεί να απαντήσει στην προτροπή του χωρίς το μυστικό να φτάσει ποτέ στον δίσκο. Ένα περιτύλιγμα επιλύει την καταχώριση, οπότε το αρχείο ονομάζει την αναζήτηση και όχι τον κωδικό. Αυτή η διάταξη εξαρτάται από ξεκλείδωτη κλειδοθήκη, κάτι που ένα κοντέινερ χωρίς συνεδρία σύνδεσης ή μια μονάδα που ξεκινά πριν συνδεθεί κανείς δεν μπορούν να παρέχουν. Το εργαλείο αναζήτησης αναφέρει τότε μια συλλογή στην οποία δεν μπορεί να γράψει, οπότε το σφάλμα μοιάζει με βλάβη διαπιστευτηρίων ενώ είναι βλάβη κλειδοθήκης.
Πριν χτίσετε οτιδήποτε από αυτά, ελέγξτε αν μια ρύθμιση keepalive στο προφίλ αφαιρεί εντελώς την ανάγκη επανεκκίνησης. Μια συνεδρία που μένει πάνω δεν φτάνει ποτέ στην προτροπή που προσπαθείτε να αυτοματοποιήσετε.