Hai VPN trên một điện thoại: chọn cách bố trí, không phải số ứng dụng
Chuyển đổi, tách hồ sơ và một chuỗi lồng nhau là ba thiết kế khác nhau. Chọn theo điều ứng dụng cần tại cùng một thời điểm, rồi kiểm tra MTU và đường đi.
Dùng hai VPN không phải là một yêu cầu duy nhất. Nó có thể nghĩa là đến hai tổ chức lần lượt, giữ tách ứng dụng công việc và cá nhân, hoặc chạy một đường hầm bên trong một đường hầm khác. Android xử lý ba trường hợp đó theo những cách hoàn toàn khác nhau, và số ứng dụng VPN cài trên điện thoại không phải là kiến trúc. Câu hỏi phân biệt chúng rất đơn giản: hai đường đi có phải cùng tồn tại tại cùng một thời điểm cho cùng một ứng dụng hay không?
Ba cách bố trí, một câu hỏi
Nếu câu trả lời là không, vì hai mạng được dùng vào những thời điểm khác nhau, bạn cần một lần chuyển đổi có chủ đích. Nếu câu trả lời là không vì bản thân các ứng dụng đã tách rời, bạn cần tách hồ sơ, trong đó mỗi ứng dụng nằm trong ngữ cảnh sở hữu đường hầm của nó. Nếu câu trả lời là có, và một đường đi phải mang đường kia về mặt vật lý, bạn cần một chuỗi, và đây là cách duy nhất trong ba cách mà thứ tự là một phần của thiết kế.
Mọi thứ khác đều theo sau lựa chọn đó. Chuyển đổi có một cửa sổ chuyển tiếp, tách rời có một ranh giới chính sách, và một chuỗi có chi phí phụ trội và chi phí phụ thuộc. Chọn sai không thất bại một cách gọn gàng; nó tạo ra một điện thoại trông như đã kết nối và một ứng dụng không đến được đâu cả.
Chuyển đổi trong một ngữ cảnh người dùng
Android cho phép một dịch vụ VPN hoạt động cho mỗi người dùng. Khởi chạy ứng dụng VPN thứ hai trong cùng ngữ cảnh sẽ thay thế ứng dụng thứ nhất hoặc bị từ chối thẳng; nó không bao giờ hợp nhất hai tập tuyến đường và chắc chắn không xếp chồng mã hóa của chúng. Trong một người dùng, hai đường hầm là một chuỗi, không phải một tổng.
Điều đó khả thi khi việc truy cập thực sự tuần tự. Đặt tên hồ sơ để hồ sơ đang hoạt động rõ ràng, hoàn tất mọi việc nhạy cảm trước khi chuyển, và chờ đợi một cửa sổ ngắn mà trong đó không đường nào được thiết lập đầy đủ. Đóng một tab trình duyệt không giống như kết thúc một phiên: tab có thể giữ trạng thái tài khoản của nó và chỉ gửi yêu cầu tiếp theo qua mạng vừa được chọn, và đó chính là rò rỉ mà người ta nhận ra sau đó.
Điều chuyển đổi không thể mang lại là một cỗ máy ở trên cả hai mạng cùng lúc. Nếu một ứng dụng cần địa chỉ riêng từ mỗi phía, không mức kỷ luật máy khách nào tạo ra được.
Tách theo hồ sơ
Một hồ sơ công việc được quản lý là một người dùng riêng với ứng dụng, kho khóa và chính sách mạng của riêng nó. Một ứng dụng thư công việc có thể dùng đường hầm của tổ chức trong khi trình duyệt cá nhân dùng đường hầm cá nhân, và cả hai có thể kết nối cùng lúc vì chúng không ở trong cùng ngữ cảnh tranh nhau chỗ.
Việc tách cũng là ranh giới. Trình duyệt cá nhân không vay đường hầm công việc, không thấy các hậu tố DNS của công việc và không đến được mạng công việc chỉ vì cả hai dịch vụ hiển thị là đã kết nối. Khi ai đó báo rằng một liên kết không mở, hãy kiểm tra bản sao nào của ứng dụng đã xử lý nó và hồ sơ nào sở hữu tài khoản đó trước khi chạm vào bất kỳ VPN nào trong hai.
Hãy coi ranh giới là cố định. Tạo hồ sơ thứ hai hoặc xóa hồ sơ công việc để lách quyết định định tuyến của người sử dụng lao động sẽ phá hủy chính sự tách biệt đã làm cho cách bố trí hoạt động, và trên một thiết bị được quản lý thì đó thường là vi phạm chính sách chứ không phải điều chỉnh cấu hình.
Một chuỗi, nơi thứ tự là thiết kế
Một chuỗi là cách bố trí mà người ta thường muốn nói khi nói cả hai cùng lúc: đường hầm của điện thoại đi bên trong đường hầm của router. Nó có thể hoạt động, và các ràng buộc thì cụ thể. Nhà cung cấp bên ngoài phải cho phép một đường đi hoạt động đến điểm cuối VPN của điện thoại, điều này với các giao thức dựa trên UDP nghĩa là dịch vụ bên ngoài không được chặn hay giới hạn lưu lượng đó.
Hiểu ai thấy gì. Nhà cung cấp bên ngoài thấy một kết nối về phía điểm cuối bên trong. Nhà cung cấp bên trong nhận lưu lượng của điện thoại từ lối ra bên ngoài và chuyển tiếp. Đích cuối cùng thường thấy lối ra của dịch vụ bên trong, và không nhà cung cấp nào dọc chuỗi bị mù; tài khoản ứng dụng vẫn nhận diện người dùng bất kể đường đi.
Hãy chờ đợi chi phí thực tế. Mỗi lớp thêm đóng gói, nên MTU hiệu dụng giảm và một giá trị từng tốt cho một đường hầm nay bị phân mảnh hoặc tắc cho đến khi MTU của đường hầm bên trong được đặt một cách thận trọng. Hai lớp cũng có nghĩa là hai phụ thuộc lỗi và hai bộ thông điệp duy trì, và một đường hầm bên trong dựa trên TCP trên một liên kết bên ngoài có mất mát có thể tắc theo những cách trông như một máy chủ đã chết.
Quan trọng nhất, một chuỗi không hợp nhất hai mạng riêng. Các tuyến, tiền tố chồng lấn, phân giải DNS và quy tắc truy cập vẫn là những quyết định riêng, và một router mang một VPN trong khi điện thoại mang một VPN khác không cho điện thoại cả hai không gian địa chỉ.
Kiểm tra thiết kế trước khi gỡ lỗi
Viết cách bố trí trong một câu và thử nó với ứng dụng đã thất bại. Truy cập tuần tự nên cho thấy một đường hầm mỗi lần; tách hồ sơ nên cho thấy mỗi ứng dụng trong người dùng của nó; một chuỗi nên cho thấy đường hầm bên trong được thiết lập qua một giao diện bên ngoài chứ không phải giao diện vật lý.
adb shell ip -br addr
adb shell ip route get 10.20.0.8
adb shell dumpsys connectivity | grep -i vpnNếu việc tra tuyến nêu tên giao diện vật lý trong khi một ứng dụng chờ đường hầm, thiết kế và ngữ cảnh ứng dụng không đồng ý, và không ứng dụng VPN bổ sung nào hòa giải được chúng. Tài liệu về hồ sơ được quản lý bao gồm các quy tắc tách nếu bạn cần chi tiết chính sách chứ không phải chi tiết định tuyến.