Lầm tưởng là L2TP trên Android là một thứ nữa mà script shell có thể khởi động: thêm tuyến, gọi dịch vụ cũ, xong. Không thể như vậy, vì bốn lớp khác nhau phải đồng ý trước khi một đường hầm mang gói tin. IPsec bảo vệ đường đi, L2TP mang phiên, PPP thương lượng liên kết, và Android phải đăng ký kết quả như một VPN mà nó có thể định tuyến vòng quanh. Tôi đã thấy việc này được thử hai lần bằng các lệnh sao chép, và cả hai lần tuyến đều tồn tại trong khi không có gì được mã hóa.

Thay đổi tuyến thực sự đạt được gì

Thêm một tuyến quyết định gói tin đi đâu tiếp theo. Nó không thương lượng một hiệp hội bảo mật, không mở phiên L2TP và không chạy trao đổi PPP tạo ra địa chỉ, peer và cài đặt DNS. Trên điện thoại, kết quả nhìn thấy được là lưu lượng đi ra sai đường, hoặc đi ra rồi chết, không có trạng thái đường hầm ở đâu cả.

Điều tương tự đúng với một lời gọi dịch vụ sao chép từ bản phát hành cũ. Phần ống VPN nội bộ của Android không phải API tự động hóa được công bố, và một giao dịch có số từ phiên bản khác có thể đụng vào thao tác khác hoặc đòi quyền mà script không có. Tự động hóa mang mật khẩu không bao giờ nên phụ thuộc vào các đối số nội bộ đoán mò, vì chế độ lỗi là no-op im lặng hoặc một hồ sơ tạo dở không ai dọn.

Bốn chủ sở hữu, và script không phải bên nào

Hãy lấy chúng theo thứ tự. IPsec thiết lập và duy trì đường đi được bảo vệ và xác thực các peer. L2TP mang phiên trên đó, và cách phân lớp này là lý do chuẩn coi chúng là hai cơ chế riêng chứ không phải một giao thức. Bên trong đó, PPP thương lượng các tham số liên kết mà client sẽ dùng. Sau đó Android sở hữu phía nền tảng: giao diện VPN đã đăng ký, phạm vi theo ứng dụng, trạng thái always-on và vòng đời quyết định điều gì xảy ra khi ứng dụng bị giết.

Script chỉ có thể thấy lớp cuối cùng trong số đó, và thường là gián tiếp. Nó có thể yêu cầu client kết nối nếu client đó để lộ điều khiển được ghi tài liệu, và sau đó theo dõi trạng thái giao diện. Nó không thể thay thế ba lớp bên dưới, và không thể khiến nền tảng coi một giao diện chưa đăng ký là VPN.

Vì sao một daemon cũng không phải lối tắt

Khởi động một daemon Linux có đặc quyền trên thiết bị trông như mảnh còn thiếu, và thường nó thực sự dựng được đường hầm. Điều nó không làm là đăng ký đường hầm đó với Android. Giao diện tồn tại trong kernel, nhưng việc chọn VPN của nền tảng, định tuyến theo ứng dụng, chính sách always-on và vòng đời không biết về nó, và các thay đổi tuyến cùng DNS của chính daemon cạnh tranh với trình quản lý mạng cho cùng các bảng.

Kết quả là một kết nối hoạt động với lưu lượng của daemon và một cách bí ẩn không hoạt động với ứng dụng bạn quan tâm, hoặc một kết nối tồn tại cho đến khi hệ thống đánh giá lại các mạng của nó. Không kết quả nào là lỗi nền tảng; đó là ranh giới giữa sở hữu một socket và sở hữu tiện ích VPN.

Các tuyến được hỗ trợ trông thế nào

Nếu tổ chức có thể chuyển sang hồ sơ do chính Android cung cấp, con đường nền tảng là trung thực. Từ API 30, VpnManager hỗ trợ việc ứng dụng cung cấp và kiểm soát hồ sơ VPN của nền tảng, với luồng ủy quyền gắn với ứng dụng gọi. Đây không phải bộ chuyển đổi L2TP: mô hình hồ sơ nó cung cấp cho IKEv2 không dịch một cấu hình L2TP hiện có, và đổi giao thức là di chuyển, không phải đổi tên. Danh tính, tuyến, DNS riêng và quyền truy cập phải được chuyển một cách có chủ đích.

Nếu dịch vụ phải giữ L2TP/IPsec, tổ hợp được hỗ trợ là một client và bản phát hành hệ điều hành mà nhà vận hành thực sự ghi tài liệu, cùng hợp đồng tự động hóa của nó nếu có. Khi không có điều khiển không giám sát được ghi tài liệu, câu trả lời đúng là một kết nối thủ công được hỗ trợ, không phải một script đặc quyền mong manh tình cờ chạy trên một bản dựng.

Tự động hóa đúng làm gì

Khi có điều khiển được ghi tài liệu, tự động hóa có một việc nhỏ và có thể bảo vệ: yêu cầu kết nối có tên, chờ sẵn sàng, dừng khi xác thực hoặc cấu hình thất bại, chạy khối lượng công việc dự định và để việc dọn dẹp cho thành phần sở hữu kết nối. Thông tin đăng nhập ở lại với client biết cách lưu trữ và luân chuyển chúng.

Ghi ra thành phần nào sở hữu lớp nào trước khi viết dòng đầu tiên, và kiểm tra kết quả theo đó:

  • IPsec và PPP do client xử lý, không phải các tuyến của script.
  • Kết nối xuất hiện trong trạng thái VPN của nền tảng, nên phạm vi theo ứng dụng và always-on áp dụng cho nó.
  • Không lời gọi dịch vụ nội bộ, số giao dịch hay đối số đoán mò nào mang thông tin đăng nhập.
  • Thất bại ở bất kỳ bước nào không để lại hồ sơ đăng ký dở.

Bài viết liên quan