Die App auf dem Telefon und der entfernte Server beginnen mit verschiedenen Fakten, und keiner kann die des anderen entleihen. Die App kann das Betriebssystem nach dem Netzwerk fragen, das sie nutzt, während der Server nur weiß, was über die Verbindung ankommt. Wer einen eigenen Endpunkt betreibt, schreibt das zweite um und lässt das erste unberührt. Welche der beiden Ihre Frage beantwortet, hängt von der Frage selbst ab.

Zwei Beobachtungspunkte, zwei Arten von Belegen

Lokale Belege beschreiben das Gerät. Sie umfassen die Schnittstelle, die den Verkehr trägt, den Transport, den die Plattform meldet, und das, wonach die aufrufende App fragen darf. Entfernte Belege beschreiben die Verbindung: Quelladresse, Protokoll, Zeitverlauf und alles, was die App zu senden beschließt. Kein Beobachtungspunkt ist eine Obermenge des anderen.

Beides zu vermischen erzeugt Behauptungen, die präzise klingen und nicht überprüfbar sind. Ein Marker beweist etwas über ein Netzwerkobjekt auf dem Gerät, nicht darüber, wie ein entfernter Dienst die Anfrage einordnet.

Bevor Sie über Erkennung streiten, notieren Sie, auf welchen Punkt sich die Frage bezieht. Geht es darum, ob eine bestimmte App erkennt, dass ein Tunnel aktiv ist, oder darum, ob ein Dienst ableiten kann, woher die Anfrage kam? Das sind getrennte Untersuchungen, und eine Antwort auf die eine sagt nichts über die andere.

Was eine lokale Plattformschnittstelle melden kann

Android bietet einen bestimmten Marker. Das Objekt NetworkCapabilities kann TRANSPORT_VPN melden, und hasTransport prüft, ob dieser Transport am Objekt vorhanden ist. Die App bezieht das Objekt vom Konnektivitätsdienst und liest es, vorbehaltlich der Berechtigung für den Netzwerkzustand.

Das Ergebnis sind lokale Plattforminformationen, keine Abfrage gegen die Adressbereiche eines Anbieters. Es beschreibt das Netzwerk, das die aufrufende App nutzt.

Zwei Grenzen sind wichtig. Eine Split-Tunnel-Regel, die eine App ausschließt, kann auf demselben Telefon eine andere Antwort ergeben als die, die ein Kollege sieht, weil die App anderswo gebunden sein kann. Der Marker existiert auch, weil das Betriebssystem VPN-Schnittstellen modelliert, nicht weil eine bestimmte App ihn erhebt. Ob eine App das Feld liest, weitergibt oder ignoriert, ist eine Eigenschaft dieser App. Ihr Manifest und ihre Dokumentation sind die einzigen verlässlichen Quellen für diese Frage.

adb shell dumpsys connectivity | grep -i -m5 vpn

Was ein entfernter Dienst sehen kann

Ein Server sieht die Quelladresse der Verbindung, den Transport und den Zeitverlauf, und er kann die Adresse mit Register- oder Routingdaten anreichern. Er kann auch alles empfangen, was die App sendet, einschließlich des Standorts, wenn die App ihn anfordert und der Nutzer zustimmt. Diese Kanäle sind getrennt, und nur einer ähnelt einer Adressabfrage.

Eine bei einem Hosting-Anbieter registrierte Adresse deutet auf einen Tunnel hin, während eine in einem Wohnnetz registrierte auf eine Heimverbindung deutet. Beides sind statistische Hinweise, keine Fakten über das Gerät.

Eine Wohnadresse verortet die Person nicht an dieser Adresse, und eine Hosting-Adresse nennt weder Betreiber noch Land. Ein Dienst, der die Schlussfolgerung als Gewissheit behandelt, wird sich manchmal irren, ohne es erkennen zu können. Wenn Verlässlichkeit statt einer Heuristik gefordert ist, können Adressdaten sie nicht liefern, und ein Design, das dies sagt, ist ehrlicher als eines, das die Vermutung verbirgt.

BelegWas er beantwortetWas er nicht zeigen kann
Lokaler TransportmarkerOb dieses Netzwerkobjekt ein VPN istWer den Exit betreibt oder wo das Gerät ist
Entfernte QuelladresseWelche Adresse den Dienst erreicht hatOb das Gerät auch einen Tunnel trägt
AnwendungsnutzlastWas die App zu senden gewählt hatAlles, was die App nicht gesendet hat

Warum ein selbst betriebener Exit nur eine Seite ändert

Einen eigenen Endpunkt zu betreiben ändert die Quelladresse, die ein entfernter Dienst sieht, was sie außerhalb der Bereiche verschieben kann, die dieser Dienst mit kommerziellen Anbietern verbindet. Am lokalen Netzwerkmodell ändert es nichts, denn der Tunnel bleibt ein Tunnel, und das Betriebssystem meldet ihn weiterhin.

Eine Seite der Belege bewegt sich, die andere bleibt fest. Die Lücke dazwischen ist der Ort, an dem Erwartungen brechen.

Ein Browser ist ein dritter Fall mit eigenen Schnittstellen und Einschränkungen. Webinhalte können kein natives Fähigkeitsobjekt lesen, und eine Funktion eines mobilen Betriebssystems als für eine Webseite verfügbar zu behandeln, ist ein Kategorienfehler. Geht es um eine Website, untersuchen Sie, was eine Website tatsächlich erhalten kann, statt eine Plattform-API zu übertragen.

Entscheiden Sie mit der Frage, die Sie stellen

Ist die Frage, ob eine bestimmte App den Tunnelzustand beobachten kann, ist die Plattformschnittstelle die richtige Stelle, und die Antwort liegt im Code und in den Berechtigungen dieser App. Ist die Frage, was ein Dienst ableiten kann, sind Verbindungsmetadaten der Beleg. Eine rechtliche oder vertragliche Frage entscheidet keines von beiden.

Benennen Sie die Frage in einem Satz, bevor Sie etwas erheben. Dieser Satz entscheidet, welcher Beobachtungspunkt zählt, und hält die Untersuchung davon ab, in eine andere Debatte abzudriften.

Kennzeichnen Sie jede Beobachtung nach ihrer Quelle, wenn Sie sie berichten, denn eine ungekennzeichnete Behauptung lässt sich nicht prüfen. Ein lokaler Marker und eine Adressableitung sind beide nützlich und keine ist schlüssig, deshalb ist es ein Fehler, sie zu einem Urteil zu verschmelzen.

Wenn ein Dienst eine autorisierte Verbindung ablehnt, nutzen Sie seinen unterstützten Überprüfungsweg, statt eine lokale Einstellung zu ändern, um ein Signal zu verbergen. Das Entfernen einer Beobachtung beweist nie, dass die anderen verschwunden sind.

Ähnliche Artikel