Proč klientský program GlobalProtect pro Linux selhává na novějších Ubuntu
Balíček .deb je v pořádku: novější vydání Ubuntu odstranila Qt5 WebKit, na který se rozhraní výrobce stále odkazuje. Ověřte závislost a pak zvolte openconnect nebo starší LTS.
Rozumný předpoklad je, že .deb z vašeho portálu GlobalProtect je rozbitý nebo že výrobce vydal vadný build. Většinou tomu tak není. Linuxové rozhraní výrobce se stále linkuje proti Qt5 WebKit a novější vydání Ubuntu ho už nedodávají, takže balíček žádá knihovnu, kterou vaše distribuce záměrně odstranila. To je nesoulad v balení, ne poškozené stažení, a ten rozdíl rozhoduje, zda strávíte odpoledne vynucováním balíčků, nebo deset minut výběrem jiného klienta.
Balíček .deb není rozbitý
Závislost, kterou distribuce už nenese, je běžný důsledek vyřazení knihovny. Qt5 WebKit zmizel z pozdějších archivů Ubuntu i z Debianu a důvodem byla bezpečnostní údržba, nikoli nedostatek poptávky. Když k tomu dojde, každý balíček, který se na něj stále linkuje, přestane být instalovatelný, ať byl sestaven sebelepší.
Dvě selhání se hlásí jako stejná chyba a stejná nejsou. Na vydání bez knihovny se instalátor zastaví na nesplněné závislosti. Na vydání, kde se klient nainstaluje a pak selže při přihlášení, vidíte problém s TLS nebo SAML handshake uvnitř vložené komponenty prohlížeče. První je balení; druhé je běhové prostředí, a ani jedno se nespraví kopírováním starých knihoven do moderního desktopu.
Ověřte závislost místo toho, abyste ji vynucovali
Nainstalujte balíček explicitně, aby nástroj pojmenoval nevyřešenou závislost, místo aby vám dal shrnutí. Pak se zeptejte, zda vaše vydání má vůbec nějakého kandidáta, protože „tady není k dispozici“ a „dočasně chybí v tomto zrcadle“ vedou ke zcela odlišným rozhodnutím:
sudo apt install ./GlobalProtect_UI_deb-*.deb
apt-cache policy libqt5webkit5
apt-cache rdepends --installed libqt5webkit5
Pokud apt-cache policy nenahlásí žádného kandidáta, přestaňte se ho snažit nainstalovat a začněte vybírat alternativu. Zajímavé není chybějící jméno balíčku; zajímavé je, že se graf závislostí výrobce nepohnul s distribucemi, které vaši uživatelé provozují.
Co vynucování starých balíčků udělá s desktopem
Obejití, které koluje, spočívá ve vytažení knihovny ze staršího vydání. Na aktuálním Ubuntu to skončí konfliktem menší verze Qt5: starší balíčky táhnou libqt5core5t64 zpět a potom nainstalované balíčky KDE a PyQt začnou žádat verzi ABI, kterou downgradovaná knihovna už neposkytuje. Výsledkem je částečná aktualizace, která rozbije nesouvisející aplikace, což je mnohem horší odpoledne než to, se kterým jste začali.
Tento výsledek je očekávaný a ne smolný. Očekávání ABI Qt na menší verze jsou přísná a distribuce dodává jednu souvislou sadu. Primíchat knihovnu z jiného vydání není cílená oprava; je to druhá, méně kontrolovaná aktualizace.
Stejná rada platí pro běhovou variantu selhání. Snížení systémové úrovně zabezpečení OpenSSL, aby handshake starého klienta prošel, změní každé TLS spojení na stroji kvůli opravě jedné aplikace, včetně správce balíčků, který budete potřebovat, až se rozbije něco jiného.
openconnect mluví tímto protokolem
OpenConnect implementuje protokol GlobalProtect přímo a poznámky k protokolu popisují jak volání, tak rozdělení mezi dvěma serverovými rozhraními. Portál rozděluje nastavení a seznam bran; brána ukončuje tunel:
openconnect --protocol=gp vpn.example.com
openconnect --protocol=gp --authgroup=staff vpn.example.com
Pokud portál vynechá bránu, kterou potřebujete, --usergroup=gateway nebo URL končící na /gateway přeskočí krok portálu. Když je nabízeno několik bran, --authgroup=NAME vybírá mezi nimi. Autentizace je uživatelské jméno a heslo, volitelně s klientským certifikátem, a brány SAML v praxi fungují přes network-manager-openconnect místo ručně psaného příkazového řádku.
Brána s přísnou zásadou posture může také vyžadovat zprávu HIP, než vydá tunel. OpenConnect ji umí vygenerovat a odeslat, ale pokud brána vyžaduje inventuru, kterou nedokáže vytvořit, žádný přepínač tuto zásadu nezmění; je to rozhodnutí na straně serveru.
Ověřte tunel a vězte, co openconnect neopraví
Zkontrolujte, co tunel skutečně použil, místo abyste věřili zprávě o úspěchu. Brána posílá směrování a konfiguraci jako XML a klient je aplikuje, takže chybějící trasa je problém konfigurace nebo volby, ne chyba klienta:
ip -4 addr show
ip route
resolvectl status
MTU si zaslouží vlastní pohled. Konfigurace GlobalProtect vždy hlásí MTU nula, takže klient ji odhaduje z režie zapouzdření. Velké přenosy, které se zaseknou, zatímco malé požadavky procházejí, jsou klasický příznak, a lékem je explicitní MTU na spojení, nikoli vypnutí objevování cesty.
IPv6 je opět samostatná věc. PAN ji přidal v GlobalProtect 4.0 a podpora v OpenConnect je od verze 9.0 popisována jako experimentální, takže nepředpokládejte, že se rodina adres chová jako IPv4 jen proto, že tunel naskočil. A pokud brána vynucuje kontrolu posture, kterou klient s otevřeným zdrojovým kódem nesplní, provozujte klientský program výrobce na podporovaném vydání LTS, v případě, že váš pracovní stroj už postoupil, ve virtuálním počítači. Tím zůstane desktop nedotčen a stará závislost skončí uvnitř hranice, kterou můžete znovu postavit.