OpenConnect pe macOS: pachet, arhivă de versiune sau clonă git
Homebrew oferă un binar și un script de rețea; un arbore sursă nu oferă niciunul până nu le generați și executați. Știți pe care îl folosește conexiunea voastră.
Trei căi vă oferă un client OpenConnect pe un Mac și lasă lucruri diferite pe disc. O formulă Homebrew instalează un binar compilat și scriptul de rețea care configurează rutele și DNS. O arhivă de versiune vă oferă cod sursă cu un sistem de compilare generat. O clonă git vă oferă cod sursă fără el. Alegerea celei greșite este motivul pentru care oamenii întâlnesc un configure lipsă la câteva minute după începerea unui tutorial.
Două mașini diferite sub același nume
Calea pachetului este o singură comandă și este alegerea implicită corectă pentru oricine a cărui treabă este să se conecteze, nu să dezvolte.
brew install openconnect
Ce instalează contează mai mult decât comanda. Primiți binarul clientului și primiți și un vpnc-script pe care clientul îl apelează pentru a programa interfața, rutele și resolverul. Cele două lucrează ca o pereche: binarul încheie sesiunea TLS și predă interfața rezultată scriptului, iar scriptul este partea care știe cum vrea acest sistem de operare să i se schimbe rețeaua.
Această separare explică o întreagă clasă de rapoarte confuze. Un client care se conectează, raportează succes și apoi trimite traficul pe calea greșită are de obicei o problemă de script, nu de tunel, iar reinstalarea formulei o rezolvă doar pentru că și scriptul este reinstalat. Verificați suportul actual al formulei pentru macOS și arhitectura CPU înainte de a planifica pe baza ei; un Mac care rulează perfect un shell poate să nu aibă încă un pachet actual compilat pentru el.
Ce face de fapt calea codului sursă
O arhivă de versiune vine cu un sistem de compilare generat, așa că familiarul ./configure există de la început. O clonă git nu, pentru că fișierele generate sunt produse de compilare și nu lucruri pe care proiectul le stochează. Acesta este tot motivul pentru care ./autogen.sh apare în instrucțiunile pentru clone și nu pentru arhivele de versiune.
./autogen.sh
./configure
make
make install
Fiecare linie face ceva specific, iar știind care a eșuat economisiți multe presupuneri. Pasul autogen rulează autotools pentru a produce configure. Pasul configure verifică compilatorul, bibliotecile și anteturile de care are nevoie clientul, apoi scrie makefile-urile care reflectă ce a găsit. Pasul make compilează. Pasul install copiază rezultatele undeva în calea voastră.
La acea ultimă linie sfaturile merg adesea greșit. Instalarea nu este dovada că compilarea a funcționat, iar rularea ei într-un folder de descărcare oarecare cu privilegii ridicate este o modalitate bună de a împrăștia fișiere pe care nu le veți ține minte mai târziu. Dacă configure eșuează din cauza unei biblioteci lipsă, ieșirea utilă este prima eroare tipărită, nu ultimele douăzeci de linii din jurnal.
Sesiunea și configurația de rețea sunt separate
Această distincție decide dacă o conexiune transportă într-adevăr trafic. Stabilirea sesiunii TLS vă oferă o interfață pe partea clientului. Aplicarea rutelor, adreselor și resolverelor DNS este un al doilea pas făcut prin scriptul de rețea, iar o compilare care a produs un binar fără script are jumătate de client.
Aceeași separare explică de ce două mașini cu clienți identici se comportă diferit: scriptul consultă configurația de rețea a sistemului, iar acea configurație include tot ce altceva a revendicat o rută. Când un tunel divizat trimite traficul într-un loc neașteptat, tunelul își face treaba, iar decizia de rutare este lucrul de examinat.
Deci când depanați, întrebați ce strat a eșuat. O sesiune care nu se stabilește niciodată este protocol, certificat sau acreditări. O sesiune care se stabilește și nu transmite nimic este interfața și scriptul. Un client instalat care funcționează dintr-o rețea și nu din alta este accesibilitate, iar nicio cantitate de recompilare nu schimbă asta.
Știți ce binar executați
O compilare instalată manual și un binar împachetat pot coexista fericit, iar care rulează depinde de calea voastră, nu de intențiile voastre. Aflați asta înainte de a raporta cuiva un număr de versiune.
which -a openconnect
openconnect --version
brew list --versions openconnect
Prima comandă listează fiecare copie pe care o vede shell-ul vostru, în ordinea în care le-ar încerca. A doua vă spune care a răspuns. Când asta nu se potrivește cu ce așteptați, rulați o compilare dintr-un experiment vechi, iar nicio schimbare de configurație nu o va muta.
Instalarea unui client nu este aprobarea unui gateway
Un binar funcțional nu face o implementare compatibilă. Confirmați protocolul gateway-ului, fluxul său de autentificare și orice cerință de dispozitiv gestionat cu oamenii care îl dețin, pentru că sunt fapte de politică și de strat aplicativ pe care o compilare nu le poate furniza.
Instrucțiunile de compilare ale proiectului acoperă mai detaliat secvența autotools și cerința scriptului de rețea, și ele sunt referința de urmat, nu o postare de blog mai veche decât versiunea voastră de macOS. Dacă scopul este doar să vă conectați, luați pachetul, păstrați scriptul și lăsați compilatorul deoparte.