Jemand will sehen, was Clients durch den Tunnel senden, findet den Connect-Hook in der Dokumentation und beginnt ein Skript zu schreiben, das nie ein einziges Paket erhalten wird. Der Hook ist real und nützlich, aber seine Arbeitseinheit ist eine Sitzung, kein Byte. Die richtige Komponente zu wählen ist ein Vergleich zwischen drei Orten, an denen Arbeit stattfinden kann, und die entscheidende Frage ist, welche Einheit jeder davon tatsächlich sieht.

Was der Hook erhält und was er nie erhält

Ein Client-Connect-Hook läuft einmal, wenn ein authentifizierter Client eine Sitzung aufbaut, im Prozesskontext des Servers, mit dokumentierten Argumenten und Umgebungswerten wie dem Common Name und der zugewiesenen Adresse. Er kann Konfiguration pro Client schreiben, eine Zulassungsentscheidung treffen, eine externe Ressource belegen oder festhalten, dass die Verbindung stattfand. Was er nicht kann, ist Verkehr beobachten, denn wenn das erste Paket den Tunnel überquert, ist der Hook längst zurückgekehrt.

Das ist keine Einschränkung, die man umgehen müsste. Ein Sitzungs-Callback, der einen Strom verarbeiten wollte, müsste über die gesamte Lebensdauer der Verbindung laufen, und der Skriptvertrag des Daemons ist nicht für diese Form gebaut. Frag, wofür der Hook da ist, bevor du entscheidest, dass er dir im Weg steht.

Auch Wiederverbindungen zählen. Ein Client, der ausfällt und sich neu verbindet, ist eine neue Sitzung, also muss alles, was der Hook belegt, idempotent sein oder mit einem Trennungsereignis gepaart werden, das aufräumt. Zustand, der bei jeder Wiederverbindung ausläuft, ist der übliche erste Fehler in einem hookbasierten Entwurf.

Sitzungsrichtlinie gehört in den Hook

Zulassung ist die natürliche Aufgabe des Hooks. Du weißt, wer sich verbunden hat, von wo und mit welchem Zertifikat, und du kannst entscheiden, ob diese Sitzung weitergeht oder abgelehnt wird. Diese Entscheidung ist billig, sie fällt einmal, und sie verlangt keinen Blick auf ein einziges Byte Nutzdaten.

Konfigurationszuweisung passt in dieselbe Form. Ein Hook kann die Adresse des Clients auswählen, Optionen übergeben, die zu dieser Identität passen, oder ein Fragment schreiben, das der Server für diesen Client liest. Weil die Entscheidung pro Sitzung fällt, bleibt sie nachvollziehbar, wenn etwas schiefgeht und jemand erklären muss, warum ein bestimmter Client eine bestimmte Adresse bekommen hat.

Aufzeichnung ist die dritte Passform. Ein Revisionseintrag, der festhält, dass eine Sitzung zugelassen wurde, mit Identität und Zeit, gehört genau hierher. Er ist kein Verkehrsprotokoll und sollte sich nicht als eines ausgeben. Wenn später jemand fragt, was ein Client innerhalb des Tunnels getan hat, muss die Antwort von woanders kommen.

Paketarbeit gehört auf einen Paketpfad

Wenn die Anforderung ist, Bytes im Flug zu sehen oder zu verändern, muss die Komponente im Weiterleitungspfad sitzen: eine Firewall-Regel mit Warteschlange, ein Hook zur Verkehrssteuerung oder ein Weiterleiter im Userspace. Diese Mechanismen sehen Pakete, und sie haben ihren eigenen Zustand, ihre eigenen Fehlermodi und ihr eigenes Leistungsprofil.

Nutzdaten auf dieser Ebene zu bearbeiten ist schwerer als sie zu lesen. Ein geändertes Byte kann ein Längenfeld, eine Prüfsumme oder eine Protokoll-Zustandsmaschine ungültig machen, und ein Tunnel der dritten Ebene schützt dich vor nichts davon. Er bedeutet nur, dass die äußeren Header nicht die sind, die du bearbeitest. Kalkuliere diese Reparaturarbeit ein, bevor du jemandem eine Inhaltsumschreibung versprichst.

Ein Interface-Mitschnitt ist das billigste Werkzeug dieser Kategorie, und er ist eine Beobachtung, kein Editor. Leute verwechseln beides, weil beides als Verkehrsbeobachtung beschrieben wird, aber ein Mitschnitt erzeugt eine Datei und ein Paketpfad erzeugt eine Entscheidung.

Anwendungsänderungen gehören in die Anwendung

Wenn das Ziel ist, zu ändern, was eine Anfrage enthält oder wie eine Antwort gebildet wird, ist der richtige Ort der Dienst selbst oder ein Proxy, der das Protokoll absichtlich beendet. Diese Komponenten verstehen bereits Anfragen, Antworten und die Authentifizierung, die die Anwendung erwartet, und das ist genau der Kontext, der einem Paketfilter fehlt.

Adressübersetzung steht aus gutem Grund am Ende dieser Liste. Sie schreibt Adressen und Ports um und lässt die Nutzdaten in Ruhe, ist also kein Inhaltswerkzeug, so oft sie auch in einem Rezept auftaucht, das ebenfalls Inhalt erwähnt.

Diese Grenzen getrennt zu halten macht einen Entwurf erklärbar. Sitzungsrichtlinie im Hook, Paketbehandlung auf einem Paketpfad und Anwendungsänderung dort, wo das Protokoll absichtlich beendet wird: drei Sätze, die zugleich als Prüfliste für die Durchsicht dienen.

Wo TLS das Gespräch noch beendet

Eines überlebt alles oben Gesagte: Verkehr im Tunnel, der HTTPS trägt, behält seine eigene Transportverschlüsselung. Die Schlüssel des VPN zu besitzen gibt dir das innere IP-Paket und gibt dir nicht die Sitzungsschlüssel für die Website am anderen Ende.

Deshalb kann ein Hook Inhalt selbst im Prinzip nicht prüfen, und deshalb sieht ein Paketpfad Chiffrat, sofern die Bereitstellung nicht absichtlich das innere TLS beendet. Skriptvertrag beschreibt, was der Hook bekommt; er sagt nichts über Nutzdaten, weil es keine Nutzdaten zu geben gibt.

Ähnliche Artikel