Hvorfor GlobalProtect Linux-klienten fejler på nyere Ubuntu
Deb-pakken er fin: nyere Ubuntu-udgivelser droppede Qt5 WebKit, som leverandørens UI stadig linker til. Bekræft afhængigheden, og vælg så openconnect eller en ældre LTS.
Den rimelige antagelse er, at .deb-filen fra din GlobalProtect-portal er ødelagt, eller at leverandøren har sendt et dårligt build. Det er den som regel ikke. Leverandørens Linux-UI linker stadig mod Qt5 WebKit, og de nyere Ubuntu-udgivelser leverer det ikke længere, så pakken beder om et bibliotek, som din distribution med vilje har fjernet. Det er et pakkemismatch, ikke en beskadiget download, og forskellen afgør, om du bruger eftermiddagen på at tvinge pakker eller ti minutter på at vælge en anden klient.
.deb-filen er ikke ødelagt
En afhængighed, som distributionen ikke længere har, er et normalt resultat af, at et bibliotek er pensioneret. Qt5 WebKit blev droppet fra senere Ubuntu-arkiver og fra Debian, og grunden var vedligeholdelse af sikkerhed snarere end manglende efterspørgsel. Når det sker, holder hver pakke, der stadig linker mod det, op med at kunne installeres, uanset hvor godt den blev bygget.
To fejl bliver rapporteret som den samme bug og er det ikke. På en udgivelse uden biblioteket stopper installatøren med en uopfyldt afhængighed. På en udgivelse, hvor klienten installerer og derefter fejler ved login, ser du i stedet et TLS- eller SAML-handshakproblem inde i den indlejrede browserkomponent. Det første er pakning; det andet er runtime, og ingen af dem repareres ved at kopiere gamle biblioteker ind i en moderne desktop.
Bekræft afhængigheden i stedet for at tvinge den
Installer pakken eksplicit, så værktøjet navngiver den uafklarede afhængighed i stedet for at give dig et resumé. Spørg så, om din udgivelse overhovedet har en kandidat, fordi »ikke tilgængelig her« og »midlertidigt manglende fra dette spejl« fører til helt forskellige beslutninger:
sudo apt install ./GlobalProtect_UI_deb-*.deb
apt-cache policy libqt5webkit5
apt-cache rdepends --installed libqt5webkit5
Hvis apt-cache policy ikke melder nogen kandidat, så stop med at prøve at installere den og begynd at vælge et alternativ. Det interessante er ikke det manglende pakkenavn; det er, at leverandørens afhængighedsgraf ikke er flyttet med den distribution, dine brugere kører.
Hvad tvungne gamle pakker gør ved skrivebordet
Det workaround, der cirkulerer, er at hente biblioteket fra en ældre udgivelse. På en aktuel Ubuntu ender det i en Qt5-minorversionkonflikt: de ældre pakker trækker libqt5core5t64 baglæns, og så begynder installerede KDE- og PyQt-pakker at kræve en ABI-version, som det nedgraderede bibliotek ikke længere leverer. Resultatet er en delvis opgradering, der ødelægger urelaterede programmer, hvilket er en meget værre eftermiddag end den, du startede med.
Det resultat er forventeligt og ikke uheld. Qts ABI-forventninger til minorversioner er strenge, og en distribution leverer ét sammenhængende sæt. At blande ét bibliotek fra en anden udgivelse ind er ikke en målrettet rettelse; det er en anden, mindre kontrolleret opgradering.
Det samme råd gælder for runtime-varianten af fejlen. At sænke OpenSSL-sikkerhedsniveauet systembredt for at få en gammel klients handshake til at lykkes ændrer hver TLS-forbindelse på maskinen for at reparere ét program, inklusive pakkehåndteringen, du får brug for, når noget andet går i stykker.
openconnect taler protokollen
OpenConnect implementerer GlobalProtects protokol direkte, og protokolnoterne beskriver både kaldet og opdelingen mellem de to serverinterfaces. Portalen uddeler indstillinger og gatewaylisten; gatewayen afslutter tunnelen:
openconnect --protocol=gp vpn.example.com
openconnect --protocol=gp --authgroup=staff vpn.example.com
Hvis portalen ikke angiver den gateway, du har brug for, --usergroup=gateway eller en URL, der slutter på /gateway springer portaltrinnet over. Når der tilbydes flere gateways, --authgroup=NAME vælger blandt dem. Godkendelse er et brugernavn og en adgangskode, eventuelt med et klientcertifikat, og SAML-gateways virker i praksis via network-manager-openconnect snarere end en håndskrevet kommandolinje.
En gateway med en streng posture-politik kan også kræve en HIP-rapport, før den udleverer en tunnel. OpenConnect kan generere og indsende en, men hvis gatewayen kræver en oversigt, den ikke kan producere, ændrer ingen flag den politik; det er en beslutning på serversiden.
Kontrollér tunnelen, og vid, hvad openconnect ikke retter
Kontrollér, hvad tunnelen faktisk anvendte, i stedet for at stole på succesmeddelelsen. Gatewayen sender routing og konfiguration som XML, og klienten anvender det, så en manglende rute er et konfigurations- eller valgproblem og ikke en klientbug:
ip -4 addr show
ip route
resolvectl status
MTU fortjener sit eget blik. GlobalProtect-konfigurationen rapporterer altid en MTU på nul, så klienten estimerer en ud fra indkapslings-overhead. Store overførsler, der går i stå, mens små anmodninger lykkes, er det klassiske symptom, og midlet er en eksplicit MTU på forbindelsen i stedet for at slå path discovery fra.
IPv6 er igen noget for sig. PAN tilføjede det i GlobalProtect 4.0, og OpenConnects support beskrives som eksperimentel fra version 9.0, så antag ikke, at adressefamilien opfører sig som IPv4, bare fordi tunnelen kom op. Og hvis gatewayen håndhæver et posture-check, som open source-klienten ikke kan opfylde, så kør leverandørklienten på en understøttet LTS-udgivelse, i en virtuel maskine, hvis din arbejdsstation er flyttet videre. Det holder skrivebordet intakt og sætter den gamle afhængighed inden for en grænse, du kan genopbygge.