Der Laptop verbindet sich mit dem Büro-VPN, und alles folgt ihm, einschließlich der Webseite eines Druckers und eines Intranets, das nur im lokalen Netz antwortet. Eine handgemachte Route behebt das für eine Stunde, dann bricht die Verbindung ab, kommt zurück, und die Ausnahme ist weg. Mit dem Tunnel ist nichts verkehrt: Windows führt eine einzige Routingtabelle, und der VPN-Adapter schreibt seinen Anteil daran bei jeder Verbindung neu. Was überlebt, ist alles, was außerhalb der eigenen Einträge des Adapters liegt.

Welchen Eintrag der Tunnel übernimmt

Halten Sie die Tabelle zweimal fest, einmal mit abgebautem Tunnel und einmal mit aufgebautem, und vergleichen Sie die Standardzeilen. Wenn das Profil das Standardpräfix beansprucht, ist der Eintrag des Adapters die breiteste Zeile der Tabelle, also muss jede Ausnahme enger sein als er. Das ist Arithmetik über die Präfixlänge und keine Aussage über Vertrauen oder Richtlinie. Sie legt auch fest, welches Interface die Ausnahme nennen muss.

Notieren Sie den Interface-Index und das lokale Gateway, bevor Sie weitermachen, denn beides ändert sich, wenn die Maschine einem anderen Netzwerk beitritt. Die Befehle unten lesen sie von der Maschine und nicht aus dem Gedächtnis.

route print -4
Find-NetRoute -RemoteIPAddress 198.51.100.30

Der zweite Befehl meldet das Interface und den nächsten Hop, die diese eine Adresse gerade jetzt nutzen würde, was besser ist, als vierzig Zeilen zu lesen und zu raten. Führen Sie ihn vor und nach dem Verbinden aus, und Sie haben das Paar, das es wert ist, einem Änderungsdatensatz beigefügt zu werden. Beide Ausgaben liefern die Zahlen, die im Rest dieser Seite verwendet werden.

Eine Host-Route gewinnt über die Spezifität

Das längste Präfix entscheidet über den Gewinner, also schlägt ein /32 über das physische Gateway die Standardroute durch den Tunnel, ohne dass der Tunnel angefasst wird. Verkehr zu dieser Adresse verlässt das lokale Interface, während alles andere seinen bestehenden Weg behält. Der Tunnel trägt weiterhin die Standardroute und ist für dieses Ziel einfach nicht mehr der einzige Kandidat. Die Präfixlänge ist der einzige Hebel, den die Tabelle bietet, und für diese Aufgabe reicht er.

Die Spezifität schließt auch die naheliegende Abkürzung aus, einen Domainnamen auszunehmen, denn die Tabelle gleicht Adressen ab, und ein Name kann sich in mehrere auflösen. Lösen Sie zuerst den Host auf und entscheiden Sie dann, welche seiner Adressen die Ausnahme verdient.

Für alles Folgende nehmen Sie eine Verbindung namens Office, ein lokales Gateway von 10.0.0.1 auf Interface 7 und ein Ziel unter 198.51.100.30 an. Das sind Platzhalter und keine Standardwerte, und die Befehle oben liefern die Werte, die Ihre Maschine tatsächlich verwendet. Bewahren Sie diesen Ersetzungshinweis bei der Änderung auf, damit der nächste Leser die Zahlen nicht kopiert.

Sorgen Sie dafür, dass die Route die nächste Wiederverbindung überlebt

Windows bietet keine Ausschlussanweisung für eine VPN-Verbindung, also muss die Ausnahme auf dem physischen Interface leben, wo der Adapter sie nicht überschreibt. Das Cmdlet, das wie die Antwort aussieht, tut das Gegenteil: Add-VpnConnectionRoute verschiebt ein Präfix in den Tunnel, und das ist der Spiegelfall, in dem ein geteiltes Profil ein Ziel tragen und den Rest lokal lassen soll. Danach zu greifen garantiert hier, dass der Verkehr, den Sie draußen halten wollten, hineingeht.

Die manuelle Form ist ein einziger Befehl. Ihre Schwäche ist der Netzwerkwechsel und nicht die Wiederverbindung.

