Rozsądne założenie jest takie, że .deb z Twojego portalu GlobalProtect jest zepsuty albo że producent wydał wadliwy build. Zwykle tak nie jest. Interfejs linuksowy producenta nadal linkuje z Qt5 WebKit, a nowsze wydania Ubuntu już go nie dostarczają, więc pakiet prosi o bibliotekę, którą Twoja dystrybucja usunęła celowo. To niedopasowanie pakowania, a nie uszkodzone pobranie, i ta różnica decyduje, czy spędzisz popołudnie na wymuszaniu pakietów, czy dziesięć minut na wyborze innego klienta.

Plik .deb nie jest zepsuty

Zależność, której dystrybucja już nie dostarcza, to normalny skutek wycofania biblioteki. Qt5 WebKit zniknął z późniejszych archiwów Ubuntu i z Debiana, a powodem była konserwacja bezpieczeństwa, a nie brak popytu. Gdy to nastąpi, każdy pakiet, który nadal z nim linkuje, przestaje być instalowalny, niezależnie od tego, jak dobrze go zbudowano.

Dwa błędy są zgłaszane jako ten sam bug i nie są nim. W wydaniu bez biblioteki instalator zatrzymuje się na niespełnionej zależności. W wydaniu, gdzie klient się instaluje, a potem zawodzi przy logowaniu, widzisz raczej problem z uzgadnianiem TLS lub SAML wewnątrz osadzonego komponentu przeglądarki. Pierwszy to pakowanie; drugi to środowisko uruchomieniowe, i żadnego z nich nie naprawisz, kopiując stare biblioteki do nowoczesnego pulpitu.

Potwierdź zależność zamiast ją wymuszać

Zainstaluj pakiet jawnie, aby narzędzie nazwało nierozwiązaną zależność, zamiast dawać Ci podsumowanie. Potem zapytaj, czy Twoje wydanie ma jakiegokolwiek kandydata, ponieważ „niedostępne tutaj” i „chwilowo brak w tym mirrorze” prowadzą do zupełnie różnych decyzji:

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

Jeśli apt-cache policy nie zgłasza żadnego kandydata, przestań próbować go instalować i zacznij wybierać alternatywę. Ciekawe nie jest nazwa brakującego pakietu; ciekawe jest to, że graf zależności producenta nie ruszył się razem z dystrybucjami, których używają Twoi użytkownicy.

Co wymuszanie starych pakietów robi z pulpitem

Krążące obejście polega na wyciągnięciu biblioteki ze starszego wydania. Na aktualnym Ubuntu kończy się to konfliktem wersji minor Qt5: starsze pakiety ciągną libqt5core5t64 wstecz, a wtedy zainstalowane pakiety KDE i PyQt zaczynają wymagać wersji ABI, której zdegradowana biblioteka już nie zapewnia. Wynikiem jest częściowa aktualizacja, która psuje niezwiązane aplikacje, czyli znacznie gorsze popołudnie niż to, od którego zacząłeś.

Ten wynik jest oczekiwany, a nie pechowy. Oczekiwania ABI Qt wobec wersji minor są surowe, a dystrybucja dostarcza jeden spójny zestaw. Domieszanie biblioteki z innego wydania nie jest punktową naprawą; to druga, słabiej kontrolowana aktualizacja.

Ta sama rada dotyczy wariantu uruchomieniowego tej awarii. Obniżenie systemowego poziomu bezpieczeństwa OpenSSL, aby uzgadnianie starego klienta się udało, zmienia każde połączenie TLS na maszynie, by naprawić jedną aplikację, w tym menedżer pakietów, którego będziesz potrzebować, gdy coś innego się zepsuje.

openconnect mówi tym protokołem

OpenConnect implementuje protokół GlobalProtect bezpośrednio, a notatki o protokole opisują zarówno wywołanie, jak i podział między dwoma interfejsami serwera. Portal rozdaje ustawienia i listę bram; brama kończy tunel:

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

Jeśli portal pominie bramę, której potrzebujesz, --usergroup=gateway lub adres URL kończący się na /gateway pomija krok portalu. Gdy oferowanych jest kilka bram, --authgroup=NAME wybiera spośród nich. Uwierzytelnianie to nazwa użytkownika i hasło, opcjonalnie z certyfikatem klienta, a bramy SAML działają w praktyce przez network-manager-openconnect a nie przez ręcznie wpisywany wiersz poleceń.

Brama z surową polityką postury może też wymagać raportu HIP, zanim wyda tunel. OpenConnect potrafi go wygenerować i przesłać, ale jeśli brama żąda inwentarza, którego nie da się wytworzyć, żadna flaga tej polityki nie zmieni; to decyzja po stronie serwera.

Zweryfikuj tunel i wiedz, czego openconnect nie naprawi

Sprawdź, co tunel faktycznie zastosował, zamiast ufać komunikatowi o powodzeniu. Brama wysyła trasowanie i konfigurację jako XML, a klient je stosuje, więc brakująca trasa to problem konfiguracji lub wyboru, a nie błąd klienta:

ip -4 addr show
ip route
resolvectl status

MTU zasługuje na osobne spojrzenie. Konfiguracja GlobalProtect zawsze zgłasza MTU równe zero, więc klient szacuje ją z narzutu enkapsulacji. Duże transfery, które się zatykają, gdy małe żądania przechodzą, to klasyczny objaw, a lekarstwem jest jawna MTU na połączeniu, a nie wyłączanie wykrywania ścieżki.

IPv6 to znowu osobna sprawa. PAN dodał je w GlobalProtect 4.0, a wsparcie OpenConnect jest opisywane jako eksperymentalne od wersji 9.0, więc nie zakładaj, że ta rodzina adresów zachowuje się jak IPv4 tylko dlatego, że tunel wstał. A jeśli brama wymusza kontrolę postury, której klient otwartoźródłowy nie spełni, uruchom klienta producenta na wspieranym wydaniu LTS, w maszynie wirtualnej, jeśli Twoja stacja robocza już poszła dalej. To zachowuje pulpit w całości i zamyka starą zależność w granicy, którą możesz odtworzyć.

Powiązane artykuły