Ứng dụng trên điện thoại và máy chủ từ xa bắt đầu từ những sự kiện khác nhau, và không bên nào mượn được sự kiện của bên kia. Ứng dụng có thể hỏi hệ điều hành về mạng mà nó dùng, trong khi máy chủ chỉ biết những gì đến qua kết nối. Chạy điểm cuối của riêng bạn sẽ viết lại cái thứ hai và để cái thứ nhất nguyên vẹn. Cái nào trả lời câu hỏi của bạn phụ thuộc vào chính câu hỏi.

Hai điểm quan sát, hai loại bằng chứng

Bằng chứng cục bộ mô tả thiết bị. Nó bao gồm giao diện mang lưu lượng, phương thức vận chuyển mà nền tảng báo cáo, và những gì ứng dụng gọi được phép hỏi. Bằng chứng từ xa mô tả kết nối: địa chỉ nguồn, giao thức, thời điểm và mọi thứ ứng dụng chọn gửi. Không điểm quan sát nào là tập cha của điểm kia.

Trộn hai thứ tạo ra những khẳng định nghe có vẻ chính xác nhưng không thể kiểm chứng. Dấu hiệu chứng minh điều gì đó về một đối tượng mạng trên thiết bị, không phải về cách một dịch vụ từ xa phân loại yêu cầu.

Trước khi tranh luận về phát hiện, hãy ghi lại câu hỏi liên quan đến điểm nào. Vấn đề là liệu một ứng dụng cụ thể có biết rằng đường hầm đang hoạt động, hay liệu một dịch vụ có suy ra được yêu cầu đến từ đâu? Đây là những cuộc điều tra riêng biệt, và câu trả lời cho cái này không nói gì về cái kia.

Giao diện nền tảng cục bộ có thể báo cáo điều gì

Android cung cấp một dấu hiệu cụ thể. Đối tượng NetworkCapabilities có thể báo cáo TRANSPORT_VPN, và hasTransport kiểm tra xem phương thức vận chuyển đó có trên đối tượng hay không. Ứng dụng lấy đối tượng từ dịch vụ kết nối và đọc nó, tùy thuộc quyền trạng thái mạng.

Kết quả là thông tin nền tảng cục bộ, không phải tra cứu trong dải địa chỉ của nhà cung cấp. Nó mô tả mạng mà ứng dụng gọi đang dùng.

Hai giới hạn quan trọng. Quy tắc đường hầm chia tách loại trừ một ứng dụng có thể cho câu trả lời khác trên cùng điện thoại so với đồng nghiệp thấy, vì ứng dụng có thể bị ràng buộc ở nơi khác. Dấu hiệu cũng tồn tại vì hệ điều hành mô hình hóa giao diện VPN, không phải vì một ứng dụng cụ thể nào thu thập nó. Việc ứng dụng đọc trường này, chuyển tiếp hay bỏ qua là thuộc tính của ứng dụng đó. Tệp kê khai và tài liệu của nó là nguồn đáng tin cậy duy nhất cho câu hỏi đó.

adb shell dumpsys connectivity | grep -i -m5 vpn

Dịch vụ từ xa có thể thấy gì

Máy chủ thấy địa chỉ nguồn của kết nối, phương thức vận chuyển và thời điểm, và có thể làm phong phú địa chỉ bằng dữ liệu đăng ký hoặc định tuyến. Nó cũng có thể nhận mọi thứ ứng dụng gửi, kể cả vị trí khi ứng dụng yêu cầu và người dùng đồng ý. Các kênh đó tách biệt, và chỉ một kênh giống tra cứu địa chỉ.

Địa chỉ đăng ký với nhà cung cấp lưu trữ gợi ý một đường hầm, trong khi địa chỉ đăng ký trên mạng dân cư gợi ý kết nối tại nhà. Cả hai đều là gợi ý thống kê, không phải sự thật về thiết bị.

Địa chỉ dân cư không đặt người đó tại địa chỉ ấy, và địa chỉ lưu trữ không nêu tên nhà vận hành hay quốc gia. Một dịch vụ coi suy luận là chắc chắn đôi khi sẽ sai mà không thể phát hiện. Nếu yêu cầu là độ tin cậy chứ không phải phỏng đoán, dữ liệu địa chỉ không thể cung cấp điều đó, và một thiết kế nói rõ điều ấy trung thực hơn thiết kế che giấu phỏng đoán.

Bằng chứngTrả lời điều gìKhông thể cho thấy điều gì
Dấu vận chuyển cục bộĐối tượng mạng này có phải VPNAi vận hành lối ra hoặc thiết bị ở đâu
Địa chỉ nguồn từ xaĐịa chỉ nào đã đến dịch vụThiết bị có mang đường hầm không
Tải trọng ứng dụngỨng dụng chọn gửi gìMọi thứ ứng dụng không gửi

Vì sao lối ra tự lưu trữ chỉ đổi một phía

Chạy điểm cuối của riêng bạn thay đổi địa chỉ nguồn mà dịch vụ từ xa thấy, điều này có thể đưa nó ra ngoài các dải mà dịch vụ ấy liên kết với nhà cung cấp thương mại. Nó không thay đổi gì trong mô hình mạng cục bộ, vì đường hầm vẫn là đường hầm và hệ điều hành vẫn báo cáo nó.

Một phía của bằng chứng di chuyển; phía kia đứng yên. Khoảng cách giữa chúng là nơi kỳ vọng vỡ.

Trình duyệt là trường hợp thứ ba với giao diện và hạn chế riêng. Nội dung web không thể đọc đối tượng khả năng gốc, và coi một tính năng của hệ điều hành di động là có sẵn cho trang web là lỗi phân loại. Nếu câu hỏi liên quan đến một trang web, hãy nghiên cứu những gì trang web thực sự có thể lấy được thay vì sao chép nguyên văn API nền tảng.

Quyết định bằng câu hỏi bạn đặt ra

Nếu câu hỏi là liệu một ứng dụng cụ thể có quan sát được trạng thái đường hầm, giao diện nền tảng là nơi đúng để xem, và câu trả lời nằm trong mã và quyền của ứng dụng đó. Nếu câu hỏi là dịch vụ có thể suy ra điều gì, siêu dữ liệu kết nối là bằng chứng. Một vấn đề pháp lý hoặc hợp đồng không bên nào giải quyết.

Đặt tên câu hỏi trong một câu trước khi thu thập bất cứ điều gì. Câu đó quyết định điểm quan sát nào quan trọng và giữ cuộc điều tra khỏi trôi sang tranh luận khác.

Gắn nhãn mỗi quan sát theo nguồn của nó khi bạn báo cáo, vì khẳng định không nhãn không thể xem lại. Dấu cục bộ và suy luận từ địa chỉ đều hữu ích và không cái nào là quyết định, vì thế hợp nhất chúng thành một phán quyết là sai lầm.

Khi một dịch vụ từ chối kết nối được ủy quyền, hãy dùng lộ trình xem xét được hỗ trợ của nó thay vì thay đổi cài đặt cục bộ để che giấu tín hiệu. Việc gỡ bỏ một quan sát không bao giờ chứng minh rằng những cái khác đã biến mất.

Bài viết liên quan