Présentation du DNS Anycast

  • 10/23/2020
  • 7 minutes à lire
    • g
    • e

S’applique à : Windows Server (Canal semestriel), Windows Server 2016, Windows Server 2019

Cette rubrique fournit des informations sur le fonctionnement du DNS Anycast.

Qu’est-ce qu’Anycast ?

Anycast est une technologie qui fournit plusieurs chemins de routage vers un groupe de points de terminaison auxquels la même adresse IP est assignée à chacun. Chaque périphérique du groupe annonce la même adresse sur un réseau et des protocoles de routage sont utilisés pour choisir la meilleure destination.

Anycast vous permet de mettre à l’échelle un service sans état, tel que DNS ou HTTP, en plaçant plusieurs nœuds derrière la même adresse IP et en utilisant le routage ECMP (equal-cost multi-path) pour diriger le trafic entre ces nœuds. Anycast est différent de l’unicast, dans lequel chaque point de terminaison a sa propre adresse IP distincte.

Pourquoi utiliser Anycast avec DNS ?

Avec Anycast DNS, vous pouvez activer un serveur DNS, ou un groupe de serveurs, pour répondre aux requêtes DNS en fonction de l’emplacement géographique d’un client DNS. Cela peut améliorer le temps de réponse DNS et simplifier les paramètres du client DNS. Le DNS Anycast fournit également une couche supplémentaire de redondance et peut aider à se protéger contre les attaques par déni de service DNS.

Fonctionnement du DNS Anycast

Le DNS Anycast fonctionne en utilisant des protocoles de routage tels que le protocole BGP (Border Gateway Protocol) pour envoyer des requêtes DNS à un serveur DNS préféré ou à un groupe de serveurs DNS (par exemple: un groupe de serveurs DNS gérés par un équilibreur de charge). Cela peut optimiser les communications DNS en obtenant des réponses DNS d’un serveur DNS le plus proche d’un client.

Avec Anycast, les serveurs qui existent dans plusieurs emplacements géographiques annoncent chacun une adresse IP unique et identique à leur passerelle locale (routeur). Lorsqu’un client DNS lance une requête à l’adresse Anycast, les routes disponibles sont évaluées et la requête DNS est envoyée à l’emplacement préféré. En général, il s’agit de l’emplacement le plus proche en fonction de la topologie du réseau. Voir l’exemple suivant.

 Quatre serveurs DNS, situés sur des sites différents, annoncent la même adresse IP Anycast au réseau

Figure 1 : Quatre serveurs DNS situés sur des sites différents d’un réseau annoncent chacun la même adresse IP Anycast (flèches noires) au réseau. Un périphérique client DNS envoie une requête à l’adresse IP Anycast. Les périphériques réseau analysent les routes disponibles et envoient la requête DNS du client à l’emplacement le plus proche (flèche bleue).

Le DNS Anycast est couramment utilisé aujourd’hui pour acheminer le trafic DNS pour de nombreux services DNS mondiaux. Par exemple, le système de serveur DNS racine dépend fortement d’Anycast DNS. Anycast fonctionne également avec une variété de protocoles de routage et peut être utilisé exclusivement sur des intranets.

Démo Anycast BGP native de Windows Server

La procédure suivante montre comment le BGP natif sur Windows Server peut être utilisé avec le DNS Anycast.

Exigences

  • Un périphérique physique avec le rôle Hyper-V installé.
    • Windows Server 2012 R2, Windows 10 ou version ultérieure.
  • 2 machines virtuelles clientes (tout système d’exploitation).
    • L’installation d’outils de liaison pour DNS tels que dig est recommandée.
  • 3 machines virtuelles du serveur (Windows Server 2016 ou Windows Server 2019).
    • Si le module LoopbackAdapter de Windows PowerShell n’est pas déjà installé sur les machines virtuelles du serveur (DC001, DC002), un accès Internet est temporairement requis pour installer ce module.

Configuration Hyper-V

Configurez votre serveur Hyper-V comme suit:

  • 2 les réseaux de commutateurs virtuels privés sont configurés
    • Un réseau Internet fictif 131.253.1.0/24
    • Un réseau intranet fictif 10.10.10.0/24
  • 2 les machines virtuelles clientes sont attachées au réseau 131.253.1.0/24
  • 2 machines virtuelles de serveur sont attachées au réseau 10.10.10.0/24
  • 1 le serveur est dual-homed et attaché aux réseaux 131.253.1.0/24 et 10.10.10.0/24.

Configuration du réseau des machines virtuelles

Configurez les paramètres réseau sur les machines virtuelles avec les paramètres suivants:

  1. Client1, client2
  • Client1: 131.253.1.1
  • Client2: 131.253.1.2
  • Masque de sous-réseau : 255.255.255.0
  • DNS : 51.51.51.51
  • Passerelle: 131.253.1.254
  1. Passerelle (Serveur Windows)
  • NIC1:131.253.1.254, sous-réseau 255.255.255.0
  • NIC2:10.10.10.254, sous-réseau 255.255.255.0
  • DNS: 51.51.51.51
  • Passerelle : 131.253.1.100 (peut être ignoré pour la démo)
  1. DC001 (Serveur Windows)
  • NIC1:10.10.10.1
  • Sous-Réseau : 255.255.255.0
  • DNS : 10.10.10.1
  • Passerelle: 10.10.10.254
  1. DC002 (Serveur Windows)
  • NIC1:10.10.10.2
  • Sous-réseau 255.255.255.0
  • DNS : 10.10.10.2 *
  • Passerelle: 10.10.10.254

