Η εισαγωγή στο NetworkManager αποτυγχάνει με αρχεία OpenVPN και WireGuard
Συνήθως σπάει ο αναλυτής, όχι το προφίλ. Ελέγξτε το πρόσθετο, διαβάστε τη σύνδεση που εισήχθη, διορθώστε τις σημαίες secret και τις διαδρομές και μετά δοκιμάστε επανεκκίνηση.
Επέλεξα Εισαγωγή από αρχείο… στις Ρυθμίσεις του GNOME, επέλεξα ένα προφίλ που λειτουργεί με τον πελάτη του παρόχου, και το παράθυρο διαλόγου έκλεισε χωρίς να προσθέσει τίποτα στη λίστα. Σε δεύτερο φορητό υπολογιστή η εισαγωγή ολοκληρώθηκε, η σύνδεση εμφανίστηκε με το όνομα του προφίλ και στη συνέχεια απέτυχε στο πρώτο αίτημα ελέγχου ταυτότητας. Το NetworkManager δεν εκτελεί ποτέ το αρχείο .ovpn ή wg-quick σας ως έχει. Το παραδίδει σε έναν αναλυτή, ο αναλυτής το μετατρέπει στη δική του μορφή σύνδεσης του NetworkManager και από εκεί και πέρα η σήραγγα χτίζεται από αυτό το αναλυμένο αντικείμενο — μυστικά, διαδρομές, DNS και όλα τα υπόλοιπα. Το χρήσιμο ερώτημα λοιπόν δεν είναι γιατί το αρχείο είναι χαλασμένο, αλλά αν έγινε η ανάλυση και τι διατήρησε.
Τι κάνει στην πραγματικότητα η εισαγωγή με το αρχείο
Για το OpenVPN, ο αναλυτής ζει στο πακέτο του πρόσθετου, και η σύνδεση που δημιουργεί δείχνει σε μια υπηρεσία D-Bus όπως το org.freedesktop.NetworkManager.openvpn. Χωρίς πρόσθετο δεν υπάρχει αναλυτής: ο τύπος είναι άγνωστος στο nmcli, και η γραφική λίστα προσθήκης VPN μπορεί να μην εμφανίζει καθόλου καταχώριση εισαγωγής. Το WireGuard διαφέρει σε ένα σημαντικό σημείο — το NetworkManager έχει δικές του ρυθμίσεις WireGuard από τη σειρά 1.30, άρα δεν υπάρχει ξεχωριστό πακέτο πρόσθετου, αλλά ο αναγνώστης wg-quick υπάρχει μόνο σε εκδόσεις που τον παρέχουν.
Όπως και να έχει, το αρχείο διαβάζεται μία φορά. Το αποτέλεσμα γράφεται ως keyfile στο /etc/NetworkManager/system-connections/, με το όνομα της σύνδεσης, ιδιοκτησία του root και μη αναγνώσιμο από άλλους χρήστες επειδή περιέχει το υλικό κλειδιών. Αυτό το keyfile είναι πλέον η σύνδεση· η επεξεργασία του αρχικού .ovpn αργότερα δεν αλλάζει τίποτα.
Τρία συμπτώματα ανήκουν σε τρία διαφορετικά στάδια. Καμία καταχώριση εισαγωγής ή άγνωστος τύπος σημαίνει ότι λείπει το πρόσθετο ή η έκδοση. Ένα σφάλμα εισαγωγής που ονομάζει μια οδηγία σημαίνει ότι ο αναλυτής διάβασε το αρχείο και απέρριψε μέρος του. Μια σύνδεση που υπάρχει αλλά δεν ενεργοποιείται ποτέ σημαίνει ότι το αναλυμένο αντικείμενο είναι ελλιπές ή ότι ο διακομιστής την απορρίπτει. Αποφασίστε ποια από τις τρεις περιπτώσεις έχετε πριν επεξεργαστείτε οτιδήποτε.
Επιβεβαιώστε το πρόσθετο πριν αποσφαλματώσετε το προφίλ
Ένα πρόσθετο που λείπει μοιάζει ακριβώς με κατεστραμμένο προφίλ, οπότε ελέγξτε πρώτα το πακέτο. Στο Debian και το Ubuntu η υποστήριξη OpenVPN παρέχεται ως network-manager-openvpn συν ένα βοηθητικό πρόγραμμα επιφάνειας εργασίας· στο Fedora τα πακέτα είναι NetworkManager-openvpn και NetworkManager-openvpn-gnome· στο Arch είναι networkmanager-openvpn.
dpkg -l network-manager-openvpn-gnome | tail -n 2 rpm -q NetworkManager-openvpn pacman -Q networkmanager-openvpn
Στη συνέχεια εισαγάγετε από απόλυτη διαδρομή: nmcli connection import type openvpn file /home/you/profile.ovpn. Οι σχετικές διαδρομές συνήθως λειτουργούν, αλλά ένα κέλυφος που άλλαξε κατάλογο μετατρέπει μια γρήγορη εισαγωγή σε παράκαμψη. Για το WireGuard, ελέγξτε το nmcli --version και βεβαιωθείτε ότι η πλευρά του πυρήνα υπάρχει με το modprobe wireguard· μια εισαγωγή που πετυχαίνει σε μηχάνημα χωρίς το module σας αφήνει με μια σύνδεση της οποίας η συσκευή δεν εμφανίζεται ποτέ. Η αναφορά του nmcli τεκμηριώνει την υποεντολή import και τα αποδεκτά ονόματα τύπων. Αν το type wireguard απορρίπτεται ευθέως, η έκδοση είναι παλαιότερη από τη λειτουργία, και το σωστό βήμα είναι ένα πακέτο διανομής ή backport — όχι η αντιγραφή της διαμόρφωσης σε έναν αυθαίρετο κατάλογο ελπίζοντας ότι κάτι θα τη διαβάσει.
Διαβάστε τη σύνδεση OpenVPN, όχι το .ovpn
Μόλις υπάρξει η σύνδεση, διαβάστε τις αναλυμένες ρυθμίσεις αντί να ξαναδιαβάσετε το αρχείο: nmcli connection show "Work VPN" | grep -E '^vpn\.'. Θέλετε το remote και τη θύρα, το transport, το υλικό ταυτότητας — ca, cert, key, tls-auth ή tls-crypt — και τη μέθοδο ελέγχου ταυτότητας. Σε προφίλ με κωδικό ιδιωτικού κλειδιού, προσθέστε το sudo nmcli --show-secrets connection show "Work VPN" και κοιτάξτε τις σημαίες secret: το 0 είναι none, άρα το μυστικό βρίσκεται στο keyfile· το 1 είναι agent-owned· το 2 είναι not-saved, δηλαδή δεν γράφεται ποτέ στο keyfile· το 4 είναι not-required, δηλαδή δεν χρειάζεται καθόλου μυστικό. Είναι bits, όχι κλίμακα, άρα το 3 είναι απλώς agent-owned συν not-saved. Ένα μυστικό που σας ρωτά μία φορά ανά συνεδρία είναι agent-owned (1), με τον agent να το ζητά· δεν υπάρχει ξεχωριστός αριθμός σημαίας για αυτό. Η ασυμφωνία σημαιών είναι ο συνήθης λόγος που ένα προφίλ συνδέεται από το applet της επιφάνειας εργασίας και αποτυγχάνει από σενάριο ή κατά την εκκίνηση.
Ο γρηγορότερος τρόπος να δείτε τι πέταξε ο αναλυτής είναι να ζητήσετε από το πρόσθετο να ξαναγράψει το αρχείο και μετά να το συγκρίνετε: nmcli connection export "Work VPN" /tmp/roundtrip.ovpn. Οι οδηγίες που εξαφανίζονται σε αυτή τη σύγκριση δεν θα υπάρχουν κατά τη σύνδεση. Τα hooks είναι οι συνήθεις ύποπτοι — τα script-security, up, down και route-up περιμένουν σενάριο που εκτελείται με αυξημένα δικαιώματα και σκόπιμα δεν μεταφέρονται. Μην μειώσετε την επαλήθευση και μη δώσετε επιπλέον προνόμια για να πετύχει μια εισαγωγή· μια μη υποστηριζόμενη επιλογή συνήθως αντανακλά το σύνολο λειτουργιών του πρόσθετου και όχι έναν μη προσβάσιμο διακομιστή. Μετακινήστε αυτή τη συμπεριφορά σε σενάριο dispatcher του NetworkManager ή σε πολιτική από την πλευρά του διακομιστή.
Επιβεβαιώστε επίσης ότι τα πεδία ταυτότητας επέζησαν: η αναφορά CA, το remote-cert-tls και οποιοσδήποτε έλεγχος ονόματος στο οποίο βασιζόταν το προφίλ. Μια σύνδεση που ανεβαίνει χωρίς αυτά μπορεί να μιλά με ό,τι απαντά σε αυτή τη διεύθυνση.
Διαβάστε τη σύνδεση WireGuard, όχι το αρχείο wg-quick
Ένα αρχείο wg-quick είναι μορφή με σημασιολογία κελύφους· η εισαγμένη σύνδεση είναι σύνολο ρυθμίσεων. Το PrivateKey γίνεται το ιδιωτικό κλειδί της διεπαφής, το Address γίνεται μία ή περισσότερες διευθύνσεις IPv4 και IPv6, το DNS αντιστοιχίζεται στις ιδιότητες resolver του NetworkManager, το MTU αντιστοιχίζεται στο wireguard.mtu (η δική του προεπιλογή του wg-quick είναι 1420), και κάθε μπλοκ peer γίνεται καταχώριση peer με δημόσιο κλειδί, endpoint, επιτρεπόμενες IP και persistent keepalive. Εκτυπώστε τι αποθηκεύτηκε με το nmcli --show-secrets connection show wg0· αν η λίστα peer δεν εμφανίζεται σε αυτή την έξοδο, διαβάστε το keyfile:
sudo sed -n '/^\[wireguard\]/,/^\[/p' /etc/NetworkManager/system-connections/wg0.nmconnection
Αυτό που δεν επιβιώνει είναι το μισό κέλυφος του wg-quick. Τα PreUp, PostUp, PreDown, PostDown και Table είναι συμπεριφορά εκείνου του εργαλείου, όχι χαρακτηριστικά μιας διεπαφής WireGuard, άρα τίποτα δεν τα εκτελεί μετά από μια εισαγωγή. Αν το αρχικό χρησιμοποιούσε Table = off για να αφήσει ήσυχη την προεπιλεγμένη διαδρομή, οι πρόσφατες εκδόσεις του NetworkManager εκθέτουν τα ip4-auto-default-route και ip6-auto-default-route για τον ίδιο σκοπό· ορίστε τα ρητά αντί να υποθέσετε ότι η σύνδεση συμπεριφέρεται όπως το σενάριο. Ένα hook που έσπρωχνε προσαρμοσμένη διαδρομή χρειάζεται αυτή τη διαδρομή στις ρυθμίσεις δρομολόγησης της σύνδεσης, αλλιώς απλώς θα λείπει.
Δώστε στη σύνδεση ακριβώς έναν ιδιοκτήτη
Η κλασική επακόλουθη αποτυχία είναι μια σύνδεση που λειτουργεί μέχρι την επόμενη εκκίνηση και μετά μπαίνει σε βρόχο. Συνήθως το [email protected] ήταν ακόμη ενεργό από προηγούμενο πείραμα, ή ένας πελάτης του παρόχου ξεκινούσε τον δικό του daemon, και δύο ιδιοκτήτες έγραφαν διαδρομές και DNS για τον ίδιο προορισμό. Το NetworkManager ορίζει τον resolver με τη δική του διαδρομή, το wg-quick γράφει μέσω του resolvconf, και κερδίζει ο τελευταίος που γράφει — άρα η επίλυση ονομάτων λειτουργεί, μετά σταματά, μετά λειτουργεί ξανά. Ελέγξτε τα systemctl status wg-quick@wg0, nmcli connection show --active και ip link show type wireguard, και μετά απενεργοποιήστε τον δεύτερο ιδιοκτήτη αντί να ρυθμίζετε το metric του.
Αν χρειάζεστε πραγματικά και τα δύο, δώστε τους ξεχωριστές διεπαφές και ασύνδετες επιτρεπόμενες IP, και αφήστε ακριβώς ένα από αυτά να εγκαταστήσει την προεπιλεγμένη διαδρομή. Δύο προεπιλεγμένες διαδρομές με διαφορετικά metrics δεν είναι split tunnel· είναι ένας αγώνας που κρίνεται από την υπηρεσία που ξεκινά δεύτερη. Και μετά από επανασύνδεση, επιθεωρήστε ξανά την εφαρμοσμένη κατάσταση — μια μεμονωμένη χειροκίνητη αλλαγή του resolver που κάνει τα πράγματα να λειτουργούν δεν αποδεικνύει ότι η εισαγωγή είναι πλήρης.
Επαληθεύστε με κίνηση και επιβιώστε από επανεκκίνηση
Ανεβάστε τη σύνδεση με το nmcli connection up "Work VPN", και μετά διαβάστε κατάσταση, διεύθυνση και διαδρομές αντί να εμπιστευτείτε το εικονίδιο: nmcli device show wg0 | grep -E 'GENERAL.STATE|IP4.ADDRESS|IP4.ROUTE', ip route show default, και μια πραγματική αναζήτηση ενός ονόματος που επιλύεται μόνο μέσα στη σήραγγα. Ένα handshake ή ένα επιτυχές ping αποδεικνύει μόνο ότι η κρυπτογράφηση λειτουργεί· δεν λέει τίποτα για την προώθηση, τα προθέματα split tunnel ή το ιδιωτικό DNS, που είναι τα μέρη που συνήθως σπάνε.
Στη συνέχεια επανεκκινήστε και επαναλάβετε. Η συμπεριφορά autoconnect, μια μετονομασμένη διεπαφή και ένα πρόσθετο που φορτώνεται μετά τη συσκευή είναι όλα αστοχίες που βλέπετε μόνο σε καθαρή εκκίνηση. Το journalctl -u NetworkManager -b --no-pager | tail -n 40 δείχνει τι έκανε ο daemon με αυτή τη σύνδεση σε αυτή την εκκίνηση. Για δεύτερο υπολογιστή, αντιγράψτε το keyfile και κρατήστε το ιδιοκτησία του root με mode 600, ή χρησιμοποιήστε το nmcli connection export για OpenVPN και εισαγάγετε ξανά το προκύπτον .ovpn — η διαδρομή εξαγωγής δεν έχει αντίστοιχο για WireGuard, άρα αυτή η κατεύθυνση είναι αντιγραφή αρχείου ή νέα εισαγωγή από το προστατευμένο πρωτότυπο.
Σύντομη εκδοχή, με σειρά: επιβεβαιώστε το πρόσθετο ή την έκδοση του NetworkManager, εισαγάγετε από απόλυτη διαδρομή, διαβάστε τις αναλυμένες ρυθμίσεις μαζί με τις σημαίες secret, συγκρίνετε την εξαγωγή OpenVPN με το πρωτότυπο, ελέγξτε hooks και διαδρομές στην πλευρά του WireGuard, απενεργοποιήστε κάθε δεύτερο ιδιοκτήτη, και μετά από επανεκκίνηση επαληθεύστε μια αναζήτηση ονόματος και τον πίνακα δρομολόγησης. Όταν μια σύνδεση περάσει όλα αυτά, το αρχείο προφίλ που την ξεκίνησε μπορεί να επιστρέψει στην προστατευμένη αποθήκευση.