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

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

Ξεκινήστε από τον διάλογο, αλλά μην εμπιστεύεστε το πεδίο

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

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

Αν το κλειδί προέρχεται από σύστημα δελτίων που σπάει τις μεγάλες γραμμές, ζητήστε το από κανάλι που δεν τις σπάει. Συγκρίνετε τα μήκη με τον διαχειριστή αντί να κοιτάτε δύο συμβολοσειρές δίπλα δίπλα· ένας χαμένος χαρακτήρας στο σημείο αλλαγής γραμμής είναι αόρατος σε αναλογική γραμματοσειρά.

Ακολουθήστε το κλειδί μέσα στο /etc/ipsec.d

Το πρόσθετο δεν δίνει ποτέ το PSK στον δαίμονα IPsec ως όρισμα σε γραμμή εντολών. Αντίθετα αποθηκεύει την τιμή σε αρχείο μυστικών και φροντίζει ο δαίμονας να το συμπεριλάβει, προσθέτοντας γραμμή include στο /etc/ipsec.secrets αν δεν υπάρχει. Αυτό που κρατά ο διάλογος είναι είσοδος για το παραγόμενο αρχείο, όχι η τιμή που χρησιμοποιείται.

Καταγράψτε τι υπάρχει πριν αλλάξετε οτιδήποτε:

ipsec --version
sudo ls -l /etc/ipsec.d/*.secrets /etc/ipsec.d/ipsec.nm-l2tp.secrets 2>/dev/null
sudo grep -n "include" /etc/ipsec.secrets

Οι παλαιότερες εκδόσεις του πρόσθετου έγραφαν ένα αρχείο ανά σύνδεση, ονομασμένο με το UUID της σύνδεσης, για παράδειγμα /etc/ipsec.d/nm-l2tp-ipsec-<uuid>.secrets. Η διαγραφή προφίλ στην εφαρμογή δεν διαγράφει αξιόπιστα αυτό το αρχείο. Αν ένα παλιό αρχείο από προηγούμενο διακομιστή είναι ακόμη στον δίσκο και εξακολουθεί να συμπεριλαμβάνεται, ο δαίμονας μπορεί να επιλέξει μυστικό που ανήκει σε προφίλ που δεν χρησιμοποιείτε πια, και η σύνδεση αποτυγχάνει ενώ το ορατό πεδίο είναι σωστό.

Κατανοήστε τι έκανε η αλλαγή 1.2.12 στις αναβαθμίσεις

Η έκδοση 1.2.12 του πρόσθετου αντικατέστησε τα αρχεία μυστικών ανά σύνδεση με ένα κοινό αρχείο, /etc/ipsec.d/ipsec.nm-l2tp.secrets. Η αναβάθμιση δεν καθαρίζει τα παλαιότερα αρχεία ανά UUID, και μια υπάρχουσα γραμμή include /etc/ipsec.d/*.secrets τα συμπεριλαμβάνει ακόμη. Η έκδοση 1.2.16 άλλαξε τον χειρισμό των προεπιλεγμένων προτάσεων, όχι τη διάταξη των μυστικών.

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

Διαχωρίστε τους χαρακτήρες που δεν χωρά η μορφή αποθήκευσης

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

Από την 1.2.12 η αποθηκευμένη τιμή δεν είναι απλό κείμενο. Το πρόσθετο κωδικοποιεί το PSK σε base64 πριν φτάσει στο αρχείο, και οι σημειώσεις έκδοσης παρουσιάζουν αυτή την κωδικοποίηση ως τον λόγο που ένα διπλό εισαγωγικό είναι πλέον αποδεκτό σε κλειδί. Ένα εισαγωγικό που πληκτρολογείται στο πεδίο είναι επομένως αναπαραστάσιμο· το ίδιο δεν ισχύει για κάθε χαρακτήρα ελέγχου.

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

Διαβάστε ποιο επίπεδο ελέγχου ταυτότητας απέτυχε

Εκτελέστε πρώτα το ipsec --version, γιατί το strongSwan και το Libreswan χρησιμοποιούν διαφορετικά ονόματα αρχείων και σύνταξη, και μια συμβουλή για το ένα μπορεί να βλάψει το άλλο. Μετά διαβάστε το στάδιο αποτυχίας από το μήνυμα του πελάτη ή το αρχείο καταγραφής του δαίμονα: ένα παράπονο για το προκοινόχρηστο κλειδί είναι διαφορετικό γεγονός από ένα απορριφθέν όνομα χρήστη και κωδικό.

Το PSK επικυρώνει τα άκρα της σήραγγας. Το όνομα χρήστη και ο κωδικός επικυρώνουν το πρόσωπο μέσα στο L2TP, και το PPP ασχολείται μαζί τους αφού σηκωθεί ο συσχετισμός IPsec. Ένα σωστό PSK με λάθος λογαριασμό αποτυγχάνει ακόμη, και η αλλαγή λογαριασμού δεν θα επισκευάσει κλειδί που ο δαίμονας δεν διάβασε ποτέ σωστά.

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

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