Tři cesty vám na Macu dají klienta OpenConnect a na disku zanechají různé věci. Formule Homebrew nainstaluje zkompilovanou binárku a síťový skript, který nastavuje trasy a DNS. Archiv vydání vám dá zdrojový kód s vygenerovaným systémem sestavení. Klon gitu vám dá zdrojový kód bez něj. Volba špatné cesty je důvod, proč lidé pár minut po začátku návodu narazí na chybějící configure.

Dva různé stroje pod stejným jménem

Cesta přes balíček je jediný příkaz a je to správná výchozí volba pro každého, jehož práce je připojovat se, nikoli vyvíjet.

brew install openconnect

Na tom, co se nainstaluje, záleží víc než na příkazu. Získáte binárku klienta a také vpnc-script, který klient volá, aby naprogramoval rozhraní, trasy a resolver. Ty dvě věci fungují jako pár: binárka ukončí relaci TLS a předá výsledné rozhraní skriptu, a skript je ta část, která ví, jak si tento operační systém chce nechat změnit síť.

Toto rozdělení vysvětluje celou třídu matoucích hlášení. Klient, který se připojí, ohlásí úspěch a pak pošle provoz špatnou cestou, má obvykle problém se skriptem, ne s tunelem, a přeinstalování formule to spraví jen proto, že se přeinstaluje i skript. Ověřte si aktuální podporu formule pro macOS a architekturu procesoru, než s ní budete počítat; Mac, který shell spouští bezvadně, pro něj možná stále nemá aktuální balíček.

Co cesta přes zdrojový kód skutečně dělá

Archiv vydání přichází s vygenerovaným systémem sestavení, takže známý ./configure existuje od začátku. Klon gitu ho nemá, protože vygenerované soubory jsou produkty sestavení, a ne věci, které projekt ukládá. To je celý důvod, proč se ./autogen.sh objevuje v návodech pro klony a ne pro archivy vydání.

./autogen.sh
./configure
make
make install

Každý řádek dělá něco konkrétního a vědět, který selhal, ušetří hodně hádání. Krok autogen spustí autotools, aby vytvořil configure. Krok configure otestuje kompilátor, knihovny a hlavičky, které klient potřebuje, a pak zapíše makefile odpovídající tomu, co našel. Krok make zkompiluje. Krok install zkopíruje výsledky někam do vaší cesty.

Právě na tom posledním řádku se rada obvykle zvrtne. Instalace není důkaz, že sestavení fungovalo, a spouštět ji v náhodné složce stahování se zvýšenými právy je dobrý způsob, jak rozházet soubory, na které si později nevzpomenete. Pokud configure selže kvůli chybějící knihovně, užitečný výstup je první vypsaná chyba, ne posledních dvacet řádků protokolu.

Relace a síťová konfigurace jsou oddělené

Toto rozlišení rozhoduje, zda připojení skutečně přenáší provoz. Navázání relace TLS vám dá rozhraní na straně klienta. Aplikace tras, adres a DNS resolverů je druhý krok provedený přes síťový skript, a sestavení, které vytvořilo binárku bez skriptu, má polovinu klienta.

Stejné oddělení vysvětluje, proč se dva stroje s totožnými klienty chovají různě: skript se dotazuje síťové konfigurace systému a ta zahrnuje všechno ostatní, co si nárokovalo trasu. Když rozdělený tunel pošle provoz na nečekané místo, tunel dělá svou práci a zkoumat je třeba rozhodnutí o směrování.

Takže při ladění se ptejte, která vrstva selhala. Relace, která se nikdy nenaváže, je protokol, certifikát nebo přihlašovací údaje. Relace, která se naváže a nic nepředává, je rozhraní a skript. Nainstalovaný klient, který funguje z jedné sítě a z jiné ne, je dosažitelnost a to žádné přebudování nezmění.

Vězte, kterou binárku spouštíte

Ručně nainstalované sestavení a zabalená binárka mohou klidně koexistovat a to, která se spustí, závisí na vaší cestě, ne na vašich záměrech. Zjistěte to, než někomu nahlásíte číslo verze.

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

První příkaz vypíše každou kopii, kterou váš shell vidí, v pořadí, v jakém by je zkoušel. Druhý vám řekne, která odpověděla. Když se to neshoduje s vaším očekáváním, spouštíte sestavení ze starého experimentu a žádná změna konfigurace s tím nepohne.

Instalace klienta není schválení brány

Funkční binárka nedělá nasazení kompatibilním. Potvrďte protokol brány, její tok autentizace a případný požadavek na spravované zařízení s lidmi, kteří ji vlastní, protože to jsou fakta o politice a aplikační vrstvě, která sestavení dodat nemůže.

Pokyny k sestavení projektu podrobněji popisují sled autotools a požadavek na síťový skript a je třeba se jimi řídit, nikoli blogovým příspěvkem starším než vaše vydání macOS. Pokud je cílem jen se připojit, vezměte balíček, ponechte skript a kompilátor nechte stranou.

Související články