Cụm từ VPN tích hợp trên Android bao gồm hai thứ không liên quan: một bản triển khai giao thức do nền tảng chạy thay bạn, và hình thức cài đặt mà nhà sản xuất quyết định phơi ra. Đây không phải cùng một đối tượng, và không cái nào bảo đảm đường hầm thuộc về người dùng mà các ứng dụng của họ cần đến nó. Việc tạo lập diễn ra trong một người dùng cụ thể với một gói gọi cụ thể, và mọi thứ tiếp theo thừa hưởng ngữ cảnh đó. Hãy đọc chuỗi sở hữu trước khi đọc màn hình cài đặt.

Nền tảng dựng gì cho bạn

Từ Android 11, nền tảng cung cấp việc tạo lập VPN qua VpnManager. Một ứng dụng đã được phê duyệt mô tả hồ sơ IKEv2, và nền tảng tự chạy trao đổi IPsec và IKE, nên ứng dụng không bao giờ chạm vào gói tin. Đó là khác biệt có ý nghĩa so với ứng dụng VPN tự viết, vốn triển khai VpnService và dựng đường hầm trong tiến trình của chính nó.

val profile = Ikev2VpnProfile.Builder(serverAddress, identity)
    .setAuthUsernamePassword(user, secret, rootCa)
    .build()
getSystemService(VpnManager::class.java).provisionVpnProfile(profile)

Lệnh gọi trên chỉ là phác thảo hình dạng chứ không phải khối sao chép: builder có vài biến thể xác thực, chúng khác nhau theo cấp API, và hồ sơ còn mang vật liệu tin cậy của chứng chỉ máy chủ. Điều quan trọng cho câu hỏi sở hữu thì hẹp hơn cú pháp.

Hai tính chất rút ra từ thiết kế này. Hồ sơ là dữ liệu, nên quản trị viên có thể tạo lập thay vì gõ tay. Và đường hầm là mạng của nền tảng, nên ứng dụng thấy nó như một mạng có vận chuyển VPN chứ không phải socket của ứng dụng khác.

Sở hữu là người dùng, rồi đến gói

Đa người dùng trên Android là tách biệt thật sự, không phải nhãn. Hồ sơ công việc là một người dùng riêng với các gói đã cài riêng, dữ liệu ứng dụng riêng, keystore riêng và các neo tin cậy riêng. Cùng một sản phẩm cài ở cả hai nơi là hai thực thể với mã người dùng khác nhau, kể cả khi biểu tượng trình khởi chạy và tên sản phẩm giống hệt nhau.

Việc tạo lập được ghi nhận theo gói gọi trong người dùng đó. Vì thế một ứng dụng tạo lập chạy trong hồ sơ cá nhân tạo ra đường hầm cá nhân, và các ứng dụng công việc trong hồ sơ công việc không thấy gì từ nó. Điều ngược lại cũng đúng, và đó là lý do đường hầm của hồ sơ công việc vô hình với ứng dụng cá nhân nếu không có chính sách rõ ràng nói khác.

Bộ điều khiển chính sách thiết bị có thể tạo lập thay cho hồ sơ được quản lý, và điều đó giải thích mục mà không ai trong văn phòng nhớ đã tạo ra. Nếu bạn đang kiểm toán một chiếc điện thoại, đó là chủ nhân khả dĩ của một hồ sơ bị làm xám, và xóa nó như một thử nghiệm không phải việc của bạn.

Ba cổng trước khi một gói tin di chuyển

Cổng thứ nhất là thẩm quyền: bộ phận quản lý phải cho phép VPN ngay từ đầu, và một số triển khai còn giới hạn cả loại chứ không chỉ sự tồn tại. Cổng thứ hai là danh tính: chứng chỉ máy khách hoặc thông tin đăng nhập phải có sẵn trong người dùng sở hữu hồ sơ, vì chứng chỉ nhập vào keystore cá nhân không hiển thị với hồ sơ công việc.

Cổng thứ ba là sự đồng ý và chính sách. Người dùng thường phê duyệt kết nối lần đầu sử dụng, và quản trị viên có thể ghim nó thành luôn bật, tùy chọn kèm khóa để lưu lượng không thể ra ngoài đường hầm. Những cài đặt đó quyết định điều gì xảy ra khi đường hầm sập, và đó là phần người dùng nhận thấy.

Phạm vi là nơi ba thứ gặp nhau. Hồ sơ quyết định cổng vào và danh tính, trong khi lớp chính sách quyết định ứng dụng nào được dùng đường hầm và liệu lưu lượng có bị buộc đi qua đó không. Vì thế hai chiếc điện thoại có cùng địa chỉ cổng vào có thể hành xử rất khác nhau.

Vì sao kết nối cá nhân không bao phủ ứng dụng công việc

Lưu lượng từ ứng dụng công việc sinh ra trong người dùng công việc, và chính sách mạng áp dụng là chính sách trong người dùng đó. Một đường hầm dựng trong hồ sơ cá nhân không mang nó đi, dù chỉ báo trông khỏe đến đâu. Riêng sự thật đó giải thích phần lớn các báo cáo nơi người dùng thề rằng VPN đã kết nối mà một ứng dụng cụ thể vẫn không tới được dịch vụ nội bộ.

Việc phân giải tên theo cùng ranh giới. Hậu tố DNS riêng và neo tin cậy là theo người dùng, nên một tên máy chủ nội bộ phân giải được trong hồ sơ cá nhân có thể thất bại trong hồ sơ công việc ngay cả với đường hầm trông tương đương, vì chính sách trình phân giải và kho CA là hai đối tượng khác nhau.

Kiểm chứng trên một lượt ghi danh thật, không phải điện thoại phòng thí nghiệm

Trên thiết bị, trước hết xác định chủ sở hữu mục: người dùng nào, gói nào, và hồ sơ đến từ bộ tạo lập của nền tảng hay từ một ứng dụng tự triển khai dịch vụ VPN. Sau đó xác nhận danh tính mà hồ sơ mong đợi thực sự có trong keystore của người dùng đó.

Hãy thử vòng đời, không chỉ kết nối. Đăng nhập, mở khóa kho thông tin đăng nhập, để hồ sơ công việc tạm dừng buổi tối, rồi đưa nó trở lại và kiểm tra đường hầm có trở lại mà không cần chạm tay hay không. Một hồ sơ công việc tắt sau giờ làm sẽ mang theo đường hầm, và đó là hành vi mong đợi chứ không phải lỗi, miễn là trạng thái không khả dụng mong đợi được ghi lại.

Cuối cùng, thử chính ứng dụng công việc với một điểm cuối nội bộ đã biết và so sánh với kết quả của hồ sơ cá nhân. Hai bên được phép khác nhau; điều không được khác là mô hình sở hữu. Nếu đường hầm thuộc sai người dùng, cấp lại chứng chỉ bao nhiêu lần cũng không sửa được.

Đừng ép vấn đề bằng cách khởi chạy các activity cài đặt ẩn để lộ menu, và đừng sao chép khóa riêng giữa các hồ sơ để một kết nối trông như có. Tài liệu tham chiếu VpnManager ghi rõ người gọi được phép tạo lập gì; nếu đường đi được phê duyệt không bao gồm trường hợp của bạn, đó là quyết định của quản trị viên chứ không phải vấn đề cài đặt.

Bài viết liên quan