DHCP-Server analysieren mit PowerShell

    DHCP ServerDHCP-Server sind in den meisten Umgebungen eine kritische Kompo­nente der Infra­struktur. Neben einem Moni­toring, das die grund­sätzliche Verfüg­barkeit des Dienstes sicher­stellt, kann man auch den Status der IP-Bereiche (Scopes) oder Leases abrufen. Power­Shell 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ück­gegebenen 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 wieder­hergestellt 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.

    IPv4-bezogene Statistiken für einen DHCP-Server mit Get-DhcpServerv4Statistics abrufen

    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.

    Statistiken für die einzelnen IPv4-Bereiche ausgeben

    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.

    Freie Adressen eines Bereichs ausgeben

    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.

    Ausgegebene Leases eines Scopes anzeigen

    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.

    Keine Kommentare