Γιατί ο πελάτης Linux του GlobalProtect αποτυγχάνει σε νεότερα Ubuntu
Το .deb είναι εντάξει: οι νεότερες εκδόσεις Ubuntu αφαίρεσαν το Qt5 WebKit, με το οποίο συνδέεται ακόμη η διεπαφή του κατασκευαστή. Επιβεβαιώστε την εξάρτηση και μετά διαλέξτε openconnect ή ένα παλαιότερο LTS.
Η λογική υπόθεση είναι ότι το .deb από την πύλη σας GlobalProtect είναι χαλασμένο ή ότι ο κατασκευαστής έδωσε μια κακή έκδοση. Συνήθως δεν είναι. Η διεπαφή Linux του κατασκευαστή συνδέεται ακόμη με το Qt5 WebKit, και οι νεότερες εκδόσεις Ubuntu δεν το παρέχουν πλέον, οπότε το πακέτο ζητά μια βιβλιοθήκη που η διανομή σας αφαίρεσε σκόπιμα. Αυτή είναι αναντιστοιχία συσκευασίας, όχι χαλασμένη λήψη, και αυτή η διαφορά καθορίζει αν θα περάσετε το απόγευμα επιβάλλοντας πακέτα ή δέκα λεπτά διαλέγοντας άλλον πελάτη.
Το .deb δεν είναι χαλασμένο
Μια εξάρτηση που η διανομή δεν φέρνει πλέον είναι φυσιολογικό αποτέλεσμα της απόσυρσης μιας βιβλιοθήκης. Το Qt5 WebKit αφαιρέθηκε από μεταγενέστερα αρχεία Ubuntu και από το Debian, και ο λόγος ήταν η συντήρηση ασφάλειας και όχι η έλλειψη ζήτησης. Όταν συμβεί αυτό, κάθε πακέτο που συνδέεται ακόμη μαζί της παύει να είναι εγκαταστάσιμο, όσο καλά κι αν χτίστηκε.
Δύο αστοχίες αναφέρονται ως το ίδιο σφάλμα και δεν είναι. Σε έκδοση χωρίς τη βιβλιοθήκη, ο εγκαταστάτης σταματά με ανικανοποίητη εξάρτηση. Σε έκδοση όπου ο πελάτης εγκαθίσταται και μετά αποτυγχάνει στη σύνδεση, βλέπετε πρόβλημα χειραψίας TLS ή SAML μέσα στο ενσωματωμένο συστατικό περιηγητή. Το πρώτο είναι συσκευασία· το δεύτερο είναι χρόνος εκτέλεσης, και κανένα από τα δύο δεν διορθώνεται αντιγράφοντας παλιές βιβλιοθήκες σε μια σύγχρονη επιφάνεια εργασίας.
Επιβεβαιώστε την εξάρτηση αντί να την επιβάλετε
Εγκαταστήστε το πακέτο ρητά ώστε το εργαλείο να ονομάσει την άλυτη εξάρτηση αντί να σας δώσει μια σύνοψη. Μετά ρωτήστε αν η έκδοσή σας έχει καθόλου υποψήφιο, γιατί το «δεν είναι διαθέσιμο εδώ» και το «λείπει προσωρινά από αυτόν τον καθρέφτη» οδηγούν σε εντελώς διαφορετικές αποφάσεις:
sudo apt install ./GlobalProtect_UI_deb-*.deb
apt-cache policy libqt5webkit5
apt-cache rdepends --installed libqt5webkit5
Αν apt-cache policy δεν αναφέρει κανέναν υποψήφιο, σταματήστε να προσπαθείτε να το εγκαταστήσετε και αρχίστε να διαλέγετε εναλλακτική. Το ενδιαφέρον δεν είναι το όνομα του πακέτου που λείπει· είναι το γεγονός ότι το γράφημα εξαρτήσεων του κατασκευαστή δεν έχει κινηθεί μαζί με τις διανομές που τρέχουν οι χρήστες σας.
Τι κάνει στην επιφάνεια εργασίας η επιβολή παλιών πακέτων
Η λύση που κυκλοφορεί είναι να τραβήξετε τη βιβλιοθήκη από παλαιότερη έκδοση. Σε ένα τρέχον Ubuntu αυτό καταλήγει σε σύγκρουση δευτερεύουσας έκδοσης του Qt5: τα παλαιότερα πακέτα τραβούν libqt5core5t64 προς τα πίσω, και τότε τα εγκατεστημένα πακέτα KDE και PyQt αρχίζουν να απαιτούν μια έκδοση ABI που η υποβαθμισμένη βιβλιοθήκη δεν παρέχει πλέον. Το αποτέλεσμα είναι μερική αναβάθμιση που σπάει άσχετες εφαρμογές, κάτι που είναι ένα απόγευμα πολύ χειρότερο από εκείνο με το οποίο ξεκινήσατε.
Αυτό το αποτέλεσμα είναι αναμενόμενο και όχι ατυχία. Οι προσδοκίες ABI του Qt για δευτερεύουσες εκδόσεις είναι αυστηρές, και μια διανομή παραδίδει ένα συνεκτικό σύνολο. Το να αναμείξετε μια βιβλιοθήκη από άλλη έκδοση δεν είναι στοχευμένη διόρθωση· είναι μια δεύτερη, λιγότερο ελεγχόμενη αναβάθμιση.
Η ίδια συμβουλή ισχύει για την παραλλαγή της αστοχίας κατά τον χρόνο εκτέλεσης. Το να χαμηλώσετε το επίπεδο ασφάλειας του OpenSSL σε όλο το σύστημα ώστε να πετύχει η χειραψία ενός παλιού πελάτη αλλάζει κάθε σύνδεση TLS στο μηχάνημα για να διορθωθεί μία εφαρμογή, μαζί με τον διαχειριστή πακέτων που θα χρειαστείτε όταν κάτι άλλο χαλάσει.
openconnect μιλά το πρωτόκολλο
Το OpenConnect υλοποιεί απευθείας το πρωτόκολλο του GlobalProtect, και οι σημειώσεις πρωτοκόλλου περιγράφουν και την κλήση και τον διαχωρισμό ανάμεσα στις δύο διασυνδέσεις διακομιστή. Η πύλη μοιράζει τις ρυθμίσεις και τη λίστα gateway· το gateway τερματίζει το τούνελ:
openconnect --protocol=gp vpn.example.com
openconnect --protocol=gp --authgroup=staff vpn.example.com
Αν η πύλη παραλείπει το gateway που χρειάζεστε, --usergroup=gateway ή η διεύθυνση URL που τελειώνει με /gateway παρακάμπτει το βήμα της πύλης. Όταν προσφέρονται πολλά gateway, --authgroup=NAME διαλέγει ανάμεσά τους. Η πιστοποίηση είναι όνομα χρήστη και κωδικός, προαιρετικά με πιστοποιητικό πελάτη, και τα gateway SAML δουλεύουν στην πράξη μέσω network-manager-openconnect και όχι με χειροκίνητη γραμμή εντολών.
Ένα gateway με αυστηρή πολιτική posture μπορεί επίσης να απαιτεί αναφορά HIP πριν δώσει τούνελ. Το OpenConnect μπορεί να παράγει και να υποβάλει μία, αλλά αν το gateway απαιτεί απογραφή που δεν μπορεί να παραγάγει, καμία σημαία δεν αλλάζει αυτή την πολιτική· είναι απόφαση στην πλευρά του διακομιστή.
Επαληθεύστε το τούνελ και μάθετε τι δεν θα διορθώσει το openconnect
Ελέγξτε τι εφάρμοσε πραγματικά το τούνελ αντί να εμπιστευτείτε το μήνυμα επιτυχίας. Το gateway στέλνει δρομολόγηση και διαμόρφωση ως XML και ο πελάτης τα εφαρμόζει, οπότε μια διαδρομή που λείπει είναι πρόβλημα διαμόρφωσης ή επιλογής και όχι σφάλμα του πελάτη:
ip -4 addr show
ip route
resolvectl status
Το MTU αξίζει ξεχωριστή ματιά. Η διαμόρφωση του GlobalProtect αναφέρει πάντα MTU μηδέν, οπότε ο πελάτης το εκτιμά από το κόστος ενθυλάκωσης. Μεγάλες μεταφορές που κολλάνε ενώ μικρά αιτήματα περνούν είναι το κλασικό σύμπτωμα, και το φάρμακο είναι ρητό MTU στη σύνδεση και όχι απενεργοποίηση της ανακάλυψης διαδρομής.
Το IPv6 είναι πάλι ξεχωριστή ιστορία. Η PAN το πρόσθεσε στο GlobalProtect 4.0, και η υποστήριξη του OpenConnect περιγράφεται ως πειραματική από την έκδοση 9.0, οπότε μην υποθέσετε ότι η οικογένεια διευθύνσεων συμπεριφέρεται σαν IPv4 μόνο επειδή σηκώθηκε το τούνελ. Και αν το gateway επιβάλλει έλεγχο posture που ο πελάτης ανοιχτού κώδικα δεν μπορεί να ικανοποιήσει, τρέξτε τον πελάτη του κατασκευαστή σε υποστηριζόμενη έκδοση LTS, σε εικονικό μηχάνημα αν ο σταθμός εργασίας σας έχει προχωρήσει. Αυτό κρατά την επιφάνεια εργασίας άθικτη και βάζει την παλιά εξάρτηση μέσα σε ένα όριο που μπορείτε να ξαναχτίσετε.