Маркер за VPN на устройството или адрес на изхода: кое какво доказва?
Мрежовият маркер, прочетен на устройството, и адресът, който вижда сървърът, са различни доказателства. Решете кое от тях е нужно за вашия въпрос.
Приложението на телефона и отдалеченият сървър започват с различни факти и никое от двете не може да заеме фактите на другото. Приложението може да попита операционната система за мрежата, която използва, докато сървърът знае само това, което пристига по връзката. Когато стартирате собствена крайна точка, тя пренаписва второто и оставя първото непокътнато. Кое от двете отговаря на въпроса ви зависи от самия въпрос.
Две точки на наблюдение, два вида доказателства
Локалните доказателства описват устройството. Те обхващат интерфейса, който носи трафика, транспорта, който платформата съобщава, и това, за което извикващото приложение има право да пита. Отдалечените доказателства описват връзката: адрес на източника, протокол, време и всичко, което приложението реши да изпрати. Никоя точка на наблюдение не обхваща другата изцяло.
Смесването на двете създава твърдения, които звучат точно и не могат да бъдат проверени. Маркерът доказва нещо за мрежов обект на устройството, а не за това как отдалечена услуга класифицира заявката.
Преди да спорите за откриване, запишете коя точка засяга въпросът. Дали въпросът е дали определено приложение може да разбере, че тунел е активен, или дали услуга може да заключи откъде идва заявката? Това са отделни разследвания и отговорът на едното не казва нищо за другото.
Какво може да съобщи локален интерфейс на платформата
Android предлага специфичен маркер. Обектът NetworkCapabilities може да съобщава за TRANSPORT_VPN, а hasTransport проверява дали този транспорт присъства на обекта. Приложението получава обекта от услугата за свързаност и го чете, при спазване на разрешението за състояние на мрежата.
Резултатът е локална информация от платформата, а не справка в диапазоните от адреси на доставчик. Той описва мрежата, която извикващото приложение използва.
Две ограничения са важни. Правило за разделен тунел, което изключва приложение, може да даде различен отговор на същия телефон от този, който вижда колега, защото приложението може да е вързано другаде. Маркерът съществува и защото ОС моделира VPN интерфейси, а не защото определено приложение го събира. Дали приложението чете полето, предава го или го игнорира, е свойство на това приложение. Неговият манифест и документация са единствените надеждни източници за този въпрос.
adb shell dumpsys connectivity | grep -i -m5 vpn
Какво може да види отдалечена услуга
Сървърът вижда адреса на източника на връзката, транспорта и времето и може да обогати адреса с данни от регистър или маршрутизация. Той може също да получи всичко, което приложението изпрати, включително местоположение, когато приложението го поиска и потребителят се съгласи. Тези канали са отделни и само един от тях прилича на справка за адрес.
Адрес, регистриран към хостинг доставчик, подсказва тунел, докато адрес, регистриран към жилищна мрежа, подсказва домашна връзка. И двете са статистически намеци, а не факти за устройството.
Жилищният адрес не поставя човека на този адрес, а хостинг адресът не назовава оператора или държавата. Услуга, която приема извода за сигурност, понякога ще греши, без да може да го открие. Ако изискването е надеждност, а не евристика, данните за адреса не могат да я осигурят и дизайн, който го признава, е по-честен от такъв, който крие предположението.
| Доказателство | На какво отговаря | Какво не може да покаже |
|---|---|---|
| Локален маркер за транспорт | Дали този мрежов обект е VPN | Кой управлява изхода или къде е устройството |
| Отдалечен адрес на източника | Кой адрес е достигнал до услугата | Дали устройството носи също тунел |
| Полезен товар на приложението | Какво е избрало да изпрати приложението | Всичко, което приложението не е изпратило |
Защо собствено хостван изход променя само едната страна
Стартирането на собствена крайна точка променя адреса на източника, който отдалечена услуга вижда, и това може да го изведе извън диапазоните, които услугата свързва с търговски доставчици. В локалния мрежов модел не се променя нищо, защото тунелът остава тунел и ОС все още го съобщава.
Едната страна на доказателствата се движи, другата остава фиксирана. Разликата между тях е мястото, където очакванията се чупят.
Браузърът е трети случай със свои интерфейси и ограничения. Уеб съдържанието не може да чете нативен обект за възможности и да се отнасяме към функция на мобилна ОС като към достъпна за уеб страница е категориална грешка. Ако въпросът засяга уебсайт, проучете какво уебсайтът наистина може да получи, вместо да преписвате API на платформата.
Решете с въпроса, който задавате
Ако въпросът е дали определено приложение може да наблюдава състоянието на тунела, интерфейсът на платформата е правилното място и отговорът е в кода и разрешенията на това приложение. Ако въпросът е какво може да заключи услуга, доказателството е метаданните на връзката. Правен или договорен въпрос не се решава от нито едно от двете.
Назовайте въпроса с едно изречение, преди да събирате каквото и да е. Това изречение решава коя точка на наблюдение е важна и пази разследването от дрейф към друг спор.
Означавайте всяко наблюдение по източника му, когато го докладвате, защото твърдение без означение не може да бъде прегледано. Локалният маркер и изводът от адреса са еднакво полезни и нито едно не е окончателно, затова сливането им в една присъда е грешка.
Когато услуга отхвърли разрешена връзка, използвайте поддържания от нея път за преглед, вместо да променяте локална настройка, за да скриете сигнал. Премахването на едно наблюдение никога не доказва, че другите са изчезнали.