Mở một URL riêng tư và hy vọng đường hầm lên trước là một cuộc đua, và thường thì trình duyệt thắng. Một lối tắt phản ứng với trang đang tải đã bỏ lỡ truy vấn DNS và thường cả kết nối đầu tiên, đúng là phần cần VPN. Quy trình phải sở hữu thứ tự thay vì quan sát nó. Ba điều kiện quyết định liệu quy trình đó có thuộc về Tasker hay không.

Một điểm vào duy nhất nên sở hữu trình tự

Hãy cho dịch vụ riêng tư một điểm vào duy nhất đã được phê duyệt, và để điểm vào đó thực hiện các bước theo thứ tự. Xác thực đích đến, chọn hồ sơ dự định, yêu cầu kết nối, chờ kết quả sẵn sàng với giới hạn về thời gian bạn sẽ chờ, và chỉ khi đó mới mở URL. Nếu bất kỳ bước nào thất bại, hãy dừng lại và nói rõ điều đó thay vì chuyển sang mở trực tiếp.

Chính mệnh đề cuối cùng đó là thứ người ta bỏ qua. Một quy trình vẫn mở URL khi hết thời gian còn tệ hơn không có tự động hóa, vì nó tạo ra một yêu cầu trông như VPN thất bại trong khi chưa bao giờ dùng đến.

1. validate destination against the approved list
2. select the intended VPN profile
3. request connection through the client's supported interface
4. wait for readiness, maximum 20 seconds
5. open the URL only if readiness succeeded
6. on timeout, stop and report

Danh sách đánh số ở trên là hợp đồng, không phải hồ sơ đã xuất. Mỗi ứng dụng khách triển khai bề mặt điều khiển theo cách khác nhau, và một số yêu cầu plugin, quyền điều khiển rõ ràng hoặc sự đồng ý một lần của người dùng mà không tự động hóa nào có thể cung cấp.

Đã kết nối không giống như đã sẵn sàng

Một trạng thái nói rằng đường hầm đã khởi động chứng minh rằng ứng dụng khách đã chấp nhận yêu cầu. Nó không chứng minh rằng trình phân giải giờ trả về địa chỉ riêng tư hay dịch vụ dự định có thể truy cập được. Đó là những kết quả riêng biệt, và khoảng cách giữa chúng là nơi một lối tắt mở quá sớm thất bại âm thầm. Ứng dụng khách báo cáo trạng thái của chính nó, không phải trạng thái của đường đi mà URL sẽ dùng.

Xác định mức sẵn sàng dựa trên điều mà quy trình có thể quan sát. Trạng thái kết nối từ ứng dụng khách, một địa chỉ được phân giải từ dải mong đợi hoặc một phép thử khả năng tiếp cận dịch vụ cụ thể đều dùng được, miễn là phép thử không thể quay lại đường mạng thông thường. Một phép thử thành công qua tuyến bình thường không cho bạn biết gì.

Giới hạn thời gian chờ. Một điều kiện sẵn sàng không có thời hạn biến hồ sơ hỏng thành một lối tắt bị treo, và người dùng báo cáo đó là điện thoại đóng băng chứ không phải sự cố VPN.

Tasker có thể và không thể làm gì

Tasker cung cấp chất keo: một trình kích hoạt, danh sách hành động có thứ tự, điều kiện và một hành động URL. Hành động mở URL chỉ thực hiện bước mở và không gì khác. Bước kết nối phải đến từ ứng dụng khách VPN, thông qua plugin, intent hoặc dịch vụ được công khai mà ứng dụng khách ghi lại và cho phép.

Ví dụ, OpenVPN for Android ghi lại một giao diện điều khiển từ xa xây dựng trên AIDL và intent. Đó là khả năng của ứng dụng khách đó, không phải giấy phép để bất kỳ tác vụ nào trên thiết bị điều khiển nó. Chỉ cấp quyền điều khiển cho ứng dụng bạn dự định, vì một lớp tự động hóa có thể kết nối và ngắt đường hầm là một bề mặt điều khiển đáng được bảo vệ.

Nếu ứng dụng khách đã cài không công khai cơ chế điều khiển được hỗ trợ nào, câu trả lời trung thực là quy trình này không thể xây dựng trên ứng dụng khách đó. Một trang so sánh tính năng cũ không phải là đặc tả khả năng cho phiên bản trên điện thoại.

Khi ranh giới phải là bắt buộc

Tự động hóa là một tiện ích, và tiện ích không thể thực thi một ranh giới bảo mật. Nếu yêu cầu là các ứng dụng được bao phủ không bao giờ liên lạc mà không có VPN, hãy dùng cài đặt VPN luôn bật và chặn của nền tảng, hoặc cấu hình được quản lý tương đương. Một sự kiện trình duyệt xảy ra sau khi điều hướng bắt đầu không thể thay thế việc thực thi đó, dù tác vụ có được sắp xếp cẩn thận đến đâu.

Hãy quyết định bạn đang xây cái nào. Một lối tắt kết nối trước rồi mới mở là hữu ích và nó không phải bảo đảm. Một thiết bị được quản lý có chặn đang bật là bảo đảm và nó không cần trình tự Tasker nào cả.

RequirementMechanism
Open the page after the tunnel is readyOrdered task with a bounded readiness wait
Never allow traffic outside the tunnelAlways-on VPN with blocking, or managed policy
Only some apps use the tunnelPer-app VPN or work-profile scope
Different URL every timeValidate the input before opening it

Hãy thử ba kết cục, không phải một

Chạy quy trình với một kết nối thành công, một lần hết thời gian có chủ đích và một lần kết nối lại bình thường sau khi đường hầm rơi. Trường hợp hết thời gian là trường hợp cho thấy trình tự có thực sự dừng hay không, và trường hợp kết nối lại cho thấy mức sẵn sàng được kiểm tra hay chỉ được giả định từ một thành công trước đó. Chạy trường hợp hết thời gian trước, vì một quy trình bỏ qua thất bại không đáng để thử cho thành công.

Chỉ cho phép các đích từ danh sách đã phê duyệt, và kiểm tra mọi liên kết đến từ bên ngoài trước khi mở. Một tác vụ chấp nhận liên kết tùy tiện biến thành cách khởi chạy các lược đồ bất ngờ, và một trang quản trị riêng tư đến được theo cách đó là kết quả tệ hơn một lối tắt thất bại.

Ghi lại hồ sơ, điều kiện sẵn sàng và thời hạn bên cạnh tác vụ. Người tiếp theo thay đổi ứng dụng khách VPN sẽ cần cả ba, và không cái nào nhìn thấy được từ biểu tượng lối tắt.

Bài viết liên quan