Trzy ścieżki dają ci klienta OpenConnect na Macu i zostawiają na dysku różne rzeczy. Formuła Homebrew instaluje skompilowany plik binarny oraz skrypt sieciowy, który konfiguruje trasy i DNS. Archiwum wydania daje kod źródłowy z wygenerowanym systemem budowania. Klon git daje kod źródłowy bez niego. Wybór niewłaściwej drogi jest powodem, dla którego ludzie napotykają brakujący configure kilka minut po rozpoczęciu poradnika.

Dwie różne maszyny pod tą samą nazwą

Ścieżka pakietu to jedno polecenie i jest właściwym domyślnym wyborem dla każdego, czyją pracą jest łączenie, a nie tworzenie.

brew install openconnect

To, co instaluje, jest ważniejsze od polecenia. Otrzymujesz plik binarny klienta, a także vpnc-script, który klient wywołuje, aby zaprogramować interfejs, trasy i resolver. Oba działają jako para: plik binarny kończy sesję TLS i przekazuje powstały interfejs skryptowi, a skrypt jest tą częścią, która wie, jak ten system operacyjny chce zmienić swoją sieć.

Ten podział wyjaśnia całą klasę mylących raportów. Klient, który się łączy, zgłasza sukces, a następnie wysyła ruch złą drogą, ma zwykle problem ze skryptem, a nie z tunelem, a ponowna instalacja formuły naprawia to tylko dlatego, że skrypt też jest instalowany ponownie. Sprawdź obecne wsparcie formuły dla macOS i architektury procesora, zanim zaczniesz na nim planować; Mac, który świetnie uruchamia powłokę, może wciąż nie mieć aktualnego pakietu zbudowanego dla niego.

Co naprawdę robi ścieżka źródeł

Archiwum wydania przychodzi z wygenerowanym systemem budowania, więc znany ./configure istnieje od początku. Klon git nie, ponieważ wygenerowane pliki są produktami budowania, a nie rzeczami, które projekt przechowuje. To cały powód, dla którego ./autogen.sh pojawia się w instrukcjach dla klonów, a nie dla archiwów wydania.

./autogen.sh
./configure
make
make install

Każdy wiersz robi coś konkretnego, a wiedza, który zawiódł, oszczędza wiele domysłów. Krok autogen uruchamia autotools, aby wytworzyć configure. Krok configure sprawdza kompilator, biblioteki i nagłówki potrzebne klientowi, a następnie zapisuje pliki makefile odzwierciedlające to, co znalazł. Krok make kompiluje. Krok install kopiuje wyniki gdzieś w twojej ścieżce.

To właśnie w tym ostatnim wierszu rady często się gubią. Instalacja nie jest dowodem, że budowanie się powiodło, a uruchamianie jej w dowolnym folderze pobierania z podwyższonymi uprawnieniami to dobry sposób na rozrzucenie plików, których później nie przypomnisz sobie. Jeśli configure zawiedzie z powodu brakującej biblioteki, użytecznym wynikiem jest pierwszy wypisany błąd, a nie ostatnie dwadzieścia wierszy dziennika.

Sesja i konfiguracja sieci są oddzielne

Ten podział decyduje o tym, czy połączenie naprawdę niesie ruch. Ustanowienie sesji TLS daje interfejs po stronie klienta. Zastosowanie tras, adresów i resolverów DNS to drugi krok wykonywany przez skrypt sieciowy, a budowanie, które wytworzyło plik binarny bez skryptu, ma połowę klienta.

Ten sam podział wyjaśnia, dlaczego dwie maszyny z identycznymi klientami zachowują się różnie: skrypt konsultuje konfigurację sieci systemu, a ta konfiguracja obejmuje wszystko inne, co rościło sobie prawo do trasy. Gdy podzielony tunel wysyła ruch w nieoczekiwane miejsce, tunel wykonuje swoją pracę, a zbadać trzeba decyzję o routingu.

Więc podczas debugowania pytaj, która warstwa zawiodła. Sesja, która nigdy się nie nawiązuje, to protokół, certyfikat lub dane logowania. Sesja, która się nawiązuje i nic nie przekazuje, to interfejs i skrypt. Zainstalowany klient, który działa z jednej sieci, a z innej nie, to osiągalność i żadne przebudowanie tego nie zmieni.

Wiedz, który plik binarny uruchamiasz

Ręcznie zainstalowane budowanie i spakowany plik binarny mogą spokojnie współistnieć, a to, który działa, zależy od twojej ścieżki, a nie od zamiarów. Dowiedz się tego, zanim zgłosisz komuś numer wersji.

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

Pierwsze polecenie wymienia każdą kopię, którą widzi twoja powłoka, w kolejności, w jakiej by ją wypróbowała. Drugie mówi, która odpowiedziała. Gdy to nie zgadza się z twoimi oczekiwaniami, uruchamiasz budowanie ze starego eksperymentu i żadna zmiana konfiguracji tego nie przesunie.

Zainstalowanie klienta nie jest zatwierdzeniem bramy

Działający plik binarny nie czyni wdrożenia zgodnym. Potwierdź protokół bramy, jej przepływ uwierzytelniania i wszelkie wymagania dotyczące zarządzanego urządzenia z ludźmi, którzy ją posiadają, ponieważ to fakty dotyczące polityki i warstwy aplikacji, których budowanie nie może dostarczyć.

Instrukcje budowania projektu omawiają dokładniej sekwencję autotools i wymóg skryptu sieciowego, i to ich należy przestrzegać, a nie wpisu na blogu starszego niż twoja wersja macOS. Jeśli celem jest tylko połączenie, weź pakiet, zachowaj skrypt i pozostaw kompilator na zewnątrz.

Powiązane artykuły