Können DHCP-Routen deinen Datenverkehr am VPN-Tunnel vorbeileiten?
Verschlüsselung schützt Pakete erst, wenn sie im Tunnel sind. Die Routenwahl entscheidet, welche hineingelangen. Prüfe DHCP-Routen, Regeln und den Weg, den Apps nehmen.
Verschlüsselung beginnt an einer Grenze, und diese Grenze ist eine Routingentscheidung, die der Endpunkt trifft, bevor irgendein Paket gekapselt wird. Ein Netzwerk, das deine Schlüssel nie sieht, kann deinem Rechner trotzdem eine Route geben, die ihm besser gefällt als die des Tunnels selbst. Hier werden zwei Fehler verwechselt: ein Paket zu lesen, das schon im Tunnel ist, und ein Paket umzuleiten, das nie hineingelegt wurde.
Der Unterschied zählt, weil der zweite Fehler billiger einzurichten und viel leichter zu übersehen ist. Er zeigt sich als eine Anfrage, die über die falsche Schnittstelle hinausging, während der Client weiterhin eine gesunde Verbindung meldete.
Zwei Wege, wie ein Netzwerk dich beeinflussen kann
Ein Paket, das den Tunnel erreicht, hat seine Nutzlast vor jedem Hop verborgen, den es überquert, und dieser Schutz hält auch dann, wenn der Weg dich überrascht. Ein Paket, das den Tunnel nie erreicht, ist eine gewöhnliche Anfrage von deiner Adresse, dorthin geschickt, wohin die Routentabelle zeigte. Der erste Fehler braucht eine gebrochene Chiffre oder einen kompromittierten Gegenüber, der zweite nur eine Konfigurationsnachricht, der dein Rechner zu vertrauen beschloss. Diese Asymmetrie ist der Grund, warum die Routing-Hälfte eine eigene Prüfung verdient.
Geräte auf dem Weg brauchen deine Schlüssel nicht, um den zweiten Fall zu beeinflussen. Sie brauchen nur, dass dein Endpunkt eine Route, einen Resolver oder eine Richtlinienregel akzeptiert, die eine erzeugt.
expected: app -> tunnel device -> encapsulation -> internet
observed: app -> wlan0 -> plaintext -> internet
Woher eine Route kommen kann, bevor der Tunnel existiert
DHCP verteilt mehr als eine Adresslease. Die Option für klassenlose statische Routen kann Zielpräfixe und nächste Hops tragen, und RFC 3442 erörtert die Sicherheitsfolgen einer falschen Routeradresse: fehlgeleiteter Verkehr, eine Dienstverweigerung oder ein Beobachter, der auf dem Weg sitzt. Ein Client, der diese Routen akzeptiert, bevor der Tunnel steht, kann mit einem bevorzugten Weg enden, der nichts mit deinem Anbieter zu tun hat.
Nichts davon macht Routeninjektion universell. Der Client muss die Option akzeptieren, das Präfix muss den Verkehr abdecken, der dir wichtig ist, der gewählte nächste Hop muss erreichbar sein, und die Durchsetzungsrichtlinie muss das Paket diesen Weg hinauslassen. Entferne eines davon, und dieselbe Antwort ist harmlos. Deshalb können sich auch zwei Rechner in einem Netz unterschiedlich verhalten, da sie nicht denselben Client, dieselbe Richtlinie oder auch nur dieselbe Adressfamilie ausführen.
IPv6 verdient einen eigenen Durchgang, weil Router-Ankündigungen eine Standardroute über anderen Code tragen als die DHCPv4-Option. Ein Test, der nur die v4-Tabelle prüft, hat das nicht abgedeckt.
Prüfe den Weg, den der Kernel tatsächlich wählt
Routenabfragen sind beantwortbar, also frage sie, statt aus einer Statusleuchte zu schließen. Die folgenden Befehle zeigen die gewählte Route und Quelle für ein Ziel sowie die Regeln, die die Haupttabelle überstimmen können. Führe sie während der Verbindung aus und erneut nach einem Reconnect, denn eine Lease-Erneuerung kann die Antwort ändern.
ip route get 203.0.113.10
ip route show table all | grep -E '^(default|203\.0\.113)'
ip rule show
resolvectl query example.com
Lies die Ausgabe auf zwei Dinge: die in der Route genannte Schnittstelle und die gewählte Quelladresse. Eine Tunnelroute nennt das Tunnelgerät, eine geleakte Route das physische, und der Unterschied ist sichtbar, ohne etwas zu entschlüsseln. Ändert sich die Antwort zwischen Läufen, behalte beide Ausgaben und vergleiche die Regeln, die sie erzeugt haben.
Hör nicht bei der Standardroute auf. Eine Anwendungsausnahme, ein Split-Tunnel-Präfix oder eine zweite Richtlinienregel können ein bestimmtes Ziel um den Tunnel herumführen, während die Standardroute weiter hineinzeigt.
Entscheide, wo die Durchsetzung liegen soll
Drei Bedingungen entscheiden, ob Durchsetzung auf Clientseite reicht oder du etwas außerhalb brauchst. Wenn der Client Routen für jede Adressfamilie installiert und verteidigt, die du nutzt, ist ein Tunnel, der die Standardroute besitzt, meist ausreichend. Wenn der Rechner lokale Ressourcen erreichen muss, während alles andere im Tunnel bleibt, müssen diese Ausnahmen aufgezählt und verantwortet werden, statt sie dem zu überlassen, was das Zugangsnetz angekündigt hat. Und wenn die Plattform Verkehr pro Anwendung an eine Schnittstelle binden kann, ist diese Bindung eine stärkere Garantie als eine Route, die alles überstimmen kann.
Was du auch wählst, schreibe die Entscheidung dorthin, wo die Konfiguration liegt. Eine Regel, die existiert, weil jemand sie während eines Vorfalls eingetippt hat, übersteht den nächsten Neustart nicht, also halte lokale Ausnahmen und Bootstrap-Ausnahmen eng und halte fest, warum jede existiert.
Führe die Nachschlagebefehle nach jedem Client-Upgrade und jeder Netzwerkänderung erneut aus und vergleiche mit der letzten aufgezeichneten Ausgabe. Die Routentabelle ist die Durchsetzungsgrenze, also behandle sie als eine.