Tres camins us donen un client OpenConnect en un Mac, i deixen coses diferents al disc. Una fórmula de Homebrew instal·la un binari compilat i l'script de xarxa que configura les rutes i el DNS. Un arxiu de versió us dona codi font amb un sistema de compilació generat. Un clon de git us dona codi font sense. Triar el camí equivocat és per què la gent troba un configure absent pocs minuts després de començar un tutorial.

Dues màquines diferents sota el mateix nom

El camí del paquet és una sola ordre, i és l'opció per defecte correcta per a qui la feina és connectar-se i no desenvolupar.

brew install openconnect

El que instal·la importa més que l'ordre. Obteniu el binari del client i també un vpnc-script que el client crida per programar la interfície, les rutes i el resolutor. Els dos treballen en parella: el binari acaba la sessió TLS i lliura la interfície resultant a l'script, que és la part que sap com aquest sistema operatiu vol que canviï la seva xarxa.

Aquesta separació explica tota una classe d'informes confusos. Un client que es connecta, informa d'èxit i després envia el trànsit pel camí equivocat sol tenir un problema d'script, no de túnel, i reinstal·lar la fórmula ho arregla només perquè l'script també es reinstal·la. Comproveu el suport actual de la fórmula per a macOS i per a l'arquitectura de CPU abans de planificar-hi al voltant; un Mac que executa una shell perfectament pot no tenir cap paquet actual compilat per a ell.

Què fa realment el camí del codi font

Un arxiu de versió arriba amb un sistema de compilació generat, així que el conegut ./configure hi és des del principi. Un clon de git no, perquè els fitxers generats són productes de compilació i no coses que el projecte desi. Aquesta és la raó sencera per què ./autogen.sh apareix a les instruccions per a clons i no per a arxius de versió.

./autogen.sh
./configure
make
make install

Cada línia fa una cosa concreta, i saber quina ha fallat estalvia moltes conjectures. El pas autogen executa les autotools per produir configure. El pas configure prova el compilador, les biblioteques i les capçaleres que el client necessita, i després escriu els makefile que reflecteixen el que ha trobat. El pas make compila. El pas install copia els resultats en algun lloc del vostre camí.

És en aquesta última línia on el consell sol anar malament. La instal·lació no és prova que la compilació hagi funcionat, i executar-la en una carpeta de descàrregues arbitrària amb privilegis elevats és una bona manera d'escampar fitxers que després no recordareu. Si configure falla per una biblioteca absent, la sortida útil és el primer error que ha imprès, no les últimes vint línies del registre.

La sessió i la configuració de xarxa són separades

Aquesta distinció decideix si una connexió porta trànsit de debò. Establir la sessió TLS us dona una interfície al costat del client. Aplicar rutes, adreces i resolutors DNS és un segon pas fet a través de l'script de xarxa, i una compilació que ha produït un binari sense l'script té mig client.

La mateixa separació explica per què dues màquines amb clients idèntics es comporten diferent: l'script consulta la configuració de xarxa del sistema, i aquesta configuració inclou tot el que hagi reclamat una ruta. Quan un túnel dividit envia el trànsit a un lloc inesperat, el túnel fa la seva feina i la decisió d'encaminament és el que cal examinar.

Així que quan depureu, pregunteu quina capa ha fallat. Una sessió que no s'estableix mai és protocol, certificat o credencials. Una sessió que s'estableix i no reenvia res és la interfície i l'script. Un client instal·lat que funciona des d'una xarxa i no des d'una altra és accessibilitat, i cap quantitat de recompilació ho canvia.

Sapigueu quin binari executeu

Una compilació instal·lada a mà i un binari empaquetat poden conviure feliçment, i el que s'executa depèn del vostre camí i no de les vostres intencions. Esbrineu-ho abans d'informar ningú d'un número de versió.

which -a openconnect
openconnect --version
brew list --versions openconnect

La primera ordre llista cada còpia que la vostra shell pot veure, en l'ordre en què les provaria. La segona us diu quina ha respost. Quan això no coincideix amb el que espereu, executeu una compilació d'un experiment antic, i cap canvi de configuració el mourà.

Instal·lar un client no és aprovar una passarel·la

Un binari que funciona no fa compatible un desplegament. Confirmeu el protocol de la passarel·la, el seu flux d'autenticació i qualsevol requisit de dispositiu gestionat amb les persones que en són propietàries, perquè són fets de política i de capa d'aplicació que una compilació no pot proporcionar.

Les instruccions de compilació del projecte cobreixen amb més detall la seqüència d'autotools i el requisit de l'script de xarxa, i són la referència a seguir i no un article de blog anterior a la vostra versió de macOS. Si l'objectiu és simplement connectar-se, agafeu el paquet, conserveu l'script i deixeu el compilador fora.

Articles relacionats