Три шляхи дають вам клієнт 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. Якщо мета — просто підключитися, візьміть пакет, збережіть скрипт і залиште компілятор осторонь.

Схожі статті