Automatisez les tâches DNS avec les cmdlets DNS PowerShell

Les enregistrements DNS sont généralement gérés dynamiquement par votre serveur DNS. Cependant, parfois, vous pourriez constater que vous avez besoin de créer, modifier ou supprimer manuellement divers types d’enregistrements DNS. Ou même d’ajouter diverses tâches DNS à des scripts d’automatisation. C’est dans des moments comme celui-ci que l’utilisation des cmdlets DNS PowerShell est la meilleure solution.

Ce billet de blog est accompagné d’une vidéo réalisée par David Lamb, contributeur TechSnips. N’hésitez pas à la regarder ou, si vous préférez le texte, continuez la lecture!

Consultation des enregistrements DNS avec les cmdlets DNS PowerShell

Vous pouvez consulter tous les enregistrements de ressources pour une zone DNS donnée en utilisant simplement le cmdlet DNS PowerShell Get-DnsServerResourceRecord. En utilisant ce cmdlet, vous pouvez spécifier le paramètre ZoneName, qui listera tous les enregistrements DNS dans cette zone.

Comme vous pouvez le voir ci-dessous, cela génère une liste assez longue d’enregistrements.

PS51> Get-DnsServerResourceRecord -ZoneName corp.ad
Listing DNS records with PowerShell

Ce comportement met en évidence l’un des avantages de ce cmdlet particulier par rapport à la console DNS graphique. La vue vous donne tous les enregistrements de cette zone, quel que soit le dossier dans lequel ils se trouvent. Dans la console graphique, il faudrait beaucoup de temps pour rassembler ces informations.

Maintenant, réduisez un peu cette liste. En utilisant la même cmdlet, mais en ajoutant le paramètre RRType pour rechercher des enregistrements A (hôtes IPv4) et en filtrant les enregistrements où le Time To Live (TTL) est supérieur à 15 minutes, nous obtenons une liste un peu plus gérable. Vous pouvez utiliser la cmdlet Where-Object pour filtrer sur de nombreuses propriétés différentes des enregistrements DNS.

PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType A | Where-Object TimeToLive -GE "00:15:00"
Finding DNS records with a TimeToLive greater than 15 minutes

Allant un peu plus loin, vous pouvez également rechercher des enregistrements dans une zone DNS différente et même sur différents serveurs DNS.

Dans l’exemple ci-dessous, nous rechercherons des enregistrements A dans la zone canada.corp.ad sur le serveur DNS DC03

PS51> Get-DnsServerResourceRecord -ComputerName DC03 -ZoneName canada.corp.ad -RRType A
Finding DNS A records

Ajout et suppression d’enregistrements d’hôtes A

Pour ajouter un enregistrement d’hôte, vous devrez utiliser la cmdlet PowerShell DNS Add-DnsServerResourceRecordA. Dans l’exemple ci-dessous, vous devez ajouter un enregistrement d’hôte pour une nouvelle imprimante que vous ajoutez au réseau. Il sera ajouté à la zone corp.ad avec le nom reddeerprint01, et son adresse IP est 192.168.2.56.

PS51> Add-DnsServerResourceRecordA -Name reddeerprint01 -ZoneName corp.ad -IPv4Address 192.168.2.56
PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType A
Creating a DNS record

S’il s’avère que vous devez supprimer un enregistrement, peut-être que l’imprimante a été mise hors service, vous pouvez utiliser le code suivant pour supprimer l’enregistrement d’hôte que nous venons de créer:

PS51> Remove-DnsServerResourceRecord -ZoneName corp.ad -Name reddeerprint01 -RRType A

Ajout et suppression d’enregistrements d’hôtes AAAA

Il est tout aussi facile d’ajouter un enregistrement d’hôte IPv6. Bien sûr, ces enregistrements diffèrent légèrement, car ils sont répertoriés en tant qu’enregistrements AAAA. Vous remarquerez que nous utilisons maintenant la cmdlet DNS PowerShell Add-DnsServerResourceRecordAAAA. C’est un changement subtil, mais important.

Ajoutez un enregistrement à la zone corp.ad pour le nouveau serveur Intranet IT à fc00:0128, puis vérifiez rapidement qu’il a été créé avec la commande suivante.

PS51> Add-DnsServerResourceRecordAAAA -Name it-intranet -ZoneName corp.ad -IPv6Address "fc00::0128"
PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType AAAA
Creating an AAA host record

Ajout d’enregistrements de recherche inversée (PTR)

À l’aide des cmdlets DNS PowerShell, vous pouvez également ajouter des enregistrements PTR. Un enregistrement de recherche inversée permet au client d’interroger un serveur DNS pour demander le nom d’hôte correspondant à une adresse IP fournie.

Créer un enregistrement PTR est un processus relativement facile, mais il y a une information importante que vous devrez connaître avant de commencer à ajouter des enregistrements PTR. Les zones de recherche inversée ne sont pas créées par défaut. Vous devrez configurer votre zone de recherche inversée avant d’ajouter des enregistrements. Heureusement, c’est relativement facile à faire.

Création d’une zone DNS

Utilisez la cmdlet DNS PowerShell Add-DnsServerPrimaryZone pour créer une nouvelle zone DNS. Dans ce cas, puisque vous créez une zone de recherche inversée, fournissez-lui l’ID réseau.

Dans cet exemple, j’ai également choisi de définir la portée de réplication sur l’ensemble de la forêt AD, et j’ai spécifiquement ciblé DC03 comme serveur DNS préféré :

PS51> Add-DnsServerPrimaryZone -ComputerName DC03 -NetworkId "192.168.2.0/24" -ReplicationScope Forest
PS51> Get-DnsServerZone -ComputerName DC03
Creating a DNS primary zone

Maintenant que la zone de recherche inversée est en place, vous pouvez ajouter un enregistrement PTR pour une nouvelle imprimante appelée CYQF-Printer-01.canada.corp.ad qui a une adresse IP de 192.168.2.56. Comme cet enregistrement est pour la zone canada.corp.ad, vous ciblerez le serveur DNS DC03.

Maintenant que la zone est créée, créons un enregistrement PTR en utilisant la commande Add-DnsServerResourceRecordPtr. Lors de l’utilisation de cette commande, il est important de noter quelques points.

  • Vous devez spécifier le nom de la zone en utilisant l’ID réseau dans l’ordre inverse, puis ajouter .in-addr.arpa. Ainsi, pour notre ID réseau 192.168.2.0/24, le nom de la zone est 2.168.192.in-addr.arpa.
  • Le paramètre Name est la partie hôte de l’adresse IP. Pour notre imprimante à l’adresse 192.168.2.56, le Name est 56.

Une fois que vous avez ces informations, le code requis pour créer l’enregistrement PTR est relativement simple, bien qu’un peu long:

PS51> Add-DnsServerResourceRecordPtr `
    -Name "56" `
    -PtrDomainName "CYQF-Printer-01.canada.corp.ad" `
    -ZoneName "2.168.192.in-addr.arpa" `
    -computerName DC03

PS51> Get-DnsServerResourceRecord -ComputerName DC03 -ZoneName "2.168.192.in-addr.arpa"
Creating a PTR record

Ajout d’enregistrements Alias (CNAME)

Pour terminer ce tutoriel, créez un enregistrement d’alias d’hôte ou un enregistrement CNAME en utilisant la commande Add-DnsServerResourceRecordCName.

Ces enregistrements vous permettent de spécifier un alias pour un enregistrement d’hôte existant dans la zone. Cela devient particulièrement utile, par exemple, si vous souhaitez fournir à vos utilisateurs financiers une adresse pour leur application financière accessible via le web.

Vous pourriez créer un alias appelé finance et le pointer vers le serveur web webapp25.corp.ad. Une fois l’application migrée vers le nouveau serveur web avec un nouveau nom d’hôte, vous changeriez alors l’enregistrement CNAME pour pointer finance vers le nouveau hôte. De cette façon, les utilisateurs n’ont pas besoin de mettre à jour leurs signets. Ils peuvent continuer à accéder à leur application en utilisant l’adresse finance.corp.ad.

PS51> Add-DnsServerResourceRecordCName -ZoneName corp.ad -HostNameAlias "webapp25.corp.ad" -Name "finance"
PS51> Get-DnsServerResourceRecord -ZoneName corp.ad -RRType CName
Creating a CNAME record

Si vous souhaitez approfondir vos connaissances sur le DNS et découvrir des fonctionnalités plus avancées, assurez-vous de consulter tous les autres articles DNS ici.

Résumé

Cela conclut notre tutoriel sur l’utilisation de PowerShell avec les enregistrements DNS. Avec les connaissances que vous avez accumulées ici, vous devriez désormais être capable de gérer de grandes quantités d’enregistrements DNS de manière interactive ou même automatisée si vous vous en donnez la peine !

Source:
https://adamtheautomator.com/powershell-dns/