Eine App durch einen Tunnel zu leiten überträgt ihr Routing nicht auf alles, was diese App startet, auch wenn die Oberfläche etwas anderes nahelegt. Ein Link übergibt eine Anfrage an ein anderes Programm, dieses Programm öffnet seinen eigenen Socket, und die Plattform wendet die Regeln auf den neuen Prozess an statt auf den, der den Text angezeigt hat. Genau diesen zweiten Prozess sieht die Tunnelrichtlinie, und er ist nicht der, den Sie eingerichtet haben.

Eine eingeschlossene App kann daher einen Browser öffnen, der außerhalb des Tunnels liegt. Ein ausgeschlossener Browser kann Arbeit an eine App zurückgeben, die innerhalb von ihm liegt. Beide Richtungen dieser Überraschung sind normales Verhalten.

Der Teil des Ablaufs, den niemand eingerichtet hat

Die Richtlinie pro App wird gegen die Identität einer ausführbaren Datei oder eines Pakets geschrieben, und jede Verbindung wird in dem Moment bewertet, in dem sie entsteht. Browser, Dokumentenbetrachter, Mediaplayer und das Teilen-Blatt des Systems tragen jeweils ihre eigene Identität, und jedes erhält sein eigenes Urteil. Ein tiefer Link trägt Daten, keine Richtlinie.

Deshalb wirkt die Beobachtung willkürlich: derselbe Klick wird auf zwei Arten geroutet, je nachdem welcher Handler ihn beantwortet. Ein Mailprogramm im Tunnel öffnet einen Link in einem Browser, der außerhalb des Tunnels lebt, und die Seite lädt von Ihrer Heimadresse. Ein Browser außerhalb des Tunnels öffnet ein Dokument in einem Betrachter, der innerhalb von ihm lebt, und die Datei kommt über den Ausgang an. Keines der beiden Ergebnisse ist ein Fehler im Client.

Ein bereits laufender Handler verschlimmert es. Ist der Browser schon offen, wird der Link zu einer Nachricht an einen bestehenden Prozess, und dieser Prozess behält das Routing, das er beim Start hatte. Den Handler zu schließen und neu zu öffnen ändert das Ergebnis, und deshalb lässt sich das Problem nie auf Zuruf reproduzieren.

PlatformPolicy objectWhat it is evaluated against
AndroidPer-app VPN allowlistPackage name of the process opening the socket
WindowsApplication traffic filtersApplication path in the filter rule
LinuxUID or cgroup routing rulesOwner of the socket, which can be a different program

Welcher Prozess die Verbindung tatsächlich aufgebaut hat

Messen Sie die empfangende Seite, statt über sie zu räsonieren. Lassen Sie den Tunnel laufen, klicken Sie einen harmlosen Link an und sehen Sie sich die Sockets an, die das neue Programm hält.

ss -tnp state established '( dport = :443 )'
Get-NetTCPConnection -State Established | Select-Object RemoteAddress,OwningProcess

Der erste Befehl benennt den Prozess hinter jedem aufgebauten Socket unter Linux, und der zweite tut dasselbe unter Windows, indem er die Kennung des besitzenden Prozesses auflöst. Vergleichen Sie den Prozessnamen mit denen in Ihrer Richtlinie. Ist der Name der Browser und ist der Browser ausgeschlossen, hat der Klick den Tunnel absichtlich verlassen und nicht wegen eines Fehlers. Eine Richtlinienregel einem lebenden Socket zuzuordnen, ist die ganze Methode.

Wiederholen Sie die Prüfung mit bereits laufendem Handler und dann mit geschlossenem. Die beiden Ergebnisse können sich unterscheiden, und dieser Unterschied erklärt die meisten sporadischen Berichte über Links, die einem Tunnel entkommen.

Abdeckung ist eine Eigenschaft des Ablaufs

Muss eine Aufgabe von Anfang bis Ende im Tunnel bleiben, so muss jede erreichbare Komponente innerhalb der Richtlinie liegen: der Starter, der Handler, der Betrachter und jeder Vermittler, den die Plattform dazwischen einschiebt. Breitere Abdeckung ist oft die ehrliche Antwort, und sie ist billiger als die Prüfung jedes Freigabeziels.

Einen Systemvermittler auszuschließen, um eine Anwendung zu reparieren, ist ein verbreiteter Fehler. Vermittler werden geteilt, also folgt der Ausschluss jeder anderen App, die denselben Weg nutzt, meist ohne dass es jemand bemerkt, bis Wochen später ein Bericht eintrifft. Lesen Sie, was sonst noch von der Komponente abhängt, bevor Sie sie ausschließen.

Halten Sie Identität auch vom Routing getrennt. Ein Link kann ein Sitzungstoken oder eine Kontokennung tragen, unabhängig davon, welcher Ausgang die Anfrage erhält. Ein korrekt gerouteter Klick kann dem Ziel trotzdem genau sagen, wer ihm gefolgt ist.

Dokumentieren Sie den Ablauf, nicht das erste Kästchen. Wenn eine Aufgabe vier Programme umfasst, ist das Diagramm mit vier Programmen das, welches vorhersagt, wohin der Verkehr geht, und die Einstellung für eine einzelne App ist nur eine Zeile davon.

Ähnliche Artikel