OpenConnect på macOS: paket, utgivningsarkiv eller git-klon
Homebrew levererar en binärfil och ett nätverksskript; ett källträd levererar inget av dem förrän du genererar och kör dem. Vet vilken din anslutning använder.
Tre vägar ger dig en OpenConnect-klient på en Mac, och de lämnar olika saker på disken. En Homebrew-formel installerar en kompilerad binärfil och nätverksskriptet som ställer in rutter och DNS. Ett utgivningsarkiv ger dig källkod med ett genererat byggsystem. En git-utcheckning ger dig källkod utan. Att välja fel är anledningen till att folk möter en saknad configure några minuter in i en handledning.
Två olika maskiner under samma namn
Paketvägen är ett enda kommando, och det är rätt standardval för alla vars jobb är att ansluta snarare än att utveckla.
brew install openconnect
Det den installerar betyder mer än kommandot. Du får klientens binärfil, och du får också ett vpnc-script som klienten anropar för att programmera gränssnittet, rutterna och resolvern. De två arbetar som ett par: binärfilen avslutar TLS-sessionen och lämnar gränssnittet som uppstår till skriptet, och skriptet är den del som vet hur detta operativsystem vill att dess nätverk ska ändras.
Den uppdelningen förklarar en hel klass av förvirrande rapporter. En klient som ansluter, rapporterar framgång och sedan skickar trafik på fel väg har oftast ett skriptproblem, inte ett tunnelproblem, och att installera om formeln rättar det bara för att skriptet också installeras om. Kontrollera formelns nuvarande stöd för macOS och CPU-arkitektur innan du planerar utifrån den; en Mac som kör ett skal perfekt har kanske fortfarande inget aktuellt paket byggt för sig.
Vad källkods vägen egentligen gör
Ett utgivningsarkiv kommer med ett genererat byggsystem, så den välkända ./configure finns från början. En git-utcheckning gör det inte, eftersom de genererade filerna är byggprodukter och inte saker som projektet lagrar. Det är hela anledningen till att ./autogen.sh dyker upp i instruktionerna för utcheckningar och inte för utgivningsarkiv.
./autogen.sh
./configure
make
make install
Varje rad gör något specifikt, och att veta vilken som misslyckades sparar mycket gissande. autogen-steget kör autotools för att producera configure. configure-steget kontrollerar kompilatorn, biblioteken och rubrikerna som klienten behöver och skriver sedan makefile-filerna som speglar vad den hittade. make-steget kompilerar. install-steget kopierar resultaten någonstans i din sökväg.
Det är på den sista raden som råd ofta går fel. Installation är inte bevis på att bygget fungerade, och att köra det i en godtycklig nedladdningsmapp med förhöjda rättigheter är ett bra sätt att sprida filer som du inte kommer ihåg senare. Om configure misslyckas på ett saknat bibliotek är den användbara utdatan det första felet den skrev ut, inte de sista tjugo raderna i loggen.
Sessionen och nätverkskonfigurationen är åtskilda
Denna skillnad avgör om en anslutning faktiskt bär trafik. Att upprätta TLS-sessionen ger dig ett gränssnitt på klientsidan. Att tillämpa rutter, adresser och DNS-resolvers är ett andra steg som görs genom nätverksskriptet, och ett bygge som producerade en binärfil utan skriptet har en halv klient.
Samma uppdelning förklarar varför två maskiner med identiska klienter beter sig olika: skriptet rådfrågar systemets nätverkskonfiguration, och den konfigurationen omfattar allt annat som har gjort anspråk på en rutt. När en delad tunnel skickar trafik någon oväntadstans gör tunneln sitt jobb, och routingbeslutet är det som ska undersökas.
Så när du felsöker, fråga vilket lager som misslyckades. En session som aldrig upprättas är protokoll, certifikat eller inloggningsuppgifter. En session som upprättas och inte vidarebefordrar något är gränssnittet och skriptet. En installerad klient som fungerar från ett nätverk och inte från ett annat är nåbarhet, och ingen mängd ombyggnad ändrar det.
Vet vilken binärfil du kör
Ett handinstallerat bygge och en paketerad binärfil kan leva lyckligt tillsammans, och vilken som körs beror på din sökväg och inte på dina avsikter. Ta reda på det innan du rapporterar ett versionsnummer till någon.
which -a openconnect
openconnect --version
brew list --versions openconnect
Det första kommandot listar varje kopia som ditt skal ser, i den ordning det skulle prova dem. Det andra berättar vilken som svarade. När det inte stämmer med vad du förväntar dig kör du ett bygge från ett gammalt experiment, och ingen konfigurationsändring flyttar det.
Att installera en klient är inte att godkänna en gateway
En fungerande binärfil gör inte en utrullning kompatibel. Bekräfta gatewayens protokoll, dess autentiseringsflöde och eventuella krav på hanterad enhet med människorna som äger den, eftersom det är policy- och applikationslagerfakta som ett bygge inte kan leverera.
Projektets bygginstruktioner täcker autotools-sekvensen och kravet på nätverksskriptet mer i detalj, och dem bör man följa framför ett blogginlägg som är äldre än din macOS-version. Om målet bara är att ansluta, ta paketet, behåll skriptet och lämna kompilatorn utanför.