Fonctionnement des enregistrements dans des zones DNS intégrées Active Directory

Cet article est un petit rappel concernant le fonctionnement de DNS dans Windows et Active Directory

Fonctionnement d’un serveur DNS avec des zones intégrées AD

les entrées DNS qui sont stockées et répliquées dans des zones intégrées Active Directory sont considérées comme des objets de la classe dnsNode.

Où sont stockées les zones DNS

Avec un serveur DNS Windows, les zones DNS peuvent être stockées dans des ‘fichiers à plat’ ou dans des partitions de l’Active Directory.

Pour les fichiers à plat, ces derniers sont stockés par défaut dans %windir%\System32\Drivers\etc, dans des fichiers dont l’extension est *.dns. Ces zones ne sont pas répliquées entre les contrôleurs de domaine et restent locales au serveur DNS.

Pour les zones DNS intégrées AD, elles sont stockées dans l’une des trois partitions Active Directory suivantes :

  • ForestDNSZones (1 partition par forêt)
  • DomainDNSZones (1 par domaine)
  • La partition du domaine par défaut (1 par domaine).

Historiquement une zone DNS intégrée dans l’Active Directory, en niveau de fonctionalité compatible Windows 2000, ne pouvait être stockée que dans la partition du domaine par défaut (par exemple dans CN=MicrosoftDNS,CN=System,DC=contoso,DC=com). Cette partition est aussi nommée "legacy"

Depuis Windows Server 2003, il est possible de déplacer les zones DNS intégrées dans les trois conteneurs possibles.

Le changement se fait via l’interface graphique de la console de gestion du DNS, via les propriétés d’une zone DNS, ou, via la commande "dnscmd /ZoneChangeDirectoryPartition" (pour plus d'information "dnscmd /ZoneChangeDirectoryPartition /? ") :

image

 

Note: dans la version Française, vous pouvez noter une erreur d’affichage. L’option du haut devrait normalement être intitulée "vers tous les serveurs DNS exécutés sur des contrôleurs de domaine dans cette forêt", en lieu et place de l’option "vers tous les serveurs DNS exécutés sur des contrôleurs de domaine dans ce domaine".

          

Enregistrements dynamiques versus statiques

Par défaut,il faut distinguer les enregistrements statiques (créés manuellement via la console de gestion DNS ou DNSCMD.exe), des enregistrements dynamiques (enregistrés par le client DNS, par le serveur DHCP, via les fonctions de dnsapi.dll).

Les enregistrements statiques n'ont pas d'information de temps (Timestamp ou Horodateur).

Les enregistrements dynamiques ont une information de temps qui permet de détecter leur obsolescence. Il faut que sur la zone DNS les enregistrements dynamiques soient autorisés : il existe trois options.

image

  • La première option "Aucun" (None) ne permet pas les mises à jour dynamiques.
  • La deuxième option "Non sécurisé et sécurisé" (Non secure - Secure) permet les mises à jour dynamiques sans authentifier le client DNS qui procède à la mise à jour.
  • La troisième option "Sécurisé uniquement" (Secure only) implique que le client DNS soit authentifié avant d'être autorisé à procéder à la mise à jour dynamique.

Pour que le Timestamp des entrées DNS soit exploité, il faut définir des options de vieillissement (par zone DNS).

Pour visualiser le Timestamp d'un enregistrement DNS : via la console de gestion du DNS, après avoir sélectionné dans le menu "Affichage" l'option "Affichage detaillé" :

image

L'édition des propriétés de l'enregistrement, si dynamique, laisse apparaitre l'option "Supprimer cet enregistrement lorsqu'il deviendra périmé".

Note : l'heure d'horodateur (Timestamp) correspond à l'heure à laquelle l'enregistrement a été créé, et non pas l'heure à laquelle l'enregistrement expire.

 

Options de vieillissement

Cette option se définit par zone DNS (zone de recherche directe ou inverse), dans les propriétés de la zone, via le bouton "vieillissement" (Aging) en définissant deux intervalles : "non-actualisation" (no-refresh) et "actualisation" (refresh).

image

 

Cette option est répliquée sur l'ensemble des serveurs DNS qui sont contrôleur de domaine.

L'intervalle "non-actualisation" est l'espace de temps pendant lequel l'enregistrement DNS est considéré comme valide sans qu'il soit nécessaire de le rafraîchir.

L'intervalle "actualisation" indique l'espace de temps pendant lequel l'enregistrement doit être rafraîchit pour rester valide.

Un enregistrement est considéré comme obsolète lorsqu'il dépasse la durée cumulé du "non-actualisation" et 'actualisation", soit par défaut 14 jours.

Passé le délai de 14 jours (par défaut) l'enregistrement est éligible à la suppression par le Scavenging.

Fonctionnement du Scavenging

Cette option n'est pas activée par défaut sur les serveurs DNS. L'activation se fait par serveur DNS : via l'option "Activer le nettoyage automatique des enregistrements obsolètes"

image

La recommandation est de l'activer sur un ou deux serveurs DNS maximum par forêt ou domaine (en fonction des conteneurs dans lesquels les enregistrements DNS sont stockés) Active Directory.

La fréquence de nettoyage est par défaut de 7 jours. Par conséquent, tous les 7 jours, le Scavenging va énumérer tous les enregistrements dynamiques (et jamais les enregistrements statiques) qui ont dépassé l'intervalle de "actualisation"+"non-actualisation" (en fonction des paramètres de vieillissement définis par zone DNS).

Ensuite le scavening supprime les enregistrements obsolètes en positionnant l'attribut dNSTombstoned=TRUE pour les objets dnsNode.

Un événement est ajouté dans le journal DNS ID 2501 : le nombre d'entrées supprimées est indiqué.

Nom du journal :DNS Server Source : Microsoft-Windows-DNS-Server-Service Date : 4/23/2013 11:12:12 AM ID de l’événement :2501 Catégorie de la tâche :Aucun Niveau : Information Mots clés : Classique Utilisateur : N/A Ordinateur : CONTOSO-DC1.contoso.com Description : Le serveur DNS a terminé le cycle de nettoyage : Zones visitées = 1, Nœuds visités = 36, Nœuds nettoyés = 1, Enregistrements nettoyés = 1. Ce cycle a duré 0 secondes. Le prochain cycle de nettoyage est programmé dans 7 jours

Que se passe-t-il après le scavenging ?

Par défaut le service serveur DNS n'affiche pas les objets dnsNode dont l'attribut dNSTombstoned=TRUE.

Pourtant, ces objets dnsNode restent dans l'Active Directory et sont visibles avec ADSIEdit.msc ou LDP.exe.

Ce n'est qu'après un intervalle de temps que l'objet dnsNode sera supprimé de l'Active Directory :

  • 1 semaine par défaut pour Windows Server 2003
  • 2 semaines par défaut à partir de Windows Server 2008 et versions ultérieures.

Lors de cette suppression l'attribut isDeleted de l'objet dnsNode sera passé à TRUE, et l'objet sera définitivement supprimé par le Garbage Collector au bout de 60 ou 180 jours (en fonction de l'attribut tombstoneLifetime de l'objet CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=contoso,DC=com).

Si l'objet dnsNode n'est pas immédiatement supprimé (isDeleted=TRUE) c'est pour laisser la possibilité de réutiliser l'objet dans deux cas :

  • La machine (ou le service DHCP) envoie une mise à jour dynamique.
  • Une entrée statique est créée avec le même nom.

 

Note : dans le cas ou un enregistrement est (re)créé manuellement après qu'il ait été supprimé (via dNSTombstoned=TRUE), ce dernier apparait en statique. S'il s'agit d'enregistrement dynamiquement créé par un contrôleur de domaine, lors du démarrage du service Netlogon, alors l'enregistrement apparaîtra toujours en statique. Pour prévenir cet affichage 'statique', il faut supprimer l'enregistrement via ADSIEdit.msc ou LDP.exe, puis redémarrer le service Netlogon du contrôleur de domaine : l'enregistrement sera recréé et réapparaitra en dynamique avec un Timestamp associé.

Références

DNS Scavenging internals (or what is the dnsTombstoned attribute) for AD Integrated zones

Don't be afraid of DNS Scavenging. Just be patient.