Máy khách VPN trên Mac: Network Extension đối đầu System Extension
Network Extension là một khả năng và System Extensions là một cơ chế phân phối: tách hai thứ để chọn bước phê duyệt trên macOS và nhật ký cần đọc.
Hai thuật ngữ Apple được dùng như thể chúng gọi cùng một thứ, và sự nhầm lẫn đó đưa người ta đến bảng cài đặt sai. Network Extension mô tả một khả năng: cách được hỗ trợ để triển khai đường hầm VPN, proxy và bộ lọc. System Extensions mô tả cơ chế phân phối và phê duyệt cho tiện ích mở rộng trong không gian người dùng. Một máy khách VPN Mac hiện đại thường cần cả hai, nên không nhãn nào tự giải thích một triệu chứng. Tách hai thứ trả lời nên kiểm tra thành phần nào và nên chờ bước phê duyệt nào.
Hai câu hỏi, không phải một nhãn
Hỏi thành phần làm gì trước khi hỏi nó được cài đặt thế nào. Khả năng quyết định lớp nhà cung cấp nào tồn tại và do đó mã nào xử lý gói của bạn. Cơ chế phân phối quyết định tệp nhị phân đến thế nào, được phê duyệt ra sao và trạng thái của nó được ghi ở đâu. Một sản phẩm có thể triển khai đường hầm gói mà không phân phối tiện ích mở rộng hệ thống trên các bản phát hành cũ, và có thể phân phối tiện ích mở rộng hệ thống triển khai thứ khác ngoài đường hầm.
Tiện ích mở rộng kernel là thuật ngữ thứ ba mà người ta trộn vào. Chúng là cách cũ để chạy mã mạng có đặc quyền, chúng cần những phê duyệt khác, và Apple đã nhiều năm hướng nhà phát triển ra xa chúng. Áp dụng công thức phê duyệt tiện ích mở rộng kernel cho một máy khách hiện đại chỉ tốn thời gian vào hộp thoại sẽ không bao giờ hiện ra.
Đọc ghi chú triển khai của nhà cung cấp cho phiên bản macOS bạn đang chạy thay vì một bài đăng diễn đàn từ bản phát hành trước. Kiến trúc đã thay đổi nhiều lần, và hướng dẫn nhanh lỗi thời. Một ghi chú nhắc đến phê duyệt tiện ích mở rộng kernel mô tả một thời đại khác của sản phẩm.
Network Extension cung cấp gì
Khung cung cấp các loại nhà cung cấp cho công việc mạng thông thường: đường hầm gói cho lưu lượng VPN, proxy ứng dụng cho luồng theo từng ứng dụng, bộ lọc nội dung để kiểm tra lưu lượng và xử lý proxy DNS cho hành vi của bộ phân giải. Loại nhà cung cấp quyết định tiện ích mở rộng làm được gì, và một máy khách phân phối hai nhà cung cấp có thể đang làm hai việc khác nhau.
Điều đó quan trọng khi chẩn đoán vì cùng một triệu chứng kết nối có thể đến từ đường hầm, bộ lọc hoặc proxy DNS. Chặn một trang web là quyết định của bộ lọc, không đến được mạng con riêng thường là quyết định của đường hầm, và phân giải sai địa chỉ thường là quyết định của bộ phân giải. Gọi tên loại nhà cung cấp thu hẹp tìm kiếm trước khi đọc bất kỳ nhật ký nào.
Không có gì trong khung ngụ ý một lập trường về quyền riêng tư. Tiện ích mở rộng trong không gian người dùng vẫn có quyền, cấu hình và một nhà vận hành phía sau, nên hãy coi kiến trúc là chi tiết triển khai chứ không phải tín hiệu tin cậy. Hỏi ai vận hành điểm cuối và nó được cấu hình để thu thập gì.
System Extensions thay đổi điều gì
Cơ chế chuyển mã đặc quyền ra khỏi kernel vào không gian người dùng, và nó thay đổi cách hệ điều hành yêu cầu sự đồng ý. Kích hoạt là bước riêng so với cài đặt, và người dùng hoặc hồ sơ MDM phải cho phép. Một máy khách cài đặt nhưng không bao giờ kích hoạt có vẻ hiện diện trong thư mục Applications và không làm gì cho kết nối.
Trạng thái được hệ thống ghi lại chứ không phải ứng dụng, điều này hữu ích vì có thể truy vấn. Lệnh bên dưới liệt kê các tiện ích mở rộng mà hệ thống biết và trạng thái kích hoạt của chúng.
systemextensionsctl list
scutil --nc list
Lệnh đầu tiên trả lời thành phần đã được cài và kích hoạt chưa. Lệnh thứ hai liệt kê các cấu hình VPN mà hệ thống giữ, đây là câu hỏi khác và thường là câu hỏi quan trọng khi thiếu hồ sơ kết nối thay vì nó bị hỏng.
Nên kiểm tra cái nào cho một triệu chứng nhất định
Ghép triệu chứng với tầng trước khi mở bảng cài đặt. Cấu hình thiếu là câu hỏi về hồ sơ, thành phần đã cài nhưng không hoạt động là câu hỏi về phân phối, và thành phần đang hoạt động không cho lưu lượng đi qua là câu hỏi về khả năng.
| Symptom | First place to look |
|---|---|
| No VPN entry at all | Configuration profile or scutil list |
| Client installed, nothing happens | Extension activation state |
| Tunnel up, private host unreachable | Tunnel provider routes and policy |
| One app blocked, others fine | Filter or app proxy provider |
Luồng nhật ký là bằng chứng chung cho hai hàng cuối. Đọc hệ thống con tiện ích mở rộng mạng cho biết nhà cung cấp nào xử lý luồng, và quyết định của bộ lọc trông khác với lỗi đường hầm ngay cả khi người dùng mô tả cả hai là VPN hỏng.
log show --last 10m --predicate 'process == "nesessionmanager"'
Đừng kết luận tiện ích mở rộng đang hoạt động vì có biểu tượng trên thanh menu. Biểu tượng tồn tại sau các lần kích hoạt thất bại, và biểu tượng cũ là một trong những lý do phổ biến nhất khiến cuộc gọi hỗ trợ bắt đầu sai chỗ. Thay vào đó hãy đọc trạng thái kích hoạt, vì hệ thống ghi lại chính nó.
Phê duyệt, MDM và huyền thoại tiện ích mở rộng kernel
Trên Mac được quản lý, bước phê duyệt thuộc hồ sơ MDM, và người dùng bấm Allow trong System Settings vẫn có thể bị chặn bởi chính sách chưa được cập nhật. Hỏi nhóm máy tính để bàn cơ chế nào phê duyệt tiện ích mở rộng cho nhóm máy đó trước khi yêu cầu người dùng bấm bất cứ thứ gì.
Trên Mac không được quản lý, lời nhắc phê duyệt xuất hiện một lần và việc từ chối có thể kéo dài cho đến khi tiện ích mở rộng được cài lại. Hành vi đó giải thích chiếc máy nơi máy khách từng hoạt động trước khi nâng cấp hệ điều hành và giờ báo cáo kết nối không bao giờ được thiết lập.
Ghi lại loại nhà cung cấp, trạng thái kích hoạt và cơ chế phê duyệt cho máy khách bạn triển khai. Ba sự thật đó trả lời phần lớn câu hỏi tương lai về VPN trên Mac mà không mở lại tranh luận khả năng so với phân phối.