Три пътя ви дават клиент OpenConnect на Mac и те оставят различни неща на диска. Формулата Homebrew инсталира компилиран двоичен файл плюс мрежовия скрипт, който настройва маршрутите и DNS. Архивът на издание ви дава изходен код с генерирана система за изграждане. А git проверката ви дава изходен код без такава. Изборът на грешния е причината хората да срещат липсващ configure няколко минути след началото на ръководство.

Две различни машини под едно и също име

Пътят през пакета е една команда и това е правилната настройка по подразбиране за всеки, чиято работа е свързване, а не разработка.

brew install openconnect

Това, което инсталира, е по-важно от командата. Получавате двоичния файл на клиента и също vpnc-script, който клиентът извиква, за да програмира интерфейса, маршрутите и резолвера. Двете работят като двойка: двоичният файл прекратява TLS сесията и предава получения интерфейс на скрипта, а скриптът е частта, която знае как тази операционна система иска да промени мрежата си.

Това разделение обяснява цял клас объркващи доклади. Клиент, който се свързва, съобщава успех и след това изпраща трафик по грешния път, обикновено има проблем със скрипта, а не с тунела, и преинсталирането на формулата го оправя само защото скриптът също се преинсталира. Проверете текущата поддръжка на формулата за macOS и архитектурата на процесора, преди да планирате въз основа на нея; Mac, който изпълнява обвивка отлично, може все още да няма актуален пакет, изграден за него.

Какво всъщност прави пътят през изходния код

Архивът на издание пристига с генерирана система за изграждане, така че познатият ./configure съществува от самото начало. При git проверката го няма, защото генерираните файлове са продукти на изграждането, а не неща, които проектът съхранява. Точно това е причината ./autogen.sh да се появява в инструкциите за проверки, а не за архиви на издания.

./autogen.sh
./configure
make
make install

Всеки ред прави нещо конкретно и знанието кой е неуспешен спестява много догадки. Стъпката autogen стартира autotools, за да създаде configure. Стъпката configure проверява компилатора, библиотеките и заглавките, които клиентът изисква, след което записва makefile файловете, отразяващи какво е намерено. Стъпката make компилира. Стъпката install копира резултатите някъде по пътя ви.

Именно на този последен ред съветите обикновено се объркват. Инсталирането не е доказателство, че изграждането е успяло, а стартирането му в произволна папка за изтегляне с повишени права е добър начин да разпръснете файлове, които после няма да си спомните. Ако configure се провали заради липсваща библиотека, полезният изход е първата отпечатана грешка, а не последните двадесет реда от дневника.

Сесията и мрежовата конфигурация са отделни

Това разграничение решава дали връзката действително пренася трафик. Установяването на TLS сесията ви дава интерфейс от страната на клиента. Прилагането на маршрути, адреси и DNS резолвери е втора стъпка, извършвана чрез мрежовия скрипт, и изграждане, което е създало двоичен файл без скрипта, има половин клиент.

Същото разделение обяснява защо две машини с идентични клиенти се държат различно: скриптът се допитва до мрежовата конфигурация на системата, а тази конфигурация включва всичко останало, което е заявило маршрут. Когато разделен тунел изпраща трафик на неочаквано място, тунелът си върши работата и решението за маршрута е това, което трябва да се изследва.

Затова при отстраняване на грешки питайте кой слой се е провалил. Сесия, която никога не се установява, е протокол, сертификат или идентификационни данни. Сесия, която се установява и не препраща нищо, е интерфейсът и скриптът. Инсталиран клиент, който работи от една мрежа, а от друга не, е достижимост и никакво преизграждане не я променя.

Знайте кой двоичен файл изпълнявате

Ръчно инсталирано изграждане и пакетиран двоичен файл могат да съществуват щастливо заедно, а кой от тях се изпълнява зависи от пътя ви, а не от намеренията ви. Разберете това, преди да съобщите номер на версия на някого.

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

Първата команда изброява всяко копие, което обвивката ви вижда, в реда, в който би ги опитала. Втората казва кое е отговорило. Когато те не съвпадат с очакванията ви, изпълнявате изграждане от стар експеримент и никаква промяна в конфигурацията няма да го премести.

Инсталирането на клиент не е одобрение на шлюза

Работещият двоичен файл не прави внедряването съвместимо. Потвърдете протокола на шлюза, потока на удостоверяване и всяко изискване за управлявано устройство с хората, които го притежават, защото това са факти за политиката и приложния слой, които изграждането не може да предостави.

Инструкциите за изграждане на проекта обхващат по-подробно последователността на autotools и изискването за мрежов скрипт и те са ориентирът, който да следвате, а не публикация в блог, по-стара от вашето издание на macOS. Ако целта е просто свързване, вземете пакета, запазете скрипта и оставете компилатора настрана.

Подобни статии