Ένα προφίλ που δούλευε για χρόνια ξαφνικά αρνείται να ξεκινήσει, και το μήνυμα αναφέρει μια οδηγία που κανείς δεν θυμάται να πρόσθεσε: key-method. Το επόμενο αποτέλεσμα αναζήτησης προτείνει να προσθέσετε key-method 2 για συμβατότητα, που είναι συμβουλή άλλης εποχής. Ο parser που απέρριψε τη γραμμή είναι σύγχρονος και δεν έχει καθόλου τέτοια επιλογή. Η αφαίρεση της γραμμής διορθώνει την εκκίνηση και δεν αλλάζει τίποτα στον τρόπο με τον οποίο οι δύο ομότιμοι προστατεύουν τη συνεδρία.

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

Το σύμπτωμα είναι σφάλμα ανάλυσης, όχι αποτυχία χειραψίας

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

openvpn --config /etc/openvpn/client/office.ovpn --verb 3 --log /tmp/parse.log
grep -n 'Options error' /tmp/parse.log

Αν το μήνυμα αναφέρει την οδηγία, η διάγνωση τελείωσε: το αρχείο περιέχει κάτι που αυτή η έκδοση δεν δέχεται. Αν το μήνυμα αναφέρει αντίθετα μια διαδρομή αρχείου, το πρόβλημα είναι ένα include ή κλειδί που λείπει, που είναι άλλο τμήμα του ίδιου σταδίου εκκίνησης.

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

Οδηγία και μορφή μετάδοσης είναι δύο διαφορετικά πράγματα

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

Γι’ αυτό η επανεισαγωγή ενός παλιού δυαδικού για να «αποκατασταθεί» η μέθοδος 2 είναι η λάθος επισκευή. Δεν αποκαθιστά τίποτα παρά έναν παλαιότερο parser με παλαιότερες προεπιλογές, και σας κοστίζει τις διορθώσεις που ήρθαν μετά. Η ίδια λογική ισχύει για την αποδυνάμωση ενός ελέγχου πιστοποιητικού ή μιας λίστας κρυπτογράφησης με την ελπίδα ότι η σύνδεση θα επιστρέψει.

Ένας χρήσιμος έλεγχος είναι η έκδοση και η αναλυμένη διαμόρφωση, όχι η παρουσία της λέξης στο αρχείο:

openvpn --version | head -n 1
grep -rn 'key-method' /etc/openvpn/ 2>/dev/null

Τι να αφαιρέσετε και από ποιο αρχείο

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

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

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

Ένα απορριφθέν προφίλ και ένας απορριφθείς πελάτης μοιάζουν

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

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

Ερωτήματα συμβατότητας που η γραμμή δεν απάντησε ποτέ

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

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

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

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