Tuần trước, một đồng nghiệp đưa tôi chiếc iPhone của anh ấy với hai mục VPN trong Cài đặt: một mục do ứng dụng nhà cung cấp để lại, mục kia từ hồ sơ IKEv2 dán từ trang hỗ trợ. Chúng không phải hai phiên bản cạnh tranh của cùng một thứ. Ứng dụng nhà cung cấp là một vùng chứa có thể mang mã đường hầm riêng, còn ứng dụng khách tích hợp của Apple là ứng dụng khách IKEv2, được cấu hình thủ công hoặc bằng hồ sơ. Giao thức, cách xử lý thông tin xác thực, kiểm soát thiết bị và khôi phục quyết định lựa chọn.

Ứng dụng và ứng dụng khách gốc nằm ở các tầng khác nhau

Ứng dụng khách VPN tích hợp của Apple thực tế là ứng dụng khách IKEv2. Biểu mẫu thủ công vẫn liệt kê L2TP trên IPsec và các tùy chọn Cisco IPsec đã lỗi thời, nhưng không có trường vận chuyển của nhà cung cấp và không có chỗ để dán cấu hình OpenVPN hay WireGuard. Bạn hoặc điền biểu mẫu trong Cài đặt > Chung > VPN & Quản lý thiết bị, hoặc nhập hồ sơ có tải trọng VPN; bề mặt là địa chỉ máy chủ, hai danh tính, một phương thức xác thực và các quy tắc theo yêu cầu tùy chọn.

Ứng dụng nhà cung cấp làm việc ở tầng cao hơn. Nó cung cấp nhà cung cấp đường hầm gói Network Extension, nên mã giao thức và logic định tuyến nằm trong ứng dụng còn iOS chỉ chuyển tiếp gói. Một số ứng dụng triển khai WireGuard hoặc OpenVPN, số khác dùng vận chuyển bị che giấu riêng, và một vài ứng dụng chỉ cài hồ sơ IKEv2 rồi điều khiển ứng dụng khách gốc sau một màn hình đẹp hơn. Chính nhóm cuối khiến lựa chọn ứng dụng hay hồ sơ đôi khi là lựa chọn giả.

Hệ quả rất thực tế: tệp .ovpn hay WireGuard không thay thế các trường đó, vì bắt tay là giao thức khác.

Đọc tải trọng trước khi so sánh tính năng

Khi hồ sơ là IKEv2, các khóa trong tải trọng giải thích nhiều lỗi hơn mọi so sánh tính năng. Tài liệu tham chiếu cài đặt IKEv2 của Apple ghi lại từng khóa; tải trọng rút gọn trông như sau:

<key>VPNType</key><string>IKEv2</string>
<key>RemoteAddress</key><string>vpn.example.net</string>
<key>RemoteIdentifier</key><string>vpn.example.net</string>
<key>LocalIdentifier</key><string>[email protected]</string>
<key>AuthenticationMethod</key><string>Certificate</string>
<key>ServerCertificateIssuerCommonName</key><string>Example Issuing CA</string>

Ba trường mang phần lớn trọng lượng chẩn đoán. RemoteIdentifier là tên mà ứng dụng khách mong máy chủ trình bày, nên một cổng sau NAT hoặc bộ cân bằng tải có chứng chỉ ghi tên nhóm thay vì địa chỉ sẽ thất bại dù địa chỉ đúng. LocalIdentifier là danh tính mà máy chủ cho là bạn, và với xác thực bằng chứng chỉ, nó phải khớp với danh tính được gán cho tài khoản của bạn. ServerCertificateIssuerCommonName ghim CA phát hành, nên hồ sơ có thể hỏng vào ngày chứng chỉ được cấp lại, mà không có thông báo lỗi nào nhắc đến chứng chỉ.

Nếu AuthenticationMethod bằng SharedSecret, máy chủ đang xác thực người dùng EAP và bí mật bạn nhận được thực chất là thông tin đăng nhập tài khoản. Điều đó quan trọng khi nhà cung cấp gửi hai tài liệu, một cho tên người dùng và mật khẩu, một cho chứng chỉ, và chỉ một khớp với thứ bạn đã nhập.

Ứng dụng làm được gì mà ứng dụng khách gốc không

Lựa chọn giao thức là lợi thế rõ ràng. Nếu máy chủ của bạn nói WireGuard hoặc OpenVPN, ứng dụng là ứng dụng khách iOS duy nhất dùng được, và sửa biểu mẫu gốc sẽ không thương lượng được điều đó. Ứng dụng cũng có thể triển khai đường hầm chia tách theo đích hoặc theo ứng dụng, tự xử lý DNS, chặn kiểu kill switch, chọn máy chủ và kết nối lại được điều chỉnh cho mạng của chính nó.