route -p add 198.51.100.30 mask 255.255.255.255 10.0.0.1 metric 1 if 7

Das überlebt einen Neustart dank -p und schickt eine Adresse über Interface 7 hinaus, während der Tunnel alles andere trägt. Verschieben Sie den Laptop in ein anderes Netzwerk, und sowohl Gateway als auch Index veralten, sodass der Eintrag still versagt. Halten Sie fest, wem er gehört und wann er entfernt werden soll.

Ein Verbindungsskript ist die robustere Variante, weil es die Ausnahme nach jeder Verbindung erneut hinzufügt, statt zu hoffen, dass der Eintrag überlebt hat. Die beiden Zeilen unten gehören in das, was den Tunnel startet, nicht in ein Anmeldeskript.

rasdial Office
route add 198.51.100.30 mask 255.255.255.255 10.0.0.1 metric 1 if 7

Was auch immer den Tunnel hochbringt, ist der richtige Ort für die zweite Zeile, und rasdial kehrt erst zurück, wenn die Verbindung steht, sodass die Route hinter den eigenen Einträgen des Adapters landet. Führen Sie es nach einem Aufwachen erneut aus, denn ein Suspend kann die Route verlieren und den Tunnel oben lassen. Ist die Aufgabe die umgekehrte, ein einzelnes Präfix in den Tunnel zu schieben, während der Rest lokal bleibt, dann ist Add-VpnConnectionRoute das richtige Werkzeug.

Routing kann keinen Prozess auswählen

Manchmal ist die Anforderung enger als ein Ziel: ein Programm soll den lokalen Weg nehmen, während alles andere im Tunnel bleibt. Routing kann das nicht ausdrücken, weil es Adressen abgleicht und keine Prozesse. Das brauchbare Muster schiebt das Problem in den Launcher.

Halten Sie das Profil von der Standardroute fern und starten Sie das eine Programm an die lokale Interface-Adresse gebunden, dann wird die Ausnahme zum Startbefehl, und der Tunnel behält, was er ohnehin schon bearbeitete. In der Routingtabelle ändert sich nichts, und deshalb überlebt das Wiederverbindungen. Es bedeutet auch, dass der Tunnel die Standardroute gar nicht erst besitzen darf, also ist das ein anderes Design und kein Flicken auf dem vorigen.

Seine Schwäche ist betrieblich und nicht technisch. Das Programm muss immer über den Wrapper starten, und fehlt die Bindung nach einem Aufwachen, nimmt es still den Weg, den die Tabelle anbietet. Das ist vertretbar für einen Browser, den Sie bewusst öffnen, und unannehmbar für alles, was den Tunnel niemals verlassen darf.

Verbindungen pro Benutzer lösen das auch nicht. Windows kann eine Verbindung an ein Konto binden, während die Routingtabelle maschinenweit bleibt, also leitet eine kontogebundene Verbindung mit einer Standardroute weiterhin jeden Prozess auf der Maschine um, einschließlich anderer Sitzungen. Der Geltungsbereich wird erst real, wenn der Routenbereich zum Konto passt. Zwei Personen, die einen Laptop teilen, teilen daher eine Tabelle, und die zweite erbt den Tunnel, den die erste gestartet hat.

Bestätigen Sie, dass die Ausnahme eine Wiederverbindung überlebt hat

Testen Sie die Änderung so, wie sie scheitern wird: trennen, erneut verbinden, eine neue Anwendung öffnen, dann eine Adresse anfordern, die lokal bleiben muss, und eine, die den Tunnel nutzen muss. Vergleichen Sie beide mit Find-NetRoute im verbundenen Zustand.

Fehlt das Präfix nach einer Wiederverbindung in der Tabelle, lebt es im falschen Objekt und nicht im falschen Format. Verschieben Sie es auf das physische Interface und wiederholen Sie den Test. Bewahren Sie beide Befehlsausgaben beim Änderungsdatensatz auf, denn eine Momentaufnahme des funktionierenden Zustands beantwortet später mehr Fragen als ein Absatz Erklärung. Die nächste Person will wissen, was das Verbinden erzeugt hat, nicht was Sie erzeugen wollten.

Ähnliche Artikel