L’aplicació del telèfon i el servidor remot comencen amb fets diferents, i cap dels dos no pot manllevar els de l’altre. L’aplicació pot preguntar al sistema operatiu per la xarxa que utilitza, mentre que el servidor només sap què arriba per la connexió. Executar la vostra pròpia punta reescriu el segon i deixa el primer intacte. Quin dels dos respon la vostra pregunta depèn de la pregunta mateixa.

Dos punts d’observació, dos tipus de prova

La prova local descriu el dispositiu. Cobreix la interfície que porta el trànsit, el transport que la plataforma informa i què pot consultar l’aplicació que crida. La prova remota descriu la connexió: adreça d’origen, protocol, moment i tot el que l’aplicació decideixi enviar. Cap punt d’observació no és un superconjunt de l’altre.

Barrejar els dos produeix afirmacions que sonen exactes i no es poden comprovar. Un marcador demostra alguna cosa sobre un objecte de xarxa del dispositiu, no sobre com un servei remot classifica la petició.

Abans de discutir sobre la detecció, anoteu a quin punt es refereix la pregunta. És si una aplicació concreta pot saber que un túnel és actiu, o si un servei pot inferir d’on ve la petició? Són investigacions separades, i la resposta a una no diu res de l’altra.

Què pot informar una interfície local de plataforma

Android ofereix un marcador concret. L’objecte NetworkCapabilities pot informar TRANSPORT_VPN, i hasTransport comprova si aquest transport és present a l’objecte. L’aplicació obté l’objecte del servei de connectivitat i el llegeix, subjecte al permís d’estat de la xarxa.

El resultat és informació local de la plataforma, no una consulta als rangs d’adreces d’un proveïdor. Descriu la xarxa que utilitza l’aplicació que crida.

Dues limitacions importants. Una regla de túnel dividit que exclou una aplicació pot donar al mateix telèfon una resposta diferent de la que veu un col·lega, perquè l’aplicació pot estar lligada en un altre lloc. El marcador també existeix perquè el sistema operatiu modela interfícies VPN, no perquè cap aplicació concreta el reculli. Si una aplicació llegeix el camp, el propaga o l’ignora és una propietat d’aquesta aplicació. El seu manifest i la seva documentació són les úniques fonts fiables per a aquesta pregunta.

adb shell dumpsys connectivity | grep -i -m5 vpn

Què pot veure un servei remot

Un servidor veu l’adreça d’origen de la connexió, el transport i el moment, i pot enriquir l’adreça amb dades de registre o d’encaminament. També pot rebre tot el que l’aplicació enviï, inclosa la ubicació quan l’aplicació la demana i l’usuari hi accepta. Aquests canals són separats, i només un s’assembla a una consulta d’adreça.

Una adreça registrada a un proveïdor d’allotjament suggereix un túnel, mentre que una registrada en una xarxa residencial suggereix una connexió domèstica. Totes dues són pistes estadístiques, no fets sobre el dispositiu.

Una adreça residencial no situa la persona en aquella adreça, i una adreça d’allotjament no anomena l’operador ni el país. Un servei que tracta la inferència com a certesa de vegades s’equivocarà sense poder-ho detectar. Si el requisit és fiabilitat i no una heurística, les dades d’adreça no la poden aportar, i un disseny que ho diu és més honest que un que amaga la conjectura.

ProvaQuè responQuè no pot mostrar
Marcador local de transportSi aquest objecte de xarxa és una VPNQui opera la sortida o on és el dispositiu
Adreça d’origen remotaQuina adreça ha arribat al serveiSi el dispositiu també porta un túnel
Càrrega de l’aplicacióQuè ha triat enviar l’aplicacióTot el que l’aplicació no ha enviat

Per què una sortida autoallotjada només canvia un costat

Executar la vostra pròpia punta canvia l’adreça d’origen que observa un servei remot, cosa que la pot moure fora dels rangs que aquest servei associa amb proveïdors comercials. No canvia res al model de xarxa local, perquè el túnel continua sent un túnel i el sistema operatiu encara l’informa.

Un costat de la prova es mou; l’altre es queda fix. L’escletxa entre tots dos és on es trenquen les expectatives.

Un navegador és un tercer cas amb interfícies i restriccions pròpies. El contingut web no pot llegir un objecte natiu de capacitats, i tractar una funció del sistema operatiu mòbil com a disponible per a una pàgina web és un error de categoria. Si la pregunta concerneix un lloc web, estudieu què pot obtenir realment un lloc web en lloc de transliterar una API de plataforma.

Decidiu amb la pregunta que feu

Si la pregunta és si una aplicació concreta pot observar l’estat del túnel, la interfície de plataforma és el lloc correcte on mirar, i la resposta viu al codi i als permisos d’aquesta aplicació. Si la pregunta és què pot inferir un servei, les metadades de connexió són la prova. Una qüestió legal o contractual no la resol cap dels dos.

Anomeneu la pregunta en una frase abans de recollir res. Aquesta frase decideix quin punt d’observació importa i evita que la investigació derivi cap a una altra discussió.

Etiqueteu cada observació segons la seva font quan la reporteu, perquè una afirmació sense etiqueta no es pot revisar. Un marcador local i una inferència d’adreça són tots dos útils i cap no és concloent, i per això fusionar-los en un sol veredicte és un error.

Quan un servei rebutja una connexió autoritzada, feu servir la seva via de revisió admesa en lloc de canviar un paràmetre local per amagar un senyal. Eliminar una observació no demostra mai que les altres hagin desaparegut.

Articles relacionats