Cái giá là phần mềm bạn chưa kiểm toán, chạy với đặc quyền của một tiện ích mạng. Chất lượng dao động nhiều hơn mô tả trên cửa hàng: một ứng dụng kết nối lại sạch sẽ trong khi ứng dụng khác rò rỉ vài giây sau khi đổi mạng, và kill switch bên trong ứng dụng là tính năng của ứng dụng đó, không phải của iOS. Trên thiết bị được quản lý, hãy kiểm tra danh sách được duyệt trước.

Hồ sơ IKEv2 tích hợp làm đúng điều gì

Ít bộ phận chuyển động là toàn bộ lập luận. Ứng dụng khách IKEv2 và ngăn xếp IPsec đi kèm hệ điều hành, nên không có tiện ích mở rộng nào có thể sụp, không có tiến trình theo từng ứng dụng phải giữ sống, và không có chu kỳ cập nhật của bên thứ ba giữa bạn và một đường hầm đang chạy. Hồ sơ cũng có thể bị khóa: trên thiết bị được giám sát, người dùng không thể gỡ thứ mà quản lý đã cài, và Always On VPN, thứ tự kết nối lại trên mọi mạng mà không cần công tắc người dùng, chỉ tồn tại ở dạng được giám sát, quản lý bằng hồ sơ đó.

Điều mà con đường tích hợp không cho là tính linh hoạt. Không có VPN theo từng ứng dụng nếu không có ứng dụng được quản lý, không có kill switch cho người dùng, và không có vận chuyển trông như HTTPS trên mạng chặn IPsec. Trong mạng khách sạn loại bỏ UDP 500 và 4500, IKEv2 tích hợp không có đường lui.

Một bảng quyết định giải quyết phần lớn trường hợp

Trên thực tế, câu hỏi giao thức quyết định phần lớn trường hợp trước khi tính năng trở nên quan trọng.

What you were givenDevice situationWhat to use
An .ovpn or WireGuard configPersonal phoneProvider app; the native form cannot load it
IKEv2 host plus CA namePersonal or managedProfile, or the app's own IKEv2 mode
IKEv2 with username and secretPersonal phoneEither; the profile is simpler if you never switch servers
A management-installed profileSupervised, MDMNative client; do not add a second app entry
A per-app tunnelling requirementPersonal phoneApp, or accept a full tunnel; iOS cannot split by app without management
IPsec blocked on your main networkAnyApp with a transport that survives the block

Hai hàng đáng xem lại. Yêu cầu theo từng ứng dụng trên điện thoại cá nhân là trường hợp mọi người đọc sai: cài đặt có trong iOS nhưng do quản lý điều khiển, nên thiết bị không được quản lý sẽ không cung cấp nó. Mạng bị chặn không phải lý do để không tin IKEv2; đó là lý do ứng dụng của nhà cung cấp tồn tại.

Kiểm chứng lựa chọn bằng một lần chạy thử

Hãy thử các chế độ hỏng, không phải nút kết nối. Kết nối một lần, xác nhận biểu tượng VPN xuất hiện, rồi mở trang trả lại địa chỉ công khai và so với lần trước. Chuyển từ Wi-Fi sang dữ liệu di động mà không chạm vào VPN và theo dõi việc kết nối lại, sau đó cho điện thoại qua chế độ máy bay. Khởi động lại và xem đường hầm có tự trở lại không: hồ sơ có OnDemandEnabled thì nên, trong khi nhiều ứng dụng phải được mở trước.

Khi nó không trở lại, hãy tách lỗi theo việc có đường hầm hay không. Không có biểu tượng VPN nghĩa là đường hầm chưa từng lên: hoặc bắt tay hỏng ở RemoteIdentifier, CA được ghim hoặc thông tin đăng nhập, hoặc kết nối chưa từng được thử vì quy tắc theo yêu cầu không khớp và không ứng dụng nào khởi động nó. Có biểu tượng nhưng lưu lượng hỏng nghĩa là định tuyến, DNS hoặc chính sách phía máy chủ, và cài lại ứng dụng khách không chạm vào bất kỳ điều nào trong đó.

Một danh sách ngắn để thiết bị có thể giải thích được cho người tiếp theo:

  • một mục VPN, không phải hai;
  • hồ sơ hoặc ứng dụng được đặt tên theo máy chủ mà nó kết nối;
  • các giá trị danh tính được ghi lại ở nơi bạn tìm thấy.

Bắt đầu từ hàng giao thức trong bảng, và dừng ở đó nếu nó trả lời câu hỏi.

Bài viết liên quan