OpenConnect på macOS: pakke, utgivelsesarkiv eller git-klon
Homebrew leverer en binærfil og et nettverksskript; et kildetre leverer ingen av dem før du genererer og kjører dem. Vit hvilken tilkoblingen din bruker.
Tre veier gir deg en OpenConnect-klient på en Mac, og de etterlater forskjellige ting på disken. En Homebrew-formel installerer en kompilert binærfil og nettverksskriptet som setter opp ruter og DNS. Et utgivelsesarkiv gir deg kildekode med et generert byggesystem. En git-utsjekk gir deg kildekode uten. Å velge feil er grunnen til at folk møter en manglende configure noen minutter inn i en veiledning.
To forskjellige maskiner under samme navn
Pakkestien er én enkelt kommando, og det er riktig standardvalg for alle hvis jobb er å koble til framfor å utvikle.
brew install openconnect
Det den installerer, betyr mer enn kommandoen. Du får klientens binærfil, og du får også et vpnc-script som klienten kaller for å programmere grensesnittet, rutene og oppløseren. De to arbeider som et par: binærfilen avslutter TLS-økten og overlater grensesnittet som oppstår til skriptet, og skriptet er delen som vet hvordan dette operativsystemet vil at nettverket skal endres.
Denne delingen forklarer en hel klasse forvirrende rapporter. En klient som kobler til, rapporterer suksess og deretter sender trafikk på feil vei, har vanligvis et skriptproblem, ikke et tunnelproblem, og en reinstallering av formelen retter det bare fordi skriptet også reinstalleres. Sjekk formelens støtte for macOS og CPU-arkitektur før du planlegger rundt den; en Mac som kjører et skall perfekt har kanskje fortsatt ingen gjeldende pakke bygget for seg.
Hva kildekodeveien egentlig gjør
Et utgivelsesarkiv kommer med et generert byggesystem, så den kjente ./configure finnes fra starten. En git-utsjekk gjør ikke det, fordi de genererte filene er byggeprodukter og ikke ting prosjektet lagrer. Det er hele grunnen til at ./autogen.sh dukker opp i instruksjonene for utsjekker og ikke for utgivelsesarkiver.
./autogen.sh
./configure
make
make install
Hver linje gjør noe bestemt, og å vite hvilken som feilet sparer mye gjetting. autogen-trinnet kjører autotools for å produsere configure. configure-trinnet undersøker kompilatoren, bibliotekene og overskriftene klienten trenger, og skriver deretter makefile-filene som gjenspeiler det den fant. make-trinnet kompilerer. install-trinnet kopierer resultatene et sted på stien din.
Det er på den siste linjen råd ofte går galt. Installasjon er ikke bevis på at bygget virket, og å kjøre det i en vilkårlig nedlastingsmappe med forhøyede rettigheter er en god måte å spre filer du ikke vil huske senere. Hvis configure feiler på et manglende bibliotek, er det nyttige utfallet den første feilen den skrev ut, ikke de siste tjue linjene av loggen.
Økten og nettverkskonfigurasjonen er atskilt
Denne forskjellen avgjør om en tilkobling faktisk bærer trafikk. Å etablere TLS-økten gir deg et grensesnitt på klientsiden. Å anvende ruter, adresser og DNS-oppløsere er et andre trinn som gjøres gjennom nettverksskriptet, og et bygg som produserte en binærfil uten skriptet, har en halv klient.
Den samme delingen forklarer hvorfor to maskiner med identiske klienter oppfører seg forskjellig: skriptet spør systemets nettverkskonfigurasjon, og den konfigurasjonen omfatter alt annet som har gjort krav på en rute. Når en delt tunnel sender trafikk et uventet sted, gjør tunnelen jobben sin, og rutingsbeslutningen er det som må undersøkes.
Så når du feilsøker, spør hvilket lag som feilet. En økt som aldri etableres, er protokoll, sertifikat eller legitimasjon. En økt som etableres og ikke videresender noe, er grensesnittet og skriptet. En installert klient som virker fra ett nett og ikke fra et annet, er tilgjengelighet, og ingen mengde ombygging endrer det.
Vit hvilken binærfil du kjører
Et håndinstallert bygg og en pakket binærfil kan leve lykkelig sammen, og hvilken som kjører avhenger av stien din og ikke av hensiktene dine. Finn det ut før du rapporterer et versjonsnummer til noen.
which -a openconnect
openconnect --version
brew list --versions openconnect
Den første kommandoen lister opp hver kopi skallet ditt ser, i den rekkefølgen det ville prøve dem. Den andre forteller deg hvilken som svarte. Når det ikke stemmer med det du forventer, kjører du et bygg fra et gammelt eksperiment, og ingen konfigurasjonsendring flytter det.
Å installere en klient er ikke godkjenning av en gateway
En fungerende binærfil gjør ikke en utrulling kompatibel. Bekreft gatewayens protokoll, dens autentiseringsflyt og eventuelle krav til administrert enhet med folkene som eier den, fordi det er politikk- og applikasjonslagfakta som et bygg ikke kan levere.
Prosjektets bygginstruksjoner dekker autotools-sekvensen og kravet til nettverksskriptet mer detaljert, og dem bør man følge framfor et blogginnlegg som er eldre enn macOS-utgaven din. Hvis målet bare er å koble til, ta pakken, behold skriptet, og la kompilatoren være utenfor.