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
C:\>route print -4 =========================================================================== Interface List 5...00 15 5d be 11 1e ......Microsoft Hyper-V Network Adapter 1...........................Software Loopback Interface 1 3...00 00 00 00 00 00 00 e0 Microsoft ISATAP Adapter =========================================================================== IPv4 Route Table =========================================================================== Active Routes: Network Destination Netmask Gateway Interface Metric 0.0.0.0 0.0.0.0 192.168.222.254 192.168.222.15 271 127.0.0.0 255.0.0.0 On-link 127.0.0.1 331 127.0.0.1 255.255.255.255 On-link 127.0.0.1 331 127.255.255.255 255.255.255.255 On-link 127.0.0.1 331 192.168.222.0 255.255.255.0 On-link 192.168.222.15 271 192.168.222.15 255.255.255.255 On-link 192.168.222.15 271 192.168.222.255 255.255.255.255 On-link 192.168.222.15 271 224.0.0.0 240.0.0.0 On-link 127.0.0.1 331 224.0.0.0 240.0.0.0 On-link 192.168.222.15 271 255.255.255.255 255.255.255.255 On-link 127.0.0.1 331 255.255.255.255 255.255.255.255 On-link 192.168.222.15 271 =========================================================================== Persistent Routes: Network Address Netmask Gateway Address Metric 0.0.0.0 0.0.0.0 192.168.222.254 Default ===========================================================================
Die PowerShell hat ab der Version 4.0 einen eigenen Befehl für die Routen:
Get-NetRoute
Get-NetRoute | ft -a ifIndex DestinationPrefix NextHop RouteMetric PolicyStore ------- ----------------- ------- ----------- ----------- 5 255.255.255.255/32 0.0.0.0 256 ActiveStore 1 255.255.255.255/32 0.0.0.0 256 ActiveStore 5 224.0.0.0/4 0.0.0.0 256 ActiveStore 1 224.0.0.0/4 0.0.0.0 256 ActiveStore 5 192.168.222.255/32 0.0.0.0 256 ActiveStore 5 192.168.222.15/32 0.0.0.0 256 ActiveStore 5 192.168.222.0/24 0.0.0.0 256 ActiveStore 1 127.255.255.255/32 0.0.0.0 256 ActiveStore 1 127.0.0.1/32 0.0.0.0 256 ActiveStore 1 127.0.0.0/8 0.0.0.0 256 ActiveStore 5 0.0.0.0/0 192.168.222.254 256 ActiveStore 5 ff00::/8 :: 256 ActiveStore 1 ff00::/8 :: 256 ActiveStore 5 fe80::f9fa:3e61:3d6d:c625/128 :: 256 ActiveStore 3 fe80::5efe:192.168.222.15/128 :: 256 ActiveStore 5 fe80::/64 :: 256 ActiveStore 1 ::1/128 :: 256 ActiveStore
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 *
$route = Get-NetRoute $route[0] | select * Publish : No Protocol : Local Store : ActiveStore AddressFamily : IPv4 ifIndex : 5 Caption : Description : ElementName : InstanceID : <??8<??8<??8<??9=<55?55:8:8:8:55; AdminDistance : DestinationAddress : IsStatic : RouteMetric : 256 TypeOfRoute : 3 CompartmentId : 1 DestinationPrefix : 255.255.255.255/32 InterfaceAlias : Ethernet InterfaceIndex : 5 NextHop : 0.0.0.0 PreferredLifetime : 10675199.02:48:05.4775807 ValidLifetime : 10675199.02:48:05.4775807 PSComputerName : CimClass : ROOT/StandardCimv2:MSFT_NetRoute CimInstanceProperties : {Caption, Description, ElementName, InstanceID...} CimSystemProperties : Microsoft.Management.Infrastructure.CimSystemProperties
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
Get-NetAdapter | where {$_.name -like "*nat*"} | ft -a Name InterfaceDescription ifIndex Status MacAddress LinkSpeed ---- -------------------- ------- ------ ---------- --------- vEthernet (NetNat) Hyper-V Virtual Ethernet Adapter #2 67 Up 00-15-5D-AA-FA-00 10 Gbps
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
Get-NetRoute | Where-Object {($_.ifIndex -eq 67) -and ($_.Addressfamily -eq "IPv4")} | FT InterfaceAlias,` AddressFamily,DestinationPrefix,NextHop,Routemetric -a InterfaceAlias AddressFamily DestinationPrefix NextHop Routemetric -------------- ------------- ----------------- ------- ----------- vEthernet (NetNat) IPv4 255.255.255.255/32 0.0.0.0 256 vEthernet (NetNat) IPv4 224.0.0.0/4 0.0.0.0 256 vEthernet (NetNat) IPv4 192.168.222.255/32 0.0.0.0 256 vEthernet (NetNat) IPv4 192.168.222.254/32 0.0.0.0 256 vEthernet (NetNat) IPv4 192.168.222.0/24 0.0.0.0 256
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
New-NetRoute -DestinationPrefix "192.168.222.111/32"-InterfaceIndex 67 -NextHop 192.168.0.1 -RouteMetric 10 |ft -a ifIndex DestinationPrefix NextHop RouteMetric ifMetric PolicyStore ------- ----------------- ------- ----------- -------- ----------- 67 192.168.222.111/32 192.168.0.1 10 15 ActiveStore 67 192.168.222.111/32 192.168.0.1 10 PersistentStore
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
New-NetRoute -DestinationPrefix "192.168.222.111/32"-InterfaceIndex 67 -NextHop 192.168.0.1 -RouteMetric 10 -PolicyStore ActiveStore | ft -a ifIndex DestinationPrefix NextHop RouteMetric ifMetric PolicyStore ------- ----------------- ------- ----------- -------- ----------- 67 192.168.222.111/32 192.168.0.1 10 15 ActiveStore
Löschen der neuen Routen geht genauso einfach:
Remove-NetRoute -DestinationPrefix "192.168.222.111/32"-InterfaceIndex 67 -Confirm:$false
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?