* Utilisez 10.10.10.1 pour DNS initialement lors de l’exécution de la jointure de domaine pour DC002 afin de pouvoir localiser le domaine Active Directory sur DC001.

Configurer DNS

Utilisez le Gestionnaire de serveur et la console de gestion DNS ou Windows PowerShell pour installer les rôles de serveur suivants et créer une zone DNS statique sur chacun des deux serveurs.

  1. DC001, DC002
  • Installer les services de domaine Active Directory et promouvoir le contrôleur de domaine (facultatif)
  • Installer le rôle DNS (requis)
  • Créer une zone statique (non intégrée à l’AD) nommée zone.tst sur DC001 et DC002
    • Ajouter le serveur de noms d’enregistrement statique unique dans la zone de type « TXT »
    • Données (texte) pour l’enregistrement TXT sur DC001 = DC001
    • Données (texte) pour l’enregistrement TXT sur DC002 = DC002

Configurez les adaptateurs de bouclage

Entrez les commandes suivantes à une invite Windows PowerShell élevée sur DC001 et DC002 pour configurer les adaptateurs de bouclage.

Remarque

La commande Install-Module nécessite un accès Internet. Cela peut être fait en affectant temporairement la machine virtuelle à un réseau externe dans Hyper-V.

$primary_interface = (Get-NetAdapter |?{$_.Status -eq "Up" -and !$_.Virtual}).Name$loopback_ipv4 = '51.51.51.51'$loopback_ipv4_length = '32'$loopback_name = 'Loopback'Install-Module -Name LoopbackAdapter -MinimumVersion 1.2.0.0 -ForceImport-Module -Name LoopbackAdapterNew-LoopbackAdapter -Name $loopback_name -Force$interface_loopback = Get-NetAdapter -Name $loopback_name$interface_main = Get-NetAdapter -Name $primary_interfaceSet-NetIPInterface -InterfaceIndex $interface_loopback.ifIndex -InterfaceMetric "254" -WeakHostReceive Enabled -WeakHostSend Enabled -DHCP DisabledSet-NetIPInterface -InterfaceIndex $interface_main.ifIndex -WeakHostReceive Enabled -WeakHostSend EnabledSet-NetIPAddress -InterfaceIndex $interface_loopback.ifIndex -SkipAsSource $TrueGet-NetAdapter $loopback_name | Set-DNSClient –RegisterThisConnectionsAddress $FalseNew-NetIPAddress -InterfaceAlias $loopback_name -IPAddress $loopback_ipv4 -PrefixLength $loopback_ipv4_length -AddressFamily ipv4Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_msclientDisable-NetAdapterBinding -Name $loopback_name -ComponentID ms_pacerDisable-NetAdapterBinding -Name $loopback_name -ComponentID ms_serverDisable-NetAdapterBinding -Name $loopback_name -ComponentID ms_lltdioDisable-NetAdapterBinding -Name $loopback_name -ComponentID ms_rspndr

Configuration de routage de machine virtuelle

Utilisez les commandes Windows PowerShell suivantes sur les machines virtuelles pour configurer le routage.

  1. Passerelle
Install-WindowsFeature RemoteAccess -IncludeManagementToolsInstall-RemoteAccess -VpnType RoutingOnlyAdd-BgpRouter -BgpIdentifier "10.10.10.254" -LocalASN 8075Add-BgpPeer -Name "DC001" -LocalIPAddress 10.10.10.254 -PeerIPAddress 10.10.10.1 -PeerASN 65511 –LocalASN 8075

  1. DC001
Install-WindowsFeature RemoteAccess -IncludeManagementToolsInstall-RemoteAccess -VpnType RoutingOnlyAdd-BgpRouter -BgpIdentifier "10.10.10.1" -LocalASN 65511Add-BgpPeer -Name "Labgw" -LocalIPAddress 10.10.10.1 -PeerIPAddress 10.10.10.254 -PeerASN 8075 –LocalASN 65511Add-BgpCustomRoute -Network 51.51.51.0/24
  1. DC002
Install-WindowsFeature RemoteAccess -IncludeManagementToolsInstall-RemoteAccess -VpnType RoutingOnlyAdd-BgpRouter -BgpIdentifier "10.10.10.2" -LocalASN 65511Add-BgpPeer -Name "Labgw" -LocalIPAddress 10.10.10.2 -PeerIPAddress 10.10.10.254 -PeerASN 8075 –LocalASN 65511Add-BgpCustomRoute -Network 51.51.51.0/24

Diagramme récapitulatif

 Configuration du laboratoire pour la démonstration DNS BGP Anycast native

Figure 2 : Configuration du laboratoire pour la démonstration DNS BGP Anycast native

