A suposição razoável é que o .deb do seu portal GlobalProtect está quebrado, ou que o fornecedor publicou uma compilação defeituosa. Normalmente não está. A interface Linux do fornecedor ainda se liga ao Qt5 WebKit, e as versões mais recentes do Ubuntu já não o fornecem, então o pacote pede uma biblioteca que a sua distribuição removeu de propósito. Isso é um descompasso de empacotamento, não um download corrompido, e essa diferença decide se você passa a tarde forçando pacotes ou dez minutos escolhendo outro cliente.

O pacote .deb não está quebrado

Uma dependência que a distribuição não carrega mais é o desfecho normal de uma biblioteca aposentada. O Qt5 WebKit saiu dos arquivos posteriores do Ubuntu e do Debian, e o motivo foi a manutenção de segurança e não a falta de demanda. Quando isso acontece, todo pacote que ainda se liga a ele deixa de ser instalável, por melhor que tenha sido compilado.

Duas falhas são relatadas como o mesmo bug e não são. Numa versão sem a biblioteca, o instalador para com uma dependência não satisfeita. Numa versão em que o cliente instala e depois falha no login, você está vendo um problema de handshake TLS ou SAML dentro do componente de navegador embutido. O primeiro é empacotamento; o segundo é execução, e nenhum dos dois se conserta copiando bibliotecas antigas para um desktop moderno.

Confirmar a dependência em vez de forçá-la

Instale o pacote explicitamente para que a ferramenta nomeie a dependência não resolvida em vez de lhe dar um resumo. Depois pergunte se a sua versão tem algum candidato, porque «indisponível aqui» e «temporariamente ausente deste espelho» levam a decisões completamente diferentes:

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

Se apt-cache policy não indicar nenhum candidato, pare de tentar instalá-lo e comece a escolher uma alternativa. O interessante não é o nome do pacote ausente; é o fato de o grafo de dependências do fornecedor não ter acompanhado as distribuições que os seus usuários rodam.

O que forçar pacotes antigos faz com o desktop

A gambiarra que circula é puxar a biblioteca de uma versão anterior. Num Ubuntu atual isso desemboca num conflito de versão menor do Qt5: os pacotes mais antigos arrastam libqt5core5t64 para trás, e então os pacotes KDE e PyQt instalados passam a exigir uma versão de ABI que a biblioteca rebaixada já não oferece. O resultado é uma atualização parcial que quebra aplicações sem relação, o que é uma tarde muito pior do que aquela com que você começou.

Esse desfecho é esperado e não é azar. As expectativas de ABI do Qt para versões menores são rígidas, e uma distribuição entrega um conjunto coerente. Misturar uma biblioteca de outra versão não é uma correção pontual; é uma segunda atualização, menos controlada.

O mesmo conselho vale para a variante de execução da falha. Baixar o nível de segurança do OpenSSL em todo o sistema para o handshake de um cliente antigo funcionar muda todas as conexões TLS da máquina para reparar uma aplicação, incluindo o gerenciador de pacotes de que você vai precisar quando outra coisa quebrar.

openconnect fala o protocolo

O OpenConnect implementa o protocolo do GlobalProtect diretamente, e as notas do protocolo descrevem tanto a invocação quanto a divisão entre as duas interfaces de servidor. O portal distribui as configurações e a lista de gateways; o gateway termina o túnel:

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

Se o portal omitir o gateway de que você precisa, --usergroup=gateway ou uma URL que termine em /gateway pula a etapa do portal. Quando vários gateways são oferecidos, --authgroup=NAME escolhe entre eles. A autenticação é um nome de usuário e uma senha, opcionalmente com um certificado de cliente, e gateways SAML funcionam na prática via network-manager-openconnect em vez de uma linha de comando digitada à mão.

Um gateway com política de postura rígida também pode exigir um relatório HIP antes de entregar um túnel. O OpenConnect consegue gerar e enviar um, mas se o gateway exigir um inventário que ele não consegue produzir, nenhuma flag muda essa política; é uma decisão do lado do servidor.

Verificar o túnel e saber o que o openconnect não resolve

Confira o que o túnel realmente aplicou em vez de confiar na mensagem de sucesso. O gateway envia roteamento e configuração como XML e o cliente aplica, então uma rota ausente é um problema de configuração ou de seleção e não um bug do cliente:

ip -4 addr show
ip route
resolvectl status

A MTU merece uma olhada própria. A configuração do GlobalProtect sempre informa uma MTU de zero, então o cliente estima uma a partir da sobrecarga de encapsulamento. Transferências grandes que travam enquanto pedidos pequenos passam são o sintoma clássico, e o remédio é uma MTU explícita na conexão em vez de desligar a descoberta de caminho.

IPv6 é outra história. A PAN o adicionou no GlobalProtect 4.0, e o suporte do OpenConnect é descrito como experimental a partir da versão 9.0, então não presuma que a família de endereços se comporte como IPv4 só porque o túnel subiu. E se o gateway impõe uma verificação de postura que o cliente de código aberto não consegue satisfazer, rode o cliente do fornecedor numa versão LTS suportada, numa máquina virtual se a sua estação de trabalho já avançou. Isso mantém o desktop intacto e coloca a dependência legada dentro de um limite que você pode reconstruir.

Artigos relacionados