Site icon RDR-IT

Résolution DNS en fonction de l’adresse IP du client avec Windows Server

Dans ce tutoriel, je vais vous expliquer comment faire en sorte que la résolution DNS  avec Windows Server soit effectuée en fonction de l’adresse IP du client.

Il y a deux solutions que nous allons voir dans cet article.

La première solution qui consiste à activer le tri de masques réseau est disponible depuis Windows 2003 Server. L’option est normalement activée par défaut. Cette solution n’est pas fiable.

La seconde solution a été implémentée avec Windows Server 2016 qui est la résolution par géolocalisation.

Résolution DNS par tri de masques réseau

Le but va être de faire en sorte que les utilisateurs accède au site rddns.lab.intra qui se trouve dans leur segment IP comme le montre l’illustration ci-dessous.

Depuis la console Gestionnaire DNS, faire un clic droit sur le serveur 1 puis cliquer sur Propriétés 2.

Aller sur l’onglet Avancé 1 et vérifier que les cases Activer la fonction Round Robin 2 et Activer le tri de masques réseau 3 soient bien cochées. Dans le cas contraire cocher les et appliquer les modifications.

Créer les enregistrements A pointant sur chaque serveur.

Tester la résolution de nom avec des clients dans chacun des réseaux. Sur les captures ci-dessous, on peut voir que la réponse correspond bien au réseau du client.

Si l’adresse IP ne correspond à aucun des réseaux, le Round Robin sera utilisé.

Résolution DNS par Géolocalisation

La résolution basée sur Géolocalisation nécessite d’avoir au minimum Windows Server 2016 et d’aimer le PowerShell, il n’y a pas d’interface graphique pour la configuration.

L’avantage de l’utilisation de la Géolocalisation est de pouvoir répondre à des réseaux non déclarés d’enregistrement DNS. Si on reprend l’exemple précédent et que l’on ajoute un troisième réseau 10.0.2.0/24, il est possible de définir quel enregistrement doit être retourné.

Afin d’éviter de toucher à la zone Active Directory, j’ai créé une nouvelle zone DNS dns-lab.intra. Ci-dessous l’objectif :

L’ensemble des commandes sont à exécuter dans une fenêtre PowerShell.

Création des sous-réseaux

Add-DnsServerClientSubnet -Name "SiteA" -IPv4Subnet "10.0.0.0/24"
Add-DnsServerClientSubnet -Name "SiteB" -IPv4Subnet "10.0.1.0/24"
Add-DnsServerClientSubnet -Name "SiteC" -IPv4Subnet "10.0.2.0/24"

Création des étendues de zone

Une étendue de zone est une instance dans unique dans la zone DNS qui contient ses propres enregistrements.

Dans notre exemple, il faut créer deux étendues qui correspondent au réseau où un serveur Web est installé.

Add-DnsServerZoneScope -ZoneName "dns-lab.intra" -Name "SiteAZone"
Add-DnsServerZoneScope -ZoneName "dns-lab.intra" -Name "SiteBZone"

Création des enregistrements DNS

Il faut maintenant ajouter aux étendues l’enregistrement DNS www.

Add-DnsServerResourceRecord -ZoneName "dns-lab.intra" -A -Name "www" -IPv4Address "10.0.0.200" -ZoneScope "SiteAZone"
Add-DnsServerResourceRecord -ZoneName "dns-lab.intra" -A -Name "www" -IPv4Address "10.0.1.200" -ZoneScope "SiteBZone"

Création des stratégies

Les stratégies permettent de lier le réseau à une étendue.

Il faut donc créer 3 stratégies.

Add-DnsServerQueryResolutionPolicy -Name "SiteAPolicy" -Action ALLOW -ClientSubnet "eq,SiteA" -ZoneScope "SiteAZone,1" -ZoneName "dns-lab.intra"
Add-DnsServerQueryResolutionPolicy -Name "SiteCPolicy" -Action ALLOW -ClientSubnet "eq,SiteC" -ZoneScope "SiteAZone,1" -ZoneName "dns-lab.intra"
Add-DnsServerQueryResolutionPolicy -Name "SiteBPolicy" -Action ALLOW -ClientSubnet "eq,SiteB" -ZoneScope "SiteBZone,1" -ZoneName "dns-lab.intra"

Le serveur DNS peut maintenant répondre au client en fonction de leur réseau.

Pour aller plus loin

Si on regarde sur la zone sur le serveur DNS aucun enregistrement n’est visible dans la console.

Si l’on souhaite que le serveur répondent à des réseaux inconnus ajouter les enregistrements DNS normalement ou en powershell.

Add-DnsServerResourceRecord -ZoneName "dns-lab.intra" -A -Name "www" -IPv4Address "10.0.0.200"
Add-DnsServerResourceRecord -ZoneName "dns-lab.intra" -A -Name "www" -IPv4Address "10.0.1.200"

Cette fois les enregistrements DNS sont visible dans la zone.

Liste des cmdlet disponible : https://docs.microsoft.com/en-us/powershell/module/dnsserver/?view=win10-ps 

Quitter la version mobile