Démonstration DNS Anycast

  1. Vérifiez le routage BGP sur le serveur de passerelle

    PS C:> Get-Bgprouteinformations

    Destinationréseau suivantop appris Localde l’État du Pairpref MED
    —————— ——- ————— —– ——— —
    51.51.51.0/24 10.10.10.1 DC001 Meilleur
    51.51.51.0 /24 10.10.10.2 DC002 Meilleur

  2. Sur client1 et client2, vérifiez que vous pouvez atteindre 51.51.51.51

    PS C: > ping 51.51.51.51

    Ping 51.51.51.51 avec 32 octets de données :
    Réponse de 51.51.51.51: octets = 32 temps < 1ms TTL = 126
    Réponse de 51.51.51.51: octets = 32 temps < 1ms TTL = 126
    Réponse de 51.51.51.51: octets = 32 temps < 1 ms TTL = 126
    Réponse de 51.51.51.51: octets = 32 temps < 1 ms TTL = 126

    Statistiques de ping pour 51.51.51.51:
    Paquets: Envoyé = 4, Reçu = 4, Perdu = 0 (0% de perte),
    Temps aller-retour approximatifs en milli-secondes:
    Minimum = 0 ms, Maximum = 0 ms, Moyenne = 0 ms

    Remarque

    Si le ping échoue, vérifiez également qu’aucune règle de pare-feu ne bloque ICMP.

  3. Sur client1 et client2, utilisez nslookup ou dig pour interroger l’enregistrement TXT. Des exemples des deux sont présentés ci-dessous.

    PS C: > serveur de fouille.zone.tst TXT + court
    PS C: > nslookup-type = serveur txt.zone.tst 51.51.51.51

    Un client affichera « DC001 » et l’autre client affichera « DC002 » en vérifiant qu’Anycast fonctionne correctement. Vous pouvez également interroger à partir du serveur de passerelle.

  4. Ensuite, désactivez l’adaptateur Ethernet sur DC001.

    PS C: >(Get-NetAdapter). Name
    Loopback
    Ethernet 2
    PS C: > Disable-NetAdapter « Ethernet 2 »
    Confirm
    Êtes-vous sûr de vouloir effectuer cette action?
    Disable-NetAdapter ‘Ethernet 2’
    Oui Oui à Tous Non Non à tous Suspendre l’aide (la valeur par défaut est « Y »):
    PS C: > (Get-NetAdapter).Statut
    En haut
    Désactivé

  5. Confirmez que les clients DNS qui recevaient précédemment des réponses de DC001 sont passés à DC002.

    PS C: > nslookup-type= serveur txt.zone.serveur tst 51.51.51.51
    : Adresse inconnue
    : 51.51.51.51

    serveur.zone.le serveur tst text=

    « DC001 »
    PS C: > nslookup-type= serveur txt.zone.serveur tst 51.51.51.51
    : Adresse inconnue
    : 51.51.51.51

    serveur.zone.texte tst =

    « DC002 »

  6. Confirmez que la session BGP est en panne sur DC001 à l’aide de Get-BgpStatistics sur le serveur de passerelle.

  7. Activez à nouveau l’adaptateur Ethernet sur DC001 et confirmez que la session BGP est restaurée et que les clients reçoivent à nouveau des réponses DNS de DC001.

Remarque

Si un équilibreur de charge n’est pas utilisé, un client individuel utilisera le même serveur DNS principal s’il est disponible. Cela crée un chemin BGP cohérent pour le client. Pour plus d’informations, voir rubrique 4.4.3 de RFC4786: Chemins à coût égal.

Foire aux questions

Q : Anycast DNS est-il une bonne solution à utiliser dans un environnement DNS sur site ?
R : Le DNS Anycast fonctionne de manière transparente avec un service DNS sur site. Cependant, Anycast n’est pas requis pour que le service DNS puisse évoluer.

Q : Quel est l’impact de l’implémentation du DNS Anycast dans un environnement avec un grand nombre (ex : > 50) de contrôleurs de domaine ?
R : Il n’y a pas d’impact direct sur la fonctionnalité. Si un équilibreur de charge est utilisé, aucune configuration supplémentaire sur les contrôleurs de domaine n’est requise.

Q: Une configuration DNS Anycast est-elle prise en charge par le service client Microsoft ?
R : Si vous utilisez un équilibreur de charge non Microsoft pour transférer des requêtes DNS, Microsoft prendra en charge les problèmes liés au service serveur DNS. Consultez le fournisseur de l’équilibreur de charge pour connaître les problèmes liés au transfert DNS.

Q : Quelle est la meilleure pratique pour les DNS Anycast avec un grand nombre (ex : > 50) de contrôleurs de domaine ?
R: La meilleure pratique consiste à utiliser un équilibreur de charge à chaque emplacement géographique. Les équilibreurs de charge sont généralement fournis par un fournisseur externe.

Q: Les DNS Anycast et Azure DNS ont-ils des fonctionnalités similaires ?
A : Azure DNS utilise Anycast. Pour utiliser Anycast avec Azure DNS, configurez votre équilibreur de charge pour transférer les requêtes vers le serveur DNS Azure.