Ένα προφίλ OpenVPN που λειτουργεί αλλού αναφέρει ότι το AES-256-GCM δεν βρίσκεται ή ότι οι κόμβοι δεν μοιράζονται κοινό κρυπτογράφημα, και η πρώτη παρόρμηση είναι να επεξεργαστείτε το προφίλ. Αυτά τα δύο μηνύματα περιγράφουν διαφορετικές αστοχίες. Το ένα λέει ότι το τοπικό πρόγραμμα δεν έχει αυτόν τον αλγόριθμο· το άλλο ότι και οι δύο πλευρές έχουν αλγορίθμους αλλά όχι κοινή επιλογή. Η επεξεργασία του προφίλ δεν διορθώνει κανένα από τα δύο μέχρι να ξέρετε ποιο έχετε.

Διαβάστε το ακριβές κείμενο του σφάλματος και το πρόγραμμα που το παρήγαγε.

Αποφασίστε ποιο σφάλμα έχετε

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

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

Κενό τοπικής δυνατότητας

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

openvpn --version
openvpn --show-ciphers | grep -i gcm
openvpn --show-tls | head -5

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

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

Κενό διαπραγμάτευσης

Όταν και οι δύο κόμβοι απαριθμούν τον αλγόριθμο, το ερώτημα που μένει είναι ποια λίστα προσφέρει κάθε πλευρά. Το OpenVPN της κοινότητας μετονόμασε την οδηγία διαπραγμάτευσης: το ncp-ciphers στο 2.4 έγινε data-ciphers στο 2.5, και στο 2.6 η παλιότερη γραμμή cipher εξυπηρετεί κυρίως συμβατότητα και εφεδρική λειτουργία παρά τον καθορισμό του διαπραγματευμένου συνόλου.

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

openvpn --version | head -2
grep -n -E '^(data-ciphers|ncp-ciphers|cipher|tls-cipher)' server.conf client.ovpn

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

Κρατήστε τη συμβατότητα ρητή

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

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

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

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