Tags: DHCP, PowerShell, Troubleshooting
DHCP-Server sind in den meisten Umgebungen eine kritische Komponente der Infrastruktur. Neben einem Monitoring, das die grundsätzliche Verfügbarkeit des Dienstes sicherstellt, kann man auch den Status der IP-Bereiche (Scopes) oder Leases abrufen. PowerShell bietet für diesen Zweck mehrere Cmdlets.
Die Befehle zur Verwaltung Windows-basierter DHCP-Server sind Bestandteil des Moduls DhcpServer, das man über die Installation der RSAT für DHCP erhält. Die hier besprochenen Cmdlets sind vor allem nützlich, um auftretenden Problemen auf den Grund zu gehen.
Alle Server ermitteln, Einstellungen abfragen
Für die Auswertung der DHCP-Dienste wird man im ersten Schritt eine Liste der Server abrufen, die diesen Service im Netz anbieten. Das gilt natürlich besonders für größere Umgebungen. Zuständig dafür ist das Cmdlet Get-DhcpServerInDC, das man in der Regel ohne Parameter aufruft.
Für die weitere Nutzung in anderen Kommandos ist es sinnvoll, die Namen der zurückgegebenen Server in einer Variablen zu speichern:
$dhcps = (Get-DhcpServerInDC).DnsName
Wie der Name schon vermuten lässt, liefert es die im Active Directory registrierten DHCP-Server. Nicht genehmigte DHCP-Server, die ohne Wissen der IT-Abteilung ans Netz angeschlossen wurden, findet man damit also nicht. Für diesen Zweck gibt es aber eigene Tools.
Einige grundlegende Einstellungen eines DHCP-Servers, etwa ob dieser Mitglied in der Domäne und autorisiert ist, lassen sich mit
Get-DhcpServerSetting -ComputerName <MyDHCP>
abfragen. Man erhält dabei auch die Auskunft, ob die Datenbank von einem Backup wiederhergestellt wurde. Diese und andere Informationen zur Datenbank bekommt man auch über
Get-DhcpServerDatabase -ComputerName <MyDHCP>
Mit Hilfe von
Get-DhcpServerAuditLog -ComputerName <MyDHCP>
erfährt man, ob das Logging für den DHCP-Dienst aktiviert wurde und wo das Log-File gespeichert ist. Seinen Inhalt anzeigen kann man damit aber nicht. Vielmehr muss man diese Textdatei (mit PowerShell) selbst auswerten.
Eigene Cmdlets für IPv4 und IPv6
Die meisten Funktionen des Moduls gibt es in zweifacher Ausführung, und zwar mit einer '4' bzw. einer '6' im Namen, weil sie sich auf IPv4 bzw. IPv6 beziehen. Die folgenden Beispiele für IPv4 lassen sich daher auf IPv6 übertragen.
Statistiken zum DHCP-Service für IPv4 insgesamt liefert
Get-DhcpServerv4Statistics -ComputerName <MyDHCP>
Sie enthalten Zahlen, die man auch über die Auswertung der Scopes bekommt, aber hier handelt es sich um die Summen für alle Bereiche.
Analyse von Scopes
Die meisten Abfragen, seien es solche zu freien IP-Adressen, vergebenen Leases oder allgemeinen Statistiken, beziehen sich jedoch auf bestimmte Bereiche. Diese ermittelt man mit Get-DhcpServerv4Scope. Wenn man etwa alle Scopes sämtlicher DHCP-Server ausgeben möchte, beispielsweise um zu sehen, ob es zwischen ihnen Überschneidungen gibt, dann könnte man so vorgehen:
$dhcps = (Get-DhcpServerInDC).DnsName
$dhcps | foreach {Get-DhcpServerv4Scope -ComputerName $_}
Einen Überblick über die wichtigsten Kennzahlen der IPv4-Bereiche eines DHCP-Servers erhält man mit
Get-DhcpServerv4ScopeStatistics -ComputerName <MyDHCP>
Durch diesen Befehl erfährt man, zu welchem Prozentsatz ein Scope bereits ausgelastet ist und wie viele Adressen schon in Verwendung bzw. noch verfügbar sind.
Freie, vergebene und reservierte Adressen
Die freien Adressen kann man mit Get-DhcpServerv4FreeIPAddress erfragen. Ruft man es nur mit dem Parameter ScopeID auf, dann erhält man bloß die nächste freie Adresse. Will man weitere verfügbare Adressen, dann gibt man zusätzlich einen Wert für NumAddress an:
DhcpServerv4FreeIPAddress -ComputerName <MyDHCP> -ScopeId 192.168.0.0 `
-StartAddress 192.168.0.59 -NumAddress 20
Dieses Beispiel listet 20 freie Adressen beginnend bei 192.168.0.59 auf.
Komplementär dazu möchte man häufig wissen, welche Adressen bereits vergeben wurden:
Get-DhcpServerv4Lease -ComputerName <MyDHCP> -ScopeId 192.168.0.0
In der Ausgabe dieser Funktion finden sich als zusätzliche Informationen die MAC-Adresse der Clients und der Status der Leases.
Neben den freien und bereits zugeteilten Adressen gibt es zumeist noch solche, die für Geräte mit einer festen IP reserviert wurden. Diese lassen sich so abfragen:
Get-DhcpServerv4Reservation -ComputerName <MyDHCP> -ScopeId 192.168.0.0
Wenn ein Client keine Adresse zugewiesen bekommt, dann kann man so prüfen, ob er in die Deny-Liste eingetragen wurde:
Get-DhcpServerv4Filter -ComputerName <MyDHCP>
Insgesamt enthält das Modul DhcpServer 121 Kommandos, die aber nicht nur Einstellungen und den Status abfragen, sondern den Service auch konfigurieren können. Die vollständige Dokumentation dazu findet sich auf Microsoft Doc.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
Weitere Links