OpenConnect en macOS: paquete, arquivo de versión ou clon de git
Homebrew achega un binario e un script de rede; unha árbore de código fonte non achega ningún ata que os xeres e executa. Saiba cal usa a súa conexión.
Tres camiños danlle un cliente OpenConnect nun Mac, e deixan cousas distintas no disco. Unha fórmula de Homebrew instala un binario compilado e o script de rede que configura as rutas e o DNS. Un arquivo de versión dálle código fonte cun sistema de compilación xerado. Un clon de git dálle código fonte sen el. Escoller o camiño equivocado é a razón pola que a xente atopa un configure ausente poucos minutos despois de comezar un titorial.
Dúas máquinas distintas baixo o mesmo nome
O camiño do paquete é un só comando, e é a opción predeterminada correcta para quen o seu traballo é conectarse e non desenvolver.
brew install openconnect
O que instala importa máis que o comando. Obtén o binario do cliente e tamén un vpnc-script que o cliente chama para programar a interface, as rutas e o resolvedor. Os dous traballan en parella: o binario remata a sesión TLS e entrega a interface resultante ao script, que é a parte que sabe como este sistema operativo quere que cambie a súa rede.
Esa separación explica toda unha clase de informes confusos. Un cliente que se conecta, informa de éxito e logo envía o tráfico polo camiño equivocado adoita ter un problema de script, non de túnel, e reinstalar a fórmula só o arranxa porque o script tamén se reinstala. Comprobe o soporte actual da fórmula para macOS e a arquitectura de CPU antes de planificar arredor dela; un Mac que executa un shell perfectamente pode seguir sen ter un paquete actual compilado para el.
Que fai realmente o camiño do código fonte
Un arquivo de versión chega cun sistema de compilación xerado, así que o coñecido ./configure existe desde o principio. Un clon de git non, porque os ficheiros xerados son produtos de compilación e non cousas que o proxecto garde. Esa é toda a razón pola que ./autogen.sh aparece nas instrucións para clones e non para arquivos de versión.
./autogen.sh
./configure
make
make install
Cada liña fai algo concreto, e saber cal fallou aforra moitas conxecturas. O paso autogen executa as autotools para producir configure. O paso configure proba o compilador, as bibliotecas e as cabeceiras que necesita o cliente, e logo escribe os makefile que reflicten o que atopou. O paso make compila. O paso install copia os resultados nalgún lugar da súa ruta.
É nesa última liña onde o consello adoita ir mal. A instalación non é proba de que a compilación funcionase, e executala nun cartafol de descargas arbitrario con privilexios elevados é unha boa maneira de espallar ficheiros que logo non recordará. Se configure falla por unha biblioteca ausente, a saída útil é o primeiro erro que imprimiu, non as últimas vinte liñas do rexistro.
A sesión e a configuración de rede están separadas
Esta distinción decide se unha conexión transporta tráfico de verdade. Establecer a sesión TLS dálle unha interface no lado do cliente. Aplicar rutas, enderezos e resolvedores DNS é un segundo paso realizado a través do script de rede, e unha compilación que produciu un binario sen o script ten medio cliente.
A mesma separación explica por que dúas máquinas con clientes idénticos se comportan distinto: o script consulta a configuración de rede do sistema, e esa configuración inclúe todo o demais que reclamase unha ruta. Cando un túnel dividido envía o tráfico a un lugar inesperado, o túnel fai o seu traballo e a decisión de enrutamento é o que hai que examinar.
Así que cando depure, pregunte que capa fallou. Unha sesión que nunca se establece é protocolo, certificado ou credenciais. Unha sesión que se establece e non reenvía nada é a interface e o script. Un cliente instalado que funciona desde unha rede e non desde outra é accesibilidade, e ningunha cantidade de recompilación o cambia.
Saiba que binario está executando
Unha compilación instalada a man e un binario empaquetado poden convivir felizmente, e o que se executa depende da súa ruta e non das súas intencións. Descúbrao antes de informar a alguén dun número de versión.
which -a openconnect
openconnect --version
brew list --versions openconnect
O primeiro comando lista cada copia que o seu shell pode ver, na orde en que as probaría. O segundo di cal respondeu. Cando iso non concorda co que espera, está executando unha compilación dun experimento antigo, e ningún cambio de configuración o moverá.
Instalar un cliente non é aprobar unha pasarela
Un binario que funciona non fai compatible un despregamento. Confirme o protocolo da pasarela, o seu fluxo de autenticación e calquera requisito de dispositivo xestionado coas persoas que a posúen, porque son feitos de política e de capa de aplicación que unha compilación non pode fornecer.
As instrucións de compilación do proxecto cobren con máis detalle a secuencia de autotools e o requisito do script de rede, e son a referencia que hai que seguir e non unha entrada de blog anterior á súa versión de macOS. Se o obxectivo é simplemente conectarse, colla o paquete, conserve o script e deixe o compilador fóra.