Alte DNS-Einträge automatisch löschen unter Windows Server


    Tags: , ,

    Dynamisches DNS-Update durch DHCPClients, die ihre IP-Konfiguration über DHCP erhalten, können DNS-Records selbständig anlegen und aktualisieren. Wenn jedoch Rechner aus dem Netzwerk verschwinden, dann bleiben diese Einträge zurück und füllen nach und nach die DNS-Datenbank. Windows Server verfügt über eine Funktion zum periodischen Aufräumen solcher Rückstände.

    In Kombination mit dem dynamischen Update von DNS-Records trägt besonders die Virtualisierung dazu bei, dass immer mehr veraltete Einträge die DNS-Datenbank bevölkern. Während die Zahl der physikalischen Rechner meist relativ konstant bleibt, kommen häufig neue VMs hinzu, die nur eine kurze Lebensdauer haben. Ähnliche Auswirkungen auf den DNS-Dienst hat die zunehmende Zahl an mobilen Geräten, die sich nur temporär in das Netzwerk einbuchen.

    Voraussetzungen für Ressourceneinträge

    Das zeitgesteuerte Aufräumen solcher veralteten Einträge ist keine triviale Angelegenheit und erfordert eine Konfiguration auf mehreren Ebenen. Dabei sollte man die nötige Umsicht walten lassen, weil eine unsachgemäße Anwendung des Features die DNS-Datenbank stärker reinigen könnte als einem lieb ist. Folgende Anleitung beschreibt das Vorgehen bei einem in das AD integrierten DNS.

    Unabhängig davon, welche Fristen man für das Aufräumen alter Einträge wählt, müssen diese zwei Voraussetzungen erfüllen, um automatisch gelöscht zu werden:

    • Sie benötigen einen Zeitstempel. Er wird von den Clients regelmäßig aktualisiert, etwa wenn der DHCP-Server die Lease erneuert oder der Rechner neu bootet.
    • Die Option Eintrag löschen, sobald er verfällt muss aktiviert sein.

    Dynamische Einträge haben einen Zeitstempel, der von den Clients regelmäßig aktualisiert wird.

    Beides trifft auf dynamische Einträge per Voreinstellung zu, aber sie werden dennoch nicht entfernt, solange dieses Feature nicht auf Zonen- und Server-Ebene aktiv ist. Dagegen enthalten statische Records, die der Administrator manuell anlegt, als Zeitangabe den Wert 0 und das Aufräumen ist bei ihnen abgeschaltet.

    Alterung der Records festlegen

    In einem ersten Schritt wird man sich einen Überblick über den Status Quo verschaffen wollen. Eine chronologisch sortierte Liste sämtlicher Einträge einer Zone bietet das MMC-Snapin für DNS, wenn man auf die Spalten­überschrift Zeitstempel klickt.

    Anschließend prüft man, welches Alter in der betreffende Zone eingestellt ist, um Einträge bei Aktivierung der Aufräumfunktion zu löschen. Diese Frist setzt sich aus zwei Perioden zusammen, die man unter den Eigenschaften einer Zone => Allgemein => Alterung findet:

    • Intervall für Nicht-Aktualisierung: Um den Traffic für die Replikation von DNS-Einträgen niedrig zu halten, gibt Microsoft eine Zeitspanne vor, innerhalb der ein Client den Zeitstempel nicht erneuern kann. Erhält er etwa eine neue Lease vom DHCP-Server und schreibt damit den Zeitstempel neu, dann kann er diesen laut Vorgabe in den nächsten 7 Tagen nicht mehr ändern. Ein Update der IP-Adresse ist jedoch während dieser Phase weiterhin möglich.
    • Aktualisierungsintervall: Es definiert einen Zeitraum, der mit dem Ende der Nicht-Aktualisierung beginnt und festlegt, ab wann ein Eintrag als veraltet gilt.

    Maßgeblich für das Aufräumen ist die Summe aus den beiden Intervallen. Es ist schließlich nicht sinnvoll, Records schon als veraltet zu definieren, wenn Clients während der ersten Phase den Zeitstempel noch gar nicht aktualisieren dürfen. Die Voreinstellung für beide Werte liegt bei 7 Tagen, so dass Einträge nach frühesten 14 Tage nach dem letzten Update des Zeitstempels entfernt würden.

    Die Summe beider Intervalle bestimmt, ab wann ein Record in einer Zone als veraltet eingestuft wird.

    Ist man mit den Vorgabewerten einverstanden oder hat sie nach eigenem Ermessen geändert, dann kann man die Option Veraltete Ressourcen­einträge aufräumen aktivieren.

    Vorbereitung vor dem Aktivieren des Features auf dem Server

    Bevor man nun den Aufräumprozess auf Server-Ebene in Gang setzt, sollte man prüfen, ob wesentliche Voraussetzungen gegeben sind. Dazu zählt der Nachweis, dass dynamische Updates grundsätzlich funktionieren und die Zeitstempel der Einträge entsprechend aktualisiert werden.

    Besonders verräterisch ist dabei, wenn der Zeitstempel von Clients jene Frist überschreitet, nach der ihre Einträge gelöscht werden, obwohl sie sich erst kürzlich ins Netzwerk eingebucht haben. Um die Probe aufs Exempel zu machen, kann man auf einem Rechner, dessen Zeitstempel das Intervall für Nicht-Aktualisierung bereits überschritten hat, den Befehl

    ipconfig /registerdns

    ausführen und damit den Eintrag aktualisieren. Die entsprechende Änderung sollte anschließend im DNS-Manager erkennbar sein.

    Darüber hinaus sollte man prüfen, ob die Replikation zwischen den DNS-Servern fehlerfrei funktioniert. Andernfalls könnten Records verschwinden, nur weil bestimmte Domänen-Controller kein Update erhalten haben.

    Vom Aufräumen betroffene Records anzeigen

    Schließlich kann man vorab alle Einträge auflisten, die aufgrund der eingestellten Intervalle als veraltetet gelten und gelöscht würden. In PowerShell könnte man sie auf diese Weise erhalten:

    $scav = Get-DnsServerZoneAging -ComputerName <DNS-Server> -ZoneName contoso.de

    $intv = -($scav.NoRefreshInterval + $scav.RefreshInterval).days

    Get-DnsServerResourceRecord -ComputerName <DNS-Server> -zonename contoso.de |
    ? {$_.timestamp -lt ((Get-Date).addDays($intv)) -and $_.timestamp -ne $null} |
    sort timestamp

    Der erste Befehl liest die Werte für die beiden Intervalle aus den Einstellungen für die Alterung in der Zone contoso.de aus, der zweite errechnet ihre Summe in Tagen. Schließlich gibt das Cmdlet Get-DnsServerResourceRecord alle dynamischen Einträge aus, die älter als die Löschfrist sind.

    Aufräumen am Server aktivieren

    Stellt man keine Auffälligkeiten fest, dann kann man das Aufräumen auch im Server freischalten. Dazu öffnet man aus dem Kontextmenü des Servers den Dialog Eigenschaften und wechselt zur Registerkarte Erweitert. Dort hakt man die Checkbox Aufräumvorgang bei veralteten Einträgen automatisch aktivieren an. Zusätzlich definiert man in Tagen, wie oft dieser Prozess laufen soll.

    Auf Server-Ebene legt man auch fest, wie oft der Aufräumvorgang laufen soll.

    Im Kontextmenü des Servers findet sich zusätzlich der Befehl Alterung/Aufräumvorgang für alle Zonen festlegen. Er ist in diesem Zusammenhang nicht relevant. Vielmehr gibt er die beiden oben beschriebenen Intervalle für alle Zonen vor, die in Zukunft neu angelegt werden.

    Dieser Befehl wirkt sich auf die Einstellungen zukünftig angelegter Zonen aus.

    Sobald der Prozess mit dem Löschen alter Einträge beginnt, dann kann man diesen Vorgang anhand der Events 2501 und 2502 in den Logfiles des betreffenden DNS-Servers nachverfolgen. Um das Überwachen dieses Prozesses zu vereinfachen, empfiehlt es sich, das Aufräumen einer Zone nur einem bestimmten Server zu überlassen. Dafür eignet sich am Beispiel der Zone contoso.de dieser PowerShell-Befehl:

    Set-DnsServerZoneAging -ComputerName <DNS-Server> -Name contoso.de -ScavengeServers 192.168.9.50

    Der Aufräum-Server muss über seine IP-Adresse spezifiziert werden. Legt man keinen fest, dann kann jeder primäre DNS-Server diese Aufgabe übernehmen.

    Keine Kommentare