Windows Server : comment restaurer une zone DNS à partir de la Corbeille Active Directory ?
Sommaire
I. Présentation
Dans cet article, nous allons explorer une méthode rapide et efficace pour restaurer une zone DNS entière à partir de la corbeille d'Active Directory (AD). Cette méthode permet de récupérer des zones DNS supprimées sans avoir besoin de restaurer des sauvegardes complètes, ce qui peut être particulièrement utile en cas de perte accidentelle de zones essentielles.
Pour rappel, dans les articles précédents, nous avons abordé l'automatisation des sauvegardes des zones DNS et leur restauration, afin d'éviter toute interruption de service. Comme nous l'avons déjà expliqué, le DNS joue un rôle fondamental dans le bon fonctionnement d'Active Directory (AD).
Sans DNS, les machines du réseau risquent de ne pas être correctement intégrées au domaine et de ne pas pouvoir se connecter aux services ou serveurs, en particulier si une adresse IP change ou si un serveur est mal configuré. Cette absence de communication peut également perturber les processus d'authentification, notamment en cas de suppression d'un enregistrement DNS clé.
Voici les liens vers les précédents articles :
- Windows Server : comment restaurer une zone DNS ?
- Active Directory : comment automatiser la sauvegarde des zones DNS ?
II. Avantages de cette méthode
La restauration à partir de la corbeille Active Directory permet de récupérer rapidement les objets supprimés, notamment les zones DNS, pendant une période de rétention de 180 jours par défaut. Chaque contrôleur de domaine possède sa propre corbeille, contenant les objets supprimés, et ces objets sont répliqués entre les contrôleurs de domaine.
Toutefois, pour les zones DNS, ces informations restent spécifiques à chaque contrôleur de domaine afin d'éviter toute incompatibilité lors de la restauration, les zones DNS étant propres à chaque serveur.
Ainsi, la restauration d'une zone DNS depuis la corbeille permet de récupérer l'ensemble des éléments récents, sans avoir besoin de procéder à une restauration complète ni d'interrompre les services. Cette méthode assure une récupération efficace des zones DNS, garantissant la continuité des services sans perturber l'infrastructure Active Directory.
III. Prérequis
Comme pour toute opération impliquant Active Directory (AD), il existe des prérequis et des limites à prendre en compte avant de procéder à la restauration d'une zone DNS depuis la corbeille. Tout d'abord, il est important de souligner que la corbeille Active Directory doit être activée sur le contrôleur de domaine (DC) sur lequel la restauration sera effectuée. Sans cela, il ne sera pas possible de récupérer les objets supprimés.
Ensuite, il est essentiel de comprendre que la restauration ne permet de récupérer que les éléments présents avant la suppression de la zone. Autrement dit, si la zone DNS a été supprimée un mardi, mais que des enregistrements ont été modifiés ou supprimés le lundi précédent, la restauration ne récupérera que les éléments existants avant la suppression. Cela signifie que toute modification intervenue après la suppression de la zone sera perdue.
Cela dit, cette méthode de restauration reste une option valable pour les entreprises qui n'ont pas adopté de solution de sauvegarde DNS. Il convient de rappeler que certaines entreprises confondent la sauvegarde de l'AD/DNS avec la sauvegarde complète d'un serveur. Cependant, il est important de comprendre que les méthodes de restauration d'une zone DNS et celles d'une machine complète sont différentes, ce qui peut parfois entraîner des anomalies si elles ne sont pas correctement appliquées.
À titre d'exemple, une mauvaise pratique courante consiste à récupérer un fichier DNS et à le copier dans le répertoire par défaut C:\Windows\DNS, puis à redémarrer le service DNS. Cette méthode est inappropriée et ne permet malheureusement pas de restaurer correctement la zone.
Elle peut entraîner des dysfonctionnements, en raison de l'incompatibilité entre le numéro de zone incrémenté dans le fichier de sauvegarde et celui enregistré dans la zone Active Directory.
IV. Restaurer une zone DNS
La restauration d'une zone DNS à partir de la corbeille Active Directory doit être effectuée à l'aide de commandes spécifiques. Cette opération consiste à rechercher la zone supprimée, puis à la restaurer via la commande "Get-ADRestore", en introduisant les informations correctes à deux reprises pour valider la restauration. Nous allons explorer cette procédure en utilisant un script que j'ai développé en exclusivité pour la communauté IT-Connect, afin de simplifier et d'automatiser cette tâche.
Nous pouvons observer la présence des enregistrements dans la corbeille, quant à la zone, elle n'est pas listée, nous allons voir plus loin ans cet article pourquoi cette opération n'est pas réalisable en interface graphique.
Voici un aperçu de la corbeille Active Directory à partir du Centre d'administration Active Directory.
Commencez par télécharger ou copier sur votre éditeur de code ISE le script PowerShell à partir du GitHub :
Nous allons maintenant exécuter le script pour démontrer son fonctionnement. Comme ce n'est pas logique de supprimer une zone DNS en production pour tester l'efficacité du script. Il est donc conseillé de réaliser cette action dans un environnement de test, de pré-production, ou sur votre lab personnel en copiant la zone de production. Cela vous permettra d'évaluer l'efficacité du script et la durée de la restauration. Bien que la durée puisse varier en fonction de la taille de la zone, les temps de restauration restent généralement faibles, même pour des zones comportant plus de 10 000 enregistrements.
Il est nécessaire d'exécuter le script sur le contrôleur de domaine à partir duquel la zone DNS a été supprimée. L'exécution doit être réalisée avec un compte disposant des droits nécessaires pour restaurer la zone DNS, généralement un compte d'administrateur DNS ou un administrateur de domaine, puisque le script s'exécute déjà sur un contrôleur de domaine.
Nous montrons une capture après suppression de notre zone principale "info.lab" :
Pour les utilisateurs plus expérimentés, il est possible de modifier le script afin de l'exécuter à distance en utilisant la commande "Invoke-Command". Cette méthode permet de lancer le script sur un contrôleur de domaine distant, offrant ainsi plus de flexibilité dans l'administration.
Exécutez le script récupéré depuis le GitHub. Vous pouvez l'exécuter depuis PowerShell ISE ou la console PowerShell.
Après l'exécution du script, une fenêtre s'affiche présentant les informations sur les zones trouvées dans la corbeille. Il convient alors de sélectionner la zone correspondant à la date de suppression, indiquée sous la colonne "Deleted". Une fois la zone correcte choisie, cliquez sur "Restore" pour lancer le processus de restauration.
La restauration est immédiatement lancée. Le script se charge de récupérer tous les éléments nécessaires. Pour les zones principales intégrant des services Kerberos, des messages d'avertissement peuvent apparaître, signalant que certains noms existent déjà. Cependant, ces avertissements n'ont pas d'impact sur la réussite de la restauration.
À la fin du processus, le script vérifie que la zone est bien présente avant de redémarrer le service DNS pour prendre en compte les nouveaux éléments. Une fois le processus terminé, il vous suffit d'actualiser votre gestionnaire DNS pour voir la zone restaurée s'afficher. Voici un exemple :
Fin de la tâche. Si le processus a bien fonctionné, conservez ce script dans votre boîte à outils, en espérant ne jamais avoir besoin de l'utiliser. Ce script permet de restaurer toutes les zones intégrées à Active Directory, qu'il s'agisse de zones directes, inversées ou de redirection.
V. Fonctionnement du script PowerShell
Le script permet, dans un premier temps, de lister les zones DNS présentes dans la corbeille en appliquant un filtre sur l'attribut "'isDeleted" et en ciblant les objets de type "DNSZone". Ce qui donne la commande Get-ADObject suivante :
(Get-ADObject -Filter {
isdeleted -eq $true -and
msds-lastKnownRdn -like "*Deleted-*" -and
ObjectClass -eq "dnsZone"
} -IncludeDeletedObjects -SearchBase "DC=DomainDnsZones,$domainDN"
À l'aide des éléments précédemment sélectionnés, y compris le DistinguishedName, il sera possible de restaurer la zone en supprimant le préfixe "DEL-xxx" de chaque objet.
$dnsZoneObject.DistinguishedName | Restore-ADObject
La partie suivante tente de restaurer tous les sous-éléments associés à la zone, y compris les zones enfants ou toute autre information présente :
Get-ADObject -Filter {
isdeleted -eq $true -and
LastKnownParent -like $zoneDN
} -IncludeDeletedObjects -SearchBase "DC=DomainDnsZones,$domainDN" | Restore-ADObject
VI. Comprendre la suppression des enregistrements DNS
Si vous supprimez un enregistrement DNS de test dans la zone et que vous tentez de le récupérer à partir de la Corbeille AD cela échouera. En effet, ce dernier n'a pas d'objet parent tout simplement à cause de l'attribut DistinguedName qui contiendra un chemin avec "Del".
Pour comprendre cela, commençons par ouvrir notre partition DNS. Ouvrez la console ADSI, lancez une nouvelle connexion, puis entrez le chemin DNS comme indiqué dans la capture ci-dessous, en remplaçant le nom du domaine par le vôtre.
Développez l'arborescence vers la zone souhaitée et sélectionnez l'enregistrement supprimé. Dans mon cas, j'ai créé un enregistrement "serveur-game" de test que j'ai ensuite supprimé.
Nous pouvons voir que l'attribut "dNSTombestoned" a la valeur "TRUE", il est alors identifié comme élément à supprimer par le nettoyage de zone automatique lors du prochain cycle.
Si vous tentez de modifier la valeur en "Faux" ou autre, l'enregistrement n'apparaitra pas sur la console DNS.
Sur l'attribut "isDeleted" la valeur est "non défini", ce qui signifie que l'enregistrement n'est pas encore supprimé et mis en corbeille, cette valeur ne peut être modifiée qu'en faisant un clic droit sur l'enregistrement.
Attention, si vous le supprimez de la partition ADSI, il ne sera plus visible et sera placé dans la corbeille AD. Malheureusement, les enregistrements ne sont pas toujours affichés ni restaurable.
Dans la corbeille, je ne trouve pas l'élément supprimé, et ceci malgré un redémarrage de service, de serveur, plusieurs synchronisations et en attendant plusieurs heures/jours.
À partir de la console "Utilisateurs et ordinateurs Active Directory", en activant les fonctionnalités avancés dans le menu "Affichage", vous pouvez voir quelques enregistrements listés dans Deleted, la plupart ne sont pas listés.
Ce sont toutes ces raisons et incohérences qui rendent la restauration d'un enregistrement DNS difficile. Il est possible de lister les éléments supprimés à partir de la corbeille grâce aux commandes PowerShell, mais la récupération fonctionne de manière aléatoire et n'est pas toujours fiable.
Microsoft n'a pas communiqué de méthode officielle ni fourni de script pour restaurer un enregistrement individuel. Il est donc plus prudent de sauvegarder vos zones de manière automatique et périodique pour éviter toute perte de données.
VII. Conclusion
À travers cette série d'articles sur la sauvegarde et la restauration DNS, nous avons exploré l'intérêt et l'utilité d'une méthode simple, en complément des outils existants. Nous avons discuté des bonnes pratiques à adopter et des mauvaises pratiques à éviter. Nous poursuivrons prochainement avec des articles sur la maintenance et la gestion DNS sous Windows Server. J'aborderai une solution intégrée à Active Directory pour la sauvegarde et la restauration des objets.
En fin de compte, assurez-vous de disposer d'un plan d'intervention en cas de crise. Profitez également des astuces d'IT-Connect en les testant et en les validant dans votre infrastructure, afin de les avoir sous la main avant qu’un problème ne survienne.