OpenVPN κατά την εκκίνηση στο Ubuntu: NetworkManager ή systemd;
Ένας φορητός υπολογιστής και ένας διακομιστής χωρίς οθόνη χρειάζονται διαφορετικές διαδρομές εκκίνησης. Συγκρίνετε τη δευτερεύουσα σύνδεση του NetworkManager με το openvpn-client@ και το αρχείο διαπιστευτηρίων του.
Οι περισσότεροι οδηγοί παρουσιάζουν την επιλογή ως καλλωπιστική: είτε αφήνετε το NetworkManager να σηκώσει το τούνελ, είτε ενεργοποιείτε ένα στιγμιότυπο systemd και τελειώνετε. Οι δύο διαδρομές διαφέρουν σε ένα πράγμα που καθορίζει το αποτέλεσμα σε μηχάνημα χωρίς οθόνη, και δεν έχει καμία σχέση με το ποιο εργαλείο είναι νεότερο. Το NetworkManager ξεκλειδώνει μυστικά μέσω συνεδρίας· ένα στιγμιότυπο systemd δεν έχει συνεδρία για να ξεκλειδώσει. Διαλέξτε εκείνη της οποίας ο χειρισμός μυστικών ταιριάζει με το μηχάνημα μπροστά σας.
Όλα τα άλλα, από την εγκατάσταση διαδρομών έως τη συμπεριφορά επανασύνδεσης, απορρέουν από εκείνη την πρώτη απόφαση.
Το κλειδί είναι η διαφορά που δεν αναφέρει κανείς
Όταν το NetworkManager κατέχει ένα προφίλ VPN, ο κωδικός μπορεί να ζει στο κλειδί σύνδεσης, το οποίο ξεκλειδώνεται όταν ένας χρήστης συνδέεται. Αυτό λειτουργεί καλά σε φορητό υπολογιστή: το άτομο είναι παρόν, το κλειδί ανοίγει, το τούνελ σηκώνεται. Σε διακομιστή που εκκινεί χωρίς επίβλεψη δεν υπάρχει κανείς να ξεκλειδώσει τίποτα, οπότε το προφίλ περιμένει ένα μυστικό που δεν φτάνει ποτέ. Η σύνδεση φαίνεται ρυθμισμένη και δεν ενεργοποιείται ποτέ.
Το στιγμιότυπο systemd αποφεύγει αυτό το πρόβλημα διαβάζοντας ένα αρχείο διαπιστευτηρίων από τον δίσκο, γεγονός που κάνει το αρχείο αυτό που προστατεύετε. Το chmod 400 μαζί με την κυριότητα από το root είναι το ελάχιστο, και το αρχείο θα πρέπει να μένει έξω από αντίγραφα ασφαλείας και πρότυπα εικόνων που δεν ελέγχετε.
Η σύνδεση του VPN με μια σύνδεση δεν εγγυάται την εκκίνηση
Στο nm-connection-editor, επιλέξτε την ενσύρματη ή ασύρματη σύνδεση αντί του VPN, ανοίξτε την καρτέλα General, τσεκάρετε την επιλογή αυτόματης σύνδεσης με VPN και ονομάστε το προφίλ. Έπειτα το NetworkManager ενεργοποιεί το VPN ως δευτερεύουσα σύνδεση όταν η κύρια φτάσει σε συνδεδεμένη κατάσταση. Αυτή είναι εξάρτηση, όχι κανόνας τείχους προστασίας. Τα πακέτα μπορούν ακόμη να φεύγουν στα δευτερόλεπτα πριν σηκωθεί το τούνελ, και ένα αποθηκευμένο μυστικό που αποτυγχάνει να ξεκλειδώσει αφήνει το μηχάνημα σε απευθείας σύνδεση χωρίς αυτό.
Αν η απαίτηση είναι τίποτα να μη φεύγει χωρίς το τούνελ, πείτε το και φτιάξτε διακόπτη ασφαλείας, γιατί αυτή η ρύθμιση δεν θα σας τον δώσει. Δοκιμάστε επίσης αναστολή και επανάληψη, αφού η δευτερεύουσα σύνδεση επαναξιολογείται στην επιστροφή.
Το στιγμιότυπο systemd χρειάζεται όνομα αρχείου που ταιριάζει
Τοποθετήστε το προφίλ στον κατάλογο πελάτη που περιμένει το πακέτο, όπως /etc/openvpn/client/office.conf, και αναφερθείτε από μέσα στο αρχείο διαπιστευτηρίων με το auth-user-pass office.cred. Το όνομα του στιγμιότυπου είναι το όνομα του αρχείου χωρίς το επίθεμα, οπότε το openvpn-client@office διαβάζει το office.conf. Ενεργοποιήστε το με το sudo systemctl enable --now openvpn-client@office και επιβεβαιώστε την αντιστοίχιση με το systemctl cat openvpn-client@office αντί να εμπιστεύεστε ένα παράδειγμα από ένα blog.
Οι διαδρομές μέσα στο προφίλ επιλύονται σε σχέση με τον κατάλογο εργασίας της μονάδας, όχι με το ίδιο το προφίλ, οπότε μια σχετική γραμμή ca ή auth-user-pass μπορεί να αποτύχει στην εκκίνηση ενώ λειτουργεί όταν τη δοκιμάζετε με το χέρι. Χρησιμοποιήστε απόλυτες διαδρομές για ό,τι πρέπει να βρει η μονάδα. Έπειτα διαβάστε το journalctl -u openvpn-client@office -b μετά από πραγματική εκκίνηση· μια μονάδα που αναφέρει ενεργή χωρίς τούνελ συνήθως ονομάζει ένα αρχείο που λείπει σε εκείνο το ημερολόγιο.
Τα παλαιότερα πακέτα παρέχουν διαφορετικό όνομα προτύπου, οπότε το systemctl list-unit-files 'openvpn*' καθορίζει ποιο υπάρχει σε αυτόν τον υπολογιστή.
Η συμπεριφορά επανασύνδεσης είναι ξεχωριστή απόφαση
Ένα προφίλ με ping-restart ξαναχτίζει το τούνελ αφού πέσει, και μια μονάδα με οδηγία επανεκκίνησης κάνει κάτι παρόμοιο σε επίπεδο υπηρεσίας. Αυτές είναι πολιτικές που επιλέγετε, όχι προεπιλογές που κληρονομείτε. Αν η σύνδεση πρέπει να σηκώνεται μόνο κατά απαίτηση, αφαιρέστε σκόπιμα τη συμπεριφορά επανεκκίνησης και γράψτε γιατί. Αν η μονάδα ξεκινά πριν το δίκτυο γίνει χρησιμοποιήσιμο, χρειάζεται πολιτική επανάληψης, γιατί μια αποτυχημένη προσπάθεια στην εκκίνηση δεν επαναλαμβάνεται μόνη της.
Η διακοπή είναι εξίσου κυριολεκτική: το sudo systemctl disable --now openvpn-client@office σταματά το στιγμιότυπο που τρέχει και αφαιρεί τον σύνδεσμο εκκίνησης. Η απλή απενεργοποίηση αφήνει το τούνελ να τρέχει μέχρι την επόμενη επανεκκίνηση, κάτι που εκπλήσσει όποιον δοκιμάζει απενεργοποιώντας και βλέποντας τη διεπαφή να μένει πάνω.
Επανεκκινήστε και μετά ελέγξτε τέσσερα πράγματα με σειρά
Η επανεκκίνηση της υπηρεσίας ελέγχει την υπηρεσία· η επανεκκίνηση του μηχανήματος ελέγχει τη διαδρομή εκκίνησης. Μετά την επανεκκίνηση, επιβεβαιώστε ότι η μονάδα σηκώθηκε, μετά ότι υπάρχει διαδρομή για το απομακρυσμένο υποδίκτυο, μετά ποια διεύθυνση παρουσιάζει το μηχάνημα στο διαδίκτυο, και τέλος ότι τα ονόματα επιλύονται μέσω του τούνελ. Αυτοί οι τέσσερις έλεγχοι αποτυγχάνουν με αυτή τη σειρά όταν κάτι πάει στραβά, γεγονός που κάνει την πρώτη αποτυχία τη χρήσιμη.
Μια ενεργή μονάδα χωρίς διαδρομή συνήθως σημαίνει ότι το προφίλ συνδέθηκε αλλά ο διακομιστής δεν έσπρωξε καμία διαδρομή, ή ότι η διαδρομή εγκαταστάθηκε σε διεπαφή που εξαφανίστηκε αργότερα. Μια διαδρομή χωρίς λειτουργική αναζήτηση ονομάτων δείχνει στη ρύθμιση DNS και όχι στο ίδιο το τούνελ.
Αποφασίστε εκ των προτέρων τι πρέπει να γίνει όταν το τούνελ δεν μπορεί να σηκωθεί. Η επιστροφή σε απλή συνδεσιμότητα είναι πολιτική και θα πρέπει να γραφτεί, αντί να αφεθεί στον διαχειριστή που ξεκίνησε πρώτος.