Routing Tabellen mit der PowerShell

Im letzten Blogeintrag haben wir uns angesehen, man den ipconfig Befehl aus der CMD Shell mit der PowerShell ablösen kann.

In diesem Blogeintrag schauen wir uns an, wie man den route Befehl aus der CMD Shell mit der PowerShell ablösen kann.

In der Routing Tabelle werden Regeln hinterlegt, mit denen ein Datenpaket den besten Weg zum nächsten Ziel findet. Jede Zeile in der Routing Tabelle beinhaltet folgende Informationen:

  • Die Netzadresse und Subnetzmaske (Die Definition des Netzwerkbereichs, für den die Route gilt)
  • Das Gateway (next hop - die Adresse an, die das Paket weitergeleitet wird)
  • Die Schnittstelle (das Netzwerkinterface, welches die Daten transportiert)
  • Die Metrik (Die Gewichtung der Route. Wenn mehrere Routen zum Ziel führen, wird die mit der kleinsten Metrik genutzt)

Um sich in der CMD Shell die aktuellen Routen anzeigen zu lassen, nutzt man den Befehl

route print

Um nur die IPv4 Routen zu sehen, hängt man ein -4 an

route print -4

Die PowerShell hat ab der Version 4.0 einen eigenen Befehl für die Routen:

Get-NetRoute

Um dieses Ergebnis genauer anschauen zu können, leiten wir es in eine Variable um und sehen uns ein Element im Detail an

$route = Get-NetRoute
$route[0] | select *

In der PowerShell ist es dadurch sehr leicht möglich, nur einzelne routen zu finden. Als Beispiel möchte ich die routen von meinem lokal eingerichteten NAT Interface ausgeben lassen (mit diesem Interface können meine virtuellen Hyper-V VMs das Internet erreichen)

Suche mein NAT Interface:

Get-NetAdapter | where {$_.name -like "*nat*"} | ft -a

Ok, das Interface mit "NAT" im Namen hat den Index 67

Zeige mir alle IPv4 Routen von diesem Interface mit den relevanten Informationen an:

Get-NetRoute |  Where-Object {($_.ifIndex -eq 67) -and ($_.Addressfamily -eq "IPv4")} | FT InterfaceAlias,`
AddressFamily,DestinationPrefix,NextHop,Routemetric -a

Füge für die einzelne IP 192.168.222.111 dauerhaft eine andere Route mit einer kleineren Metrik (=bevorzugt) hinzu:

New-NetRoute -DestinationPrefix "192.168.222.111/32"-InterfaceIndex 67 -NextHop 192.168.0.1 -RouteMetric 10

Mit diesem Befehl wurde die Route beiden Stores hinzugefügt

  • ActiveStore = Aktiv bis zum nächsten Neustart
  • Persistantstore = Dauerhaft aktiv - die PersistanStore Regeln werden nach einem Neustart in den ActiveStore kopiert

Um eine temporäre Route zu setzten, die nicht bei einem Neustart weiter existiert, muss der Parameter -PolicyStore ActiveStore angefügt werden:

New-NetRoute -DestinationPrefix "192.168.222.111/32"-InterfaceIndex 67 -NextHop 192.168.0.1 -RouteMetric 10 -PolicyStore ActiveStore | ft -a

Löschen der neuen Routen geht genauso einfach:

Remove-NetRoute -DestinationPrefix "192.168.222.111/32"-InterfaceIndex 67 -Confirm:$false

Im nächsten Blogeintrag beschäftigen wir uns damit, wie man mit der PowerShell unter Windows 10 ein NAT Interface einrichtet.

Was denken Sie?