root thay đổi những thao tác mạng mà một tiến trình được phép thử. Nó không cấp cho điện thoại một địa chỉ truy cập được từ công cộng, không giữ chỗ ánh xạ vào tại nhà mạng, và không giữ một daemon sống sau khi khởi động lại. Nếu bạn đang quyết định liệu một chiếc điện thoại Android có thể làm máy chủ VPN hay không, hãy tách ba câu hỏi: máy khách dự kiến có đến được trình lắng nghe hay không, việc triển khai máy chủ cần mô hình đặc quyền nào, và phải chuyển tiếp gì sau khi đường hầm đã dựng.

Ai phải đến được điện thoại, và từ đâu

Một máy khách trên cùng LAN được cho phép và một máy khách trên dữ liệu di động đang thử hai mạng khác nhau. Hãy xác định mạng dự kiến trước, vì câu trả lời không chuyển được sang nhau. Trên Wi-Fi, lưu lượng vào không được yêu cầu thường cần một ánh xạ tại bộ định tuyến thượng nguồn và một đường công cộng dùng được ở phía sau nó. Trên mạng di động, NAT cấp nhà mạng nghĩa là IPv4 đi vào thường không có sẵn, bất kể điện thoại cho phép gì.

Đúng điểm cuối cùng đó là thứ root không thể chạm tới. Tường lửa cục bộ của điện thoại và NAT của nhà mạng là hai hệ thống khác nhau, và thay đổi cái thứ nhất không ảnh hưởng đến cái thứ hai. Một địa chỉ giao diện riêng, một biểu tượng dữ liệu di động hay một socket đang lắng nghe không phải bằng chứng về khả năng truy cập. Nếu đường của nhà mạng có cung cấp IPv6 định tuyến toàn cầu, bạn vẫn cần một chính sách trình lắng nghe và tường lửa có chủ đích cho nó; có địa chỉ không giống với việc chấp nhận kết nối.

Client pathWhat actually decides reachability
Same LANThe phone's listener and its local firewall
Wi-Fi, from the internetA mapping on the upstream router plus a usable public path beyond it
Cellular IPv4The carrier's NAT, which the handset does not control
Cellular IPv6Address, listener and firewall policy together

Phục vụ và chuyển tiếp là hai thành công khác nhau

Một cái bắt tay VPN hoàn tất chứng minh đường hầm tồn tại. Nó không chứng minh máy khách đến được LAN phía sau điện thoại, cũng không chứng minh điện thoại có thể làm lối ra internet. Đó là những cấu hình riêng, được dựng trên quy hoạch địa chỉ bên trong, các tuyến, hành vi quay về và một chính sách chuyển tiếp hẹp cho công việc bạn thực sự muốn.

Kiểu hỏng có thể đoán trước: bắt tay thành công, máy khách hiện đã kết nối, và không có gì tải được. Trước khi gỡ lỗi máy khách, hãy quyết định bạn đang dựng vai nào trong hai vai. Truy cập từ xa tới một thiết bị trên mạng của điện thoại và lối ra internet qua đường hầm đầy đủ cần các quy tắc chuyển tiếp khác nhau, và cấp cả hai khi bạn chỉ muốn một sẽ mở rộng phơi nhiễm mà không thêm năng lực bạn đã yêu cầu.

Mô hình đặc quyền là một lựa chọn, không phải root hay không có gì

Một daemon OpenVPN thông thường dùng thiết bị TUN của nhân cần các năng lực tương ứng, quyền truy cập nút thiết bị và sự hợp tác của chính sách bảo mật Android. root không phải là một miễn trừ toàn diện khỏi SELinux; một tiến trình có đặc quyền vẫn bị chính sách nền tảng ràng buộc. Đó là lý do một tệp nhị phân chạy tốt trên máy chủ Linux có thể hỏng trên điện thoại mà không có lỗi rõ ràng về quyền.

Một cách triển khai cổng trong không gian người dùng có thể có mô hình đặc quyền hoàn toàn khác, nên tuyên bố phổ biến rằng mọi máy chủ VPN trên Android đều cần root là quá rộng. Thứ root mua cho bạn là khả năng thử nhiều thao tác hơn, không phải bảo đảm chúng sẽ được cho phép hay kết quả sẽ truy cập được.

Chính việc đăng ký dịch vụ VPN của Android lại là một cơ chế khác. Nó cho ứng dụng một giao diện máy khách được quản lý với vòng đời xác định; nó không phải trình cài đặt máy chủ tổng quát, và khởi động một daemon từ terminal không cho nó quyền quản lý thường trực, chính sách theo từng ứng dụng hay một đường phục hồi riêng.

Nếu muốn một điểm ra, hãy đổi kiến trúc

Khi mục tiêu chỉ là lối ra internet từ xa qua điện thoại chứ không phải tương thích với một hồ sơ OpenVPN sẵn có, một nút ra được hỗ trợ trong mạng phủ là thiết kế phù hợp hơn. Tailscale tài liệu hóa vai trò nút ra cho Android với các bước đăng ký, cấp quyền và chọn máy khách riêng.

Đánh đổi là thật và đáng nói thẳng: bạn chấp nhận một giao thức khác, một mô hình tin cậy khác và sự phụ thuộc vào tài khoản cùng dịch vụ điều phối đó. Nó không làm một máy khách OpenVPN chưa chỉnh sửa tham gia mạng phủ, và không cho bạn một trình lắng nghe OpenVPN trên địa chỉ công cộng.

Việc triển khai còn cần gì

Dù bạn chọn đường nào, những nền tảng vận hành quyết định nó có trụ được một tuần hay không. Giữ thông tin đăng nhập máy chủ ở chế độ riêng tư, cấp danh tính máy khách khác nhau và lên kế hoạch thu hồi trước khi bạn cần. Quyết định cách bản cập nhật đến, điều gì giữ dịch vụ chạy nền và nó phục hồi ra sao sau khi khởi động lại hoặc đổi mạng.

Tránh những lối tắt trông có vẻ tiện: một tệp nhị phân tĩnh lỗi thời, tên giao diện mã hóa cứng và một script khởi động xóa sạch chính sách tường lửa hiện có. Sau đó chỉ chấp nhận kết quả khi qua một bài kiểm tra cụ thể: một máy khách từ xa được cấp quyền đến được tài nguyên dự kiến, các đích bị cấm vẫn không dùng được, và thiết bị tự trở lại sau sự kiện vòng đời được hỗ trợ. Truy cập root là một thành phần có thể có trong kết quả đó, và hiếm khi là thành phần quyết định.

Bài viết liên quan