Ứng dụng VPN di động không cần quyền quản trị: điều gì vẫn hỏng
Một ứng dụng VPN di động có thể bỏ qua trình cài đặt và vẫn cần thiết bị đường hầm, tuyến đường và ghi vào bộ phân giải. Hãy chạy các kiểm tra này trước khi tin tưởng nó.
Di động mô tả trình cài đặt, không mô tả nhân hệ điều hành. Một ứng dụng có thể đến dưới dạng một tệp thực thi duy nhất trên USB và vẫn cần thiết bị đường hầm, một mục trong bảng tuyến và một lần ghi vào bộ phân giải trước khi gói đầu tiên di chuyển. Việc máy đích cho bạn chạm vào cái nào trong ba thứ đó quyết định bản dựng ấy có chạy được ở đó hay không. Các kiểm tra bên dưới trả lời câu hỏi theo thứ tự mà ứng dụng sẽ gặp chúng.
Di động bao gồm ba lời hứa khác nhau, và chỉ một là miễn phí
Không có trình cài đặt nghĩa là nhà cung cấp không đăng ký dịch vụ, không gửi trình gỡ cài đặt và không thêm mục menu. Không có quản trị viên nghĩa là một tài khoản thông thường có thể khởi động ứng dụng và hoàn tất kết nối. Không thay đổi máy chủ nghĩa là máy trông giống hệt sau khi bạn thoát. Các trang tải xuống nói di động thường chỉ hứa điều đầu tiên trong số đó, còn hai điều kia là nơi triển khai thất bại. Một bản dựng cũng có thể di động theo nghĩa hẹp: nó chạy từ phương tiện chỉ đọc mà không ghi tệp điểm nào, điều này vẫn không nói gì về ngăn xếp mạng.
Những lời hứa đắt giá là điều thứ hai và thứ ba. Một tệp thực thi cần bộ điều hợp, một tuyến hoặc một lần ghi vào bộ phân giải đang xin hệ điều hành quyền hạn mà nhãn di động chưa bao giờ bao phủ.
Tìm trình trợ giúp đặc quyền mà ứng dụng sẽ gọi
Hầu như không ứng dụng VPN nào tự di chuyển gói tin. Trên Windows, đường dữ liệu đi qua bộ lọc WFP và Base Filtering Engine, trên macOS qua nhà cung cấp NetworkExtension mà người dùng phê duyệt trong Cài đặt Hệ thống, và trên Linux qua thiết bị tun cùng ngăn xếp định tuyến. Tệp nhị phân bạn đã sao chép là bề mặt điều khiển cho các thành phần đó, không phải thứ thay thế chúng. Hãy hỏi ứng dụng mong đợi thành phần nào, rồi xác nhận rằng nó đã được cài, đang chạy và tài khoản của bạn dùng được.
Linux là nơi dễ nhất để chứng minh điểm này, vì kiểm tra là một lời gọi hệ thống duy nhất. Mở /dev/net/tun và yêu cầu nhân cấp thiết bị cần CAP_NET_ADMIN, và tài liệu của nhân về TUN/TAP nêu cả quy tắc sở hữu lẫn khả năng. Chạy kiểm tra bằng tài khoản sẽ khởi động ứng dụng, không phải bằng root.
ls -l /dev/net/tun
ip tuntap add dev vpntest mode tun
ip link delete vpntest
Lỗi quyền trên dòng giữa chính là câu trả lời bạn tìm: tài khoản này không thể tạo giao diện đường hầm, nên mọi ứng dụng trong không gian người dùng cần một cái sẽ thất bại lúc kết nối chứ không phải lúc tải xuống. Dòng cuối xóa thiết bị thử và không in gì khi nó hoạt động. Nếu cả hai dòng đều thành công, máy chủ không thay đổi gì vĩnh viễn.
Kiểm tra thay đổi tuyến và bộ phân giải trước lần kết nối đầu tiên
Đường hầm chia tách biến kết nối thành một quyết định định tuyến, còn đường hầm đầy đủ biến nó thành việc thay thế tuyến mặc định. Cả hai đều là ghi vào ngăn xếp mạng của máy chủ, và cả hai đều thất bại với tài khoản không có đặc quyền ngay cả khi ứng dụng tự khởi động sạch sẽ. Bộ phân giải là lần ghi thứ ba, và trên các máy chủ systemd nó thường là thứ hỏng sau cùng. Thứ tự đó quan trọng khi bạn quyết định chi cho một lần cài đặt nâng quyền ở đâu.
Một phép thử tuyến cần đích mà bạn thực sự quan tâm, nên hãy thay phần giữ chỗ bên dưới bằng một mạng con từ hồ sơ của bạn. Tên thiết bị phải tồn tại để tuyến có thể bám vào thứ gì đó.
ip route add 10.20.0.0/16 dev vpntest
ip route del 10.20.0.0/16
resolvectl query intranet.example.internal
Nếu dòng đầu trả về RTNETLINK answers: Operation not permitted, tài khoản không thể cài tuyến riêng mà hồ sơ yêu cầu. Dòng thứ hai chứng minh cùng quyền đó theo chiều ngược lại, điều này quan trọng vì ứng dụng thêm được tuyến nhưng không xóa được sẽ để lại một bảng hỏng. Sau đó truy vấn bộ phân giải cho thấy tên riêng được phân giải qua đường hầm hay rò rỉ sang bộ phân giải mà máy chủ đã tin cậy.
Chạy cả ba khi thiết bị thử còn tồn tại, rồi xóa nó. Một tuyến trỏ tới thiết bị đã biến mất là lý do phổ biến nhất khiến máy tính xách tay mất kết nối sau một lần kết nối thất bại.
Quyết định điều gì phải sống sót qua phiên
Xóa thư mục không phải là kế hoạch dọn dẹp. Bộ điều hợp, tuyến, cài đặt bộ phân giải, chứng chỉ tin cậy và thông tin đăng nhập đã lưu đều có thể sống lâu hơn tiến trình, và một dịch vụ lúc khởi động có thể khôi phục một số trong đó mà không hỏi. Hãy ghi ra ứng dụng được phép để lại gì trước khi bạn chạy nó, không phải sau lần ngắt kết nối thất bại đầu tiên.
Quy tắc thực tế là chụp ảnh ba bề mặt bạn sắp thay đổi rồi so sánh chúng sau đó. Ghi lại giao diện, bảng định tuyến chính và trạng thái bộ phân giải trước lần kết nối đầu tiên, rồi lặp lại đúng ba lần đọc đó khi ứng dụng đã thoát.
ip -brief addr show
ip route show table main
resolvectl status
Bất cứ thứ gì có trong lần chụp thứ hai mà không có trong lần đầu đều cần một chủ sở hữu. Hoặc ứng dụng xóa nó khi thoát, hoặc bạn xóa nó bằng đúng những lệnh đã tạo ra nó, và việc xóa đó thuộc về ghi chú triển khai chứ không phải ký ức của ai đó về điều đã xảy ra. Trên Windows, các lần đọc tương đương là Get-NetAdapter, Get-NetRoute và Get-DnsClientServerAddress, chúng không cần nâng quyền nhưng cho thấy cùng những thứ còn sót lại.