Tre veje giver dig en OpenConnect-klient på en Mac, og de efterlader forskellige ting på disken. En Homebrew-formel installerer en kompileret binær fil plus det netværksscript, der konfigurerer ruter og DNS. Et udgivelsesarkiv giver dig kildekode med et genereret build-system. Et git-checkout giver dig kildekode uden. At vælge den forkerte er grunden til, at folk møder en manglende configure få minutter inde i en vejledning.

To forskellige maskiner under samme navn

Pakkens vej er en enkelt kommando, og det er den rigtige standard for enhver, hvis arbejde er at forbinde frem for at udvikle.

brew install openconnect

Hvad den installerer, betyder mere end kommandoen. Du får klientens binære fil, og du får også et vpnc-script, som klienten kalder for at programmere interfacet, ruterne og resolveren. De to arbejder som et par: den binære fil afslutter TLS-sessionen og overgiver det resulterende interface til scriptet, og scriptet er den del, der ved, hvordan dette styresystem vil have sit netværk ændret.

Den opdeling forklarer en hel klasse af forvirrende rapporter. En klient, der forbinder, rapporterer succes og derefter sender trafik ad den forkerte vej, er normalt et scriptproblem, ikke et tunnelproblem, og en geninstallation af formlen retter det kun, fordi scriptet også bliver geninstalleret. Kontroller formlens aktuelle understøttelse af macOS og CPU-arkitektur, før du planlægger ud fra den; en Mac, der kører en shell perfekt, har måske stadig ingen aktuel pakke bygget til sig.

Hvad kildekodens vej egentlig gør

Et udgivelsesarkiv ankommer med et genereret build-system, så den velkendte ./configure findes fra starten. Et git-checkout gør ikke, fordi de genererede filer er build-produkter og ikke ting, projektet gemmer. Det er hele grunden til, at ./autogen.sh optræder i instruktionerne til checkouts og ikke til udgivelsesarkiver.

./autogen.sh
./configure
make
make install

Hver linje gør noget specifikt, og at vide, hvilken der fejlede, sparer en masse gætværk. autogen-trinnet kører autotools for at fremstille configure. configure-trinnet undersøger compiler, biblioteker og headere, som klienten skal bruge, og skriver derefter makefilerne, der afspejler, hvad den fandt. make-trinnet kompilerer. install-trinnet kopierer resultaterne et sted på din sti.

Det er på den sidste linje, at råd ofte går galt. Installation er ikke bevis for, at byggeriet virkede, og at køre det i en vilkårlig downloadmappe med forhøjede rettigheder er en god måde at sprede filer, du ikke vil huske senere. Hvis configure fejler på et manglende bibliotek, er det nyttige output den første fejl, den udskrev, ikke de sidste tyve linjer af loggen.

Sessionen og netværkskonfigurationen er adskilt

Denne forskel afgør, om en forbindelse faktisk bærer trafik. At etablere TLS-sessionen giver dig et interface på klientsiden. At anvende ruter, adresser og DNS-resolvere er et andet trin, der udføres gennem netværksscriptet, og et byggeri, der fremstillede en binær fil uden scriptet, har en halv klient.

Den samme adskillelse forklarer, hvorfor to maskiner med identiske klienter opfører sig forskelligt: scriptet konsulterer systemets netværkskonfiguration, og den konfiguration omfatter alt andet, der har gjort krav på en rute. Når en splittet tunnel sender trafik et uventet sted hen, gør tunnelen sit arbejde, og rutningsbeslutningen er det, der skal undersøges.

Så når du fejlretter, spørg hvilket lag der fejlede. En session, der aldrig etableres, er protokol, certifikat eller legitimationsoplysninger. En session, der etableres og ikke videresender noget, er interfacet og scriptet. En installeret klient, der virker fra ét netværk og ikke fra et andet, er tilgængelighed, og ingen mængde ombygning ændrer det.

Vid, hvilken binær fil du kører

Et håndinstalleret byggeri og en pakket binær fil kan leve lykkeligt sammen, og den, der kører, afhænger af din sti frem for dine hensigter. Find ud af det, før du rapporterer et versionsnummer til nogen.

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

Den første kommando viser hver kopi, din shell kan se, i den rækkefølge, den ville prøve dem. Den anden fortæller dig, hvilken der svarede. Når det er uenigt med det, du forventer, kører du et byggeri fra et gammelt eksperiment, og ingen konfigurationsændring flytter det.

At installere en klient er ikke godkendelse af en gateway

En fungerende binær fil gør ikke en udrulning kompatibel. Bekræft gatewayens protokol, dens godkendelsesforløb og eventuelle krav om en administreret enhed med de folk, der ejer den, fordi det er politik- og applikationslagsfakta, som et byggeri ikke kan levere.

Projektets byggeriinstruktioner dækker autotools-sekvensen og kravet om netværksscriptet mere detaljeret, og dem bør man følge frem for et blogindlæg, der er ældre end din macOS-udgivelse. Hvis målet blot er at forbinde, så tag pakken, behold scriptet, og lad compileren være udenfor.

Relaterede artikler