Ba con đường mang lại cho bạn một ứng dụng khách OpenConnect trên Mac, và chúng để lại những thứ khác nhau trên đĩa. Một công thức Homebrew cài một tệp nhị phân đã biên dịch cùng tập lệnh mạng thiết lập tuyến đường và DNS. Kho lưu trữ bản phát hành cho bạn mã nguồn với hệ thống biên dịch đã tạo. Bản sao git cho bạn mã nguồn mà không có nó. Chọn sai là lý do mọi người gặp configure bị thiếu vài phút sau khi bắt đầu hướng dẫn.

Hai cỗ máy khác nhau dưới cùng một cái tên

Con đường gói là một lệnh duy nhất, và đó là mặc định đúng cho bất kỳ ai mà công việc là kết nối chứ không phải phát triển.

brew install openconnect

Những gì nó cài đặt quan trọng hơn bản thân lệnh. Bạn nhận được tệp nhị phân của ứng dụng khách, và bạn cũng nhận được vpnc-script mà ứng dụng khách gọi để lập trình giao diện, các tuyến đường và bộ phân giải. Hai thứ hoạt động như một cặp: tệp nhị phân kết thúc phiên TLS và giao giao diện tạo ra cho tập lệnh, còn tập lệnh là phần biết hệ điều hành này muốn thay đổi mạng của nó như thế nào.

Sự tách biệt đó giải thích cả một lớp báo cáo gây khó hiểu. Một ứng dụng khách kết nối, báo thành công rồi gửi lưu lượng sai đường thường là vấn đề tập lệnh chứ không phải đường hầm, và việc cài lại công thức chỉ khắc phục được vì tập lệnh cũng được cài lại. Kiểm tra hỗ trợ hiện tại của công thức cho macOS và kiến trúc CPU trước khi lập kế hoạch dựa vào nó; một chiếc Mac chạy shell hoàn hảo vẫn có thể chưa có gói hiện tại nào được biên dịch cho nó.

Đường mã nguồn thực sự làm gì

Kho lưu trữ bản phát hành đi kèm hệ thống biên dịch đã tạo, nên ./configure quen thuộc có từ đầu. Bản sao git thì không, vì các tệp được tạo là sản phẩm biên dịch chứ không phải thứ dự án lưu trữ. Đó là toàn bộ lý do ./autogen.sh xuất hiện trong hướng dẫn cho bản sao chứ không phải kho lưu trữ bản phát hành.

./autogen.sh
./configure
make
make install

Mỗi dòng làm một việc cụ thể, và biết dòng nào thất bại tiết kiệm rất nhiều phỏng đoán. Bước autogen chạy autotools để tạo configure. Bước configure kiểm tra trình biên dịch, thư viện và tệp tiêu đề mà ứng dụng khách cần, rồi ghi các makefile phản ánh những gì nó tìm thấy. Bước make biên dịch. Bước install sao chép kết quả vào đâu đó trên đường dẫn của bạn.

Chính ở dòng cuối đó lời khuyên thường đi sai. Cài đặt không phải bằng chứng rằng quá trình biên dịch đã chạy, và chạy nó trong một thư mục tải xuống tùy tiện với quyền cao là cách tốt để rải những tệp bạn sẽ không nhớ sau này. Nếu configure thất bại vì thiếu thư viện, đầu ra hữu ích là lỗi đầu tiên nó in ra, không phải hai mươi dòng cuối của nhật ký.

Phiên và cấu hình mạng tách biệt nhau

Sự khác biệt này quyết định liệu một kết nối có thực sự mang lưu lượng hay không. Việc thiết lập phiên TLS cho bạn một giao diện ở phía ứng dụng khách. Áp dụng tuyến đường, địa chỉ và bộ phân giải DNS là bước thứ hai được thực hiện qua tập lệnh mạng, và một bản biên dịch tạo ra tệp nhị phân mà không có tập lệnh chỉ có nửa ứng dụng khách.

Cùng sự tách biệt đó giải thích tại sao hai cỗ máy có ứng dụng khách giống nhau lại hành xử khác nhau: tập lệnh tham vấn cấu hình mạng của hệ thống, và cấu hình đó bao gồm mọi thứ khác đã đòi một tuyến đường. Khi một đường hầm chia tách gửi lưu lượng đến một nơi không ngờ, đường hầm đang làm việc của nó và quyết định định tuyến mới là thứ cần xem xét.

Vì vậy khi gỡ lỗi, hãy hỏi lớp nào đã thất bại. Một phiên không bao giờ được thiết lập là giao thức, chứng chỉ hoặc thông tin đăng nhập. Một phiên được thiết lập mà không chuyển tiếp gì là giao diện và tập lệnh. Một ứng dụng khách đã cài hoạt động từ mạng này mà không từ mạng khác là khả năng tiếp cận, và không lượng biên dịch lại nào thay đổi điều đó.

Biết bạn đang chạy tệp nhị phân nào

Một bản biên dịch cài thủ công và một tệp nhị phân đóng gói có thể cùng tồn tại hòa bình, và cái nào chạy phụ thuộc vào đường dẫn của bạn chứ không phải ý định của bạn. Tìm hiểu điều này trước khi báo số phiên bản cho bất kỳ ai.

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

Lệnh đầu tiên liệt kê mọi bản sao mà shell của bạn nhìn thấy, theo thứ tự nó sẽ thử. Lệnh thứ hai cho bạn biết cái nào đã trả lời. Khi điều đó không khớp với kỳ vọng của bạn, bạn đang chạy một bản biên dịch từ thí nghiệm cũ, và không thay đổi cấu hình nào sẽ di chuyển nó.

Cài ứng dụng khách không phải là phê duyệt cổng

Một tệp nhị phân hoạt động không làm cho việc triển khai tương thích. Xác nhận giao thức của cổng, luồng xác thực và mọi yêu cầu thiết bị được quản lý với những người sở hữu nó, vì đó là những sự thật về chính sách và lớp ứng dụng mà một bản biên dịch không thể cung cấp.

Hướng dẫn biên dịch của dự án trình bày chi tiết hơn về trình tự autotools và yêu cầu tập lệnh mạng, và đó là tài liệu cần theo chứ không phải một bài blog cũ hơn phiên bản macOS của bạn. Nếu mục tiêu chỉ là kết nối, hãy lấy gói, giữ tập lệnh và để trình biên dịch ra ngoài.

Bài viết liên quan