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

Δύο προγράμματα, δύο ευθύνες

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

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

Εντοπίστε τον βοηθό που χρησιμοποιεί ο πελάτης που τρέχει

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

openconnect --version
ps -o args= -C openconnect
dpkg -L openconnect | grep -i script
ls -l /etc/vpnc/ 2>/dev/null

Αν η γραμμή της διεργασίας φέρει όρισμα --script , αυτό το αρχείο υπερισχύει της μεταγλωττισμένης προεπιλογής. Παλαιότερες διαδρομές όπως /etc/vpnc/vpnc-script μπορεί να υπάρχουν και να μένουν αχρησιμοποίητες, γι' αυτό η διαγραφή ή η επεξεργασία τους δεν αλλάζει τίποτα σε πρόσφατη έκδοση. Ελέγξτε και την ημερομηνία τροποποίησης, γιατί ένας βοηθός που δεν τον άγγιξε κανείς για χρόνια είναι ισχυρή ένδειξη ότι τη δουλειά την κάνει η προεπιλογή του πακέτου.

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

Διαβάστε την πρώτη αποτυχημένη λειτουργία, όχι την τελευταία προειδοποίηση

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

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

Επαληθεύστε σύνδεση, επανασύνδεση και αποσύνδεση

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

ip -brief address show tun0
ip route get 10.24.8.15
resolvectl status tun0
journalctl -u NetworkManager -b --no-pager | grep -i -E 'vpnc|script'

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

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

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