La suposición razonable es que el .deb de tu portal de GlobalProtect está roto, o que el fabricante publicó una compilación defectuosa. Normalmente no lo está. La interfaz Linux del fabricante sigue enlazando contra Qt5 WebKit, y las versiones más recientes de Ubuntu ya no lo incluyen, así que el paquete pide una biblioteca que tu distribución retiró a propósito. Eso es un desajuste de empaquetado, no una descarga corrupta, y esa diferencia decide si pasas la tarde forzando paquetes o diez minutos eligiendo otro cliente.

El paquete .deb no está roto

Una dependencia que la distribución ya no incluye es el resultado normal de retirar una biblioteca. Qt5 WebKit desapareció de los archivos posteriores de Ubuntu y de Debian, y el motivo fue el mantenimiento de seguridad y no la falta de demanda. Cuando eso ocurre, todo paquete que aún enlace contra ella deja de poder instalarse, por bien construido que estuviera.

Dos fallos se reportan como el mismo error y no lo son. En una versión sin la biblioteca, el instalador se detiene con una dependencia no satisfecha. En una versión donde el cliente se instala y luego falla al iniciar sesión, lo que ves es un problema de handshake TLS o SAML dentro del componente de navegador integrado. El primero es empaquetado; el segundo es tiempo de ejecución, y ninguno se arregla copiando bibliotecas antiguas en un escritorio moderno.

Confirmar la dependencia en lugar de forzarla

Instala el paquete de forma explícita para que la herramienta nombre la dependencia sin resolver en vez de darte un resumen. Luego pregunta si tu versión tiene algún candidato, porque «no disponible aquí» y «temporalmente ausente de este espejo» llevan a decisiones completamente distintas:

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

Si apt-cache policy no informa ningún candidato, deja de intentar instalarlo y empieza a elegir una alternativa. Lo interesante no es el nombre del paquete ausente; es el hecho de que el grafo de dependencias del fabricante no se ha movido con las distribuciones que usan tus usuarios.

Qué le hace al escritorio forzar paquetes antiguos

El truco que circula es sacar la biblioteca de una versión anterior. En un Ubuntu actual eso desemboca en un conflicto de versión menor de Qt5: los paquetes antiguos arrastran libqt5core5t64 hacia atrás, y entonces los paquetes KDE y PyQt ya instalados empiezan a exigir una versión de ABI que la biblioteca degradada ya no ofrece. El resultado es una actualización parcial que rompe aplicaciones no relacionadas, lo cual es una tarde mucho peor que aquella con la que empezaste.

Ese resultado es lo esperable y no es mala suerte. Las expectativas de ABI de Qt para versiones menores son estrictas, y una distribución entrega un conjunto coherente. Mezclar una biblioteca de otra versión no es una corrección puntual; es una segunda actualización, menos controlada.

El mismo consejo vale para la variante del fallo en tiempo de ejecución. Bajar el nivel de seguridad de OpenSSL en todo el sistema para que el handshake de un cliente antiguo funcione cambia cada conexión TLS de la máquina para reparar una aplicación, incluido el gestor de paquetes que necesitarás cuando algo más se rompa.

openconnect habla el protocolo

OpenConnect implementa el protocolo de GlobalProtect directamente, y las notas del protocolo describen tanto la invocación como la división entre las dos interfaces del servidor. El portal distribuye la configuración y la lista de pasarelas; la pasarela termina el túnel:

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

Si el portal omite la pasarela que necesitas, --usergroup=gateway o una URL que termine en /gateway se salta el paso del portal. Cuando se ofrecen varias pasarelas, --authgroup=NAME elige entre ellas. La autenticación es un usuario y una contraseña, opcionalmente con un certificado de cliente, y las pasarelas SAML funcionan en la práctica mediante network-manager-openconnect en lugar de una línea de comandos escrita a mano.

Una pasarela con una política de postura estricta también puede exigir un informe HIP antes de entregar un túnel. OpenConnect puede generar y enviar uno, pero si la pasarela exige un inventario que no puede producir, ninguna opción cambia esa política; es una decisión del lado del servidor.

Verificar el túnel y saber qué no arreglará openconnect

Comprueba qué aplicó realmente el túnel en lugar de fiarte del mensaje de éxito. La pasarela envía el enrutamiento y la configuración como XML y el cliente los aplica, así que una ruta ausente es un problema de configuración o de selección y no un fallo del cliente:

ip -4 addr show
ip route
resolvectl status

La MTU merece una mirada propia. La configuración de GlobalProtect siempre informa una MTU de cero, así que el cliente estima una a partir de la sobrecarga de encapsulación. Las transferencias grandes que se atascan mientras las peticiones pequeñas funcionan son el síntoma clásico, y el remedio es una MTU explícita en la conexión en lugar de desactivar el descubrimiento de ruta.

IPv6 es otra cosa aparte. PAN lo añadió en GlobalProtect 4.0, y el soporte de OpenConnect se describe como experimental desde la versión 9.0, así que no des por hecho que la familia de direcciones se comporta como IPv4 solo porque el túnel se levantara. Y si la pasarela impone una comprobación de postura que el cliente de código abierto no puede satisfacer, ejecuta el cliente del fabricante en una versión LTS compatible, en una máquina virtual si tu estación de trabajo ya avanzó. Eso mantiene intacto el escritorio y pone la dependencia heredada dentro de un límite que puedes reconstruir.

Artículos relacionados