Die naheliegende Annahme ist, dass das .deb aus Ihrem GlobalProtect-Portal defekt ist oder der Hersteller einen fehlerhaften Build ausgeliefert hat. Meistens stimmt das nicht. Die Linux-Oberfläche des Herstellers bindet weiterhin gegen Qt5 WebKit, und die neueren Ubuntu-Versionen liefern es nicht mehr mit, also verlangt das Paket eine Bibliothek, die Ihre Distribution bewusst entfernt hat. Das ist eine Paketierungsinkongruenz und kein beschädigter Download, und dieser Unterschied entscheidet, ob Sie den Nachmittag mit erzwungenen Paketen verbringen oder zehn Minuten mit der Wahl eines anderen Clients.

Das .deb ist nicht defekt

Eine Abhängigkeit, die die Distribution nicht mehr führt, ist das normale Ergebnis einer ausgemusterten Bibliothek. Qt5 WebKit wurde aus späteren Ubuntu-Archiven und aus Debian entfernt, und der Grund war die Sicherheitspflege und nicht fehlende Nachfrage. Wenn das passiert, lässt sich jedes Paket, das noch dagegen bindet, nicht mehr installieren, egal wie gut es gebaut wurde.

Zwei Fehlerbilder werden als derselbe Bug gemeldet und sind es nicht. Auf einer Version ohne die Bibliothek bricht der Installer mit einer unerfüllten Abhängigkeit ab. Auf einer Version, auf der der Client installiert und dann beim Login scheitert, sehen Sie stattdessen ein TLS- oder SAML-Handshake-Problem in der eingebetteten Browserkomponente. Das erste ist Paketierung; das zweite ist Laufzeit, und keines von beiden wird repariert, indem man alte Bibliotheken in einen modernen Desktop kopiert.

Die Abhängigkeit bestätigen statt erzwingen

Installieren Sie das Paket explizit, damit das Werkzeug die unaufgelöste Abhängigkeit benennt, statt Ihnen nur eine Zusammenfassung zu geben. Fragen Sie dann, ob Ihre Version überhaupt einen Kandidaten hat, denn „hier nicht verfügbar“ und „vorübergehend in diesem Mirror fehlend“ führen zu völlig unterschiedlichen Entscheidungen:

sudo apt install ./GlobalProtect_UI_deb-*.deb
apt-cache policy libqt5webkit5
apt-cache rdepends --installed libqt5webkit5

Wenn apt-cache policy keinen Kandidaten meldet, hören Sie auf, die Installation zu versuchen, und beginnen Sie, eine Alternative zu wählen. Das Interessante ist nicht der fehlende Paketname; es ist die Tatsache, dass der Abhängigkeitsgraph des Herstellers nicht mit den Distributionen mitgewandert ist, die Ihre Nutzer fahren.

Was erzwungene alte Pakete mit dem Desktop machen

Der Workaround, der die Runde macht, besteht darin, die Bibliothek aus einer älteren Version zu ziehen. Auf einem aktuellen Ubuntu läuft das in einen Qt5-Minor-Versionskonflikt: die älteren Pakete ziehen libqt5core5t64 rückwärts, und dann beginnen installierte KDE- und PyQt-Pakete, eine ABI-Version zu verlangen, die die herabgestufte Bibliothek nicht mehr bereitstellt. Das Ergebnis ist ein Teil-Upgrade, das unabhängige Anwendungen zerstört, also ein deutlich schlechterer Nachmittag als der, mit dem Sie angefangen haben.

Dieses Ergebnis ist zu erwarten und nicht Pech. Die ABI-Erwartungen von Qt an Minor-Versionen sind streng, und eine Distribution liefert einen zusammenhängenden Satz. Eine Bibliothek aus einer anderen Version einzumischen ist keine gezielte Korrektur; es ist ein zweites, schlechter kontrolliertes Upgrade.

Derselbe Rat gilt für die Laufzeitvariante des Fehlers. Die systemweite OpenSSL-Sicherheitsstufe zu senken, damit der Handshake eines alten Clients gelingt, ändert jede TLS-Verbindung auf der Maschine, um eine Anwendung zu reparieren, einschließlich des Paketmanagers, den Sie brauchen, wenn sonst etwas kaputtgeht.

openconnect spricht das Protokoll

OpenConnect implementiert das Protokoll von GlobalProtect direkt, und die Protokollnotizen beschreiben sowohl den Aufruf als auch die Aufteilung zwischen den beiden Serverschnittstellen. Das Portal verteilt Einstellungen und die Gateway-Liste; das Gateway beendet den Tunnel:

openconnect --protocol=gp vpn.example.com
openconnect --protocol=gp --authgroup=staff vpn.example.com

Wenn das Portal das Gateway nicht enthält, das Sie brauchen, --usergroup=gateway oder eine URL, die auf /gateway endet, überspringt den Portal-Schritt. Wenn mehrere Gateways angeboten werden, --authgroup=NAME wählt daraus aus. Die Authentifizierung besteht aus Benutzername und Passwort, optional mit einem Client-Zertifikat, und SAML-Gateways funktionieren in der Praxis über network-manager-openconnect und nicht über eine von Hand getippte Kommandozeile.

Ein Gateway mit einer strengen Posture-Richtlinie kann außerdem einen HIP-Bericht verlangen, bevor es einen Tunnel aushändigt. OpenConnect kann einen erzeugen und einreichen, aber wenn das Gateway eine Bestandsaufnahme verlangt, die es nicht erzeugen kann, ändert kein Flag diese Richtlinie; das ist eine Entscheidung auf der Serverseite.

Den Tunnel prüfen und wissen, was openconnect nicht repariert

Prüfen Sie, was der Tunnel tatsächlich angewendet hat, statt der Erfolgsmeldung zu vertrauen. Das Gateway sendet Routing und Konfiguration als XML und der Client wendet sie an, eine fehlende Route ist also ein Konfigurations- oder Auswahlproblem und kein Client-Bug:

ip -4 addr show
ip route
resolvectl status

MTU verdient einen eigenen Blick. Die GlobalProtect-Konfiguration meldet immer eine MTU von null, also schätzt der Client eine aus dem Verkapselungs-Overhead. Große Übertragungen, die stocken, während kleine Anfragen durchgehen, sind das klassische Symptom, und das Mittel ist eine explizite MTU auf der Verbindung statt das Abschalten der Pfaderkennung.

IPv6 ist noch einmal etwas anderes. PAN hat es in GlobalProtect 4.0 ergänzt, und OpenConnects Unterstützung wird ab Version 9.0 als experimentell beschrieben, gehen Sie also nicht davon aus, dass sich die Adressfamilie wie IPv4 verhält, nur weil der Tunnel hochkam. Und wenn das Gateway eine Posture-Prüfung erzwingt, die der Open-Source-Client nicht erfüllen kann, betreiben Sie den Hersteller-Client auf einer unterstützten LTS-Version, in einer virtuellen Maschine, wenn Ihr Arbeitsplatz weitergezogen ist. Das hält den Desktop intakt und packt die Altlast in eine Grenze, die Sie neu bauen können.

Ähnliche Artikel