TCP en DNS in PowerShell
Stel je wilt wat meer weten over de netwerkomgeving van de computer waarop je werkt, en je beschikt niet over andere tools dan al standaard aanwezig zijn in Windows. Wat heeft PowerShell dan te bieden?
DOS commando's
Ok. De eerste alinea in de blog en ik begin gelijk al met andere tools. Lijkt niet eerlijk. Maar niet stilstaan bij de good-old DOS tools voelt ook niet goed. Er zijn een paar standaard commando's die iedere beheerder wel zou moeten kennen, dus waarschijnlijk is dit voor iedereen gesneden koek.
arp -a: Geeft een overzicht van de bekende (gedetecteerde en opgeslagen) netwerk adressen. In een migrerende netwerk omgeving wordt soms ook arp -d * gebruikt om de ARP tabel te legen.
ipconfig /all: Geeft informatie over alle netwerkkaarten op de computer. Ook handig: ipconfig /flushdns om de DNS cache te legen.
netstat -o -a -n: Geeft een overzicht van alle netwerk connecties en poorten waarop de host luistert.
route print: Laat zien wat de routes zijn naar andere netwerken.
DnsClient
De DnsClient module is standaard aanwezig in PowerShell en kent een paar coole commando's:
Clear-DnsClientCache: De PowerShell tegenhanger van ipconfig /flushdns. Leegt de DNS cache.
Get-DnsClientCache: De Powershell tegenhanger van ipconfig /displaydns. Is alleen veel mooier om mee te werken. Bijvoorbeeld in combinatie met Out-GridView (Get-DnsClientCache | Out-GridView) geeft het een veel duidelijkere output dan het oude ipconfig commando. Ook handig: Je kunt het gemakkelijk exporteren naar CSV: Get-DnsClientCache | Export-Csv "dns-cache.csv".
NetTCPIP
Een andere PowerShell module die standaard aanwezig is met veel netwerk commando's (Misschien vandaar ook de naam van de module). Handig om hieruit op te pikken:
Get-NetIPInterface: Levert een overzicht op van alle op het systeem aanwezige netwerk interfaces. Dit is handig, omdat veel van de komende commando's per interface informatie leveren. Om alleen de actieve netwerkkaarte te zien is het handig om de volgende parameter te gebruiken: Get-NetIPInterface -ConnectionState "Connected".
Get-NetRoute: De PowerShell tegenhanger van het route commando. Op mijn systeem levert het zonder parameters 61 regels informatie terug. Door een van de interface indexes als parameter te gebruiken wordt het een stuk leesbaarder:
Get-NetRoute -InterfaceIndex <index>
Hetzelfde geldt voor het commando Get-NetIPAddress, waarme je de IP adressen van je systeem kunt opvragen. Dit levert veel info op. Het gebruik van de parameter -InterfaceIndex helpt om het overzichtelijk te houden. (Get-NetIPAddress -InterfaceIndex <index>)
Get-NetNeighbor: Grofweg de PowerShell variant van het arp commando. Het voordeel in PowerShell is het gemak waarmee je met de output van het commando verder kunt werken.
Bijvoorbeeld: (Get-NetNeighbor).IPAddress | Sort-Object -Unique | Measure-Object geeft snel aan hoeveel (unieke) adressen in de cache staan. En uiteraard kun je dat net als bovenstaanden ook nog per interface filteren als je dat wilt.
Find-NetRoute: Geeft aan welke routering gebruikt wordt om een bepaald IP adres te benaderen. Handig om te controleren of het ook daadwerkelijk zo loopt als je zou verwachten. Om bijvoorbeeld de route naar een adres (op naam) te checken:
Find-NetRoute -RemoteIPAddress (Resolve-DnsName "aldoen.de").IPAddress
Test-NetConnection: De PowerShell tegenhanger van ping, maar dat met extra's. Grappig detail: Als je het commando aftrapt zonder parameters gaat het standaard naar "internetbeacon.msedge.net".
Naast de standaard ICMP functie kun je het ook gebruiken om TCP connecties te testen. Geef dan een poort mee als parameter: Test-NetConnection -ComputerName "aldoen.de" -Port 443.
Overig
Op de een of andere manier zijn er altijd meerdere manieren om dingen uit te zoeken. Zoals net hierboven geschetst kun je met Get-NetIPInterface mooi uitpluizen welke netwerkkaarten aanwezig en actief zijn. Maar er is nog een commando, uiteraard weer ergens anders verstopt: Get-NetAdapter, uit de module NetAdapter (dat dan weer wel). Het Commando Get-NetAdapter geeft alleen net weer wat anders weer: Alleen de fysieke adapters. (dus niet het loopback device en sommige VPN verbindingen). Wel handig van het commando is de info over de hardware.
Harm ter Veer