Partager via


Vue d’ensemble de Anycast DNS

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

Qu’est-ce que Anycast ?

Anycast est une technologie qui fournit plusieurs chemins d’accès de routage à un groupe de points de terminaison auxquels la même adresse IP est affectée. Chaque appareil du groupe publie la même adresse sur un réseau et les 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 la monodiffusion, dans laquelle 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. Anycast DNS fournit également une couche supplémentaire de redondance et peut vous aider à vous protéger contre les attaques par déni de service DNS.

Fonctionnement de Anycast DNS

Anycast DNS fonctionne à l’aide de 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). Cette conception peut optimiser les communications DNS en obtenant des réponses DNS à partir d’un serveur DNS le plus proche d’un client.

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

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

Figure 1 : Exemple de réseau Anycast

  • Quatre serveurs DNS (cercles bleus), situés sur différents sites d’un réseau, annoncent chacun la même adresse IP Anycast à leur périphérique de routage local (non affiché).
  • Les itinéraires sont partagés entre les appareils du réseau (flèches noires).
  • Un appareil client DNS (cercle vert) envoie une requête DNS à l’adresse IP Anycast.
  • La requête DNS du client est reçue par un appareil de routage sur le réseau (non affiché).
  • Le périphérique de routage analyse les itinéraires disponibles vers l’adresse IP Anycast et achemine la requête DNS à l’aide de l’itinéraire disponible le plus court.
  • La requête DNS est envoyée au serveur DNS le plus proche (flèche bleue).

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

Démonstration de BGP natif sur Windows Server avec Anycast

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

Configuration requise

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

Configuration de Hyper-V

Configurez votre serveur Hyper-V comme suit :

  • 2 réseaux de commutateur virtuel privé sont configurés
    • Un réseau Internet fictif 131.253.1.0/24
    • Un réseau intranet fictif 10.10.10.0/24
  • 2 machines virtuelles clientes sont attachées au réseau 131.253.1.0/24
  • 2 machines virtuelles serveur sont attachées au réseau 10.10.10.0/24
  • 1 serveur est doublement hébergé et attaché aux réseaux 131.253.1.0/24 et 10.10.10.0/24.

Configuration du réseau de 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 (Windows Server)
  • 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émonstration)
  1. DC001 (Windows Server)
  • NIC1 : 10.10.10.1
  • Sous-réseau : 255.255.255.0
  • DNS : 10.10.10.1
  • Passerelle : 10.10.10.254
  1. DC002 (Windows Server)
  • NIC1 : 10.10.10.2
  • Sous-réseau 255.255.255.0
  • DNS : 10.10.10.2*
  • Passerelle : 10.10.10.254

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

Configurer DNS

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

  1. DC001, DC002
  • Installer Active Directory Domain Services et promouvoir le contrôleur de domaine (facultatif)
  • Installer le rôle DNS (obligatoire)
  • Créer une zone statique (non intégrée à 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

Configurer des adaptateurs de bouclage

Entrez les commandes suivantes à une invite de Windows PowerShell avec élévation de privilèges sur DC001 et DC002 pour configurer des adaptateurs de bouclage.

Notes

La commande Install-Module nécessite un accès Internet. Pour ce faire, affectez 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 -Force
Import-Module -Name LoopbackAdapter
New-LoopbackAdapter -Name $loopback_name -Force
$interface_loopback = Get-NetAdapter -Name $loopback_name
$interface_main = Get-NetAdapter -Name $primary_interface
Set-NetIPInterface -InterfaceIndex $interface_loopback.ifIndex -InterfaceMetric "254" -WeakHostReceive Enabled -WeakHostSend Enabled -DHCP Disabled
Set-NetIPInterface -InterfaceIndex $interface_main.ifIndex -WeakHostReceive Enabled -WeakHostSend Enabled
Set-NetIPAddress -InterfaceIndex $interface_loopback.ifIndex -SkipAsSource $True
Get-NetAdapter $loopback_name | Set-DNSClient –RegisterThisConnectionsAddress $False
New-NetIPAddress -InterfaceAlias $loopback_name -IPAddress $loopback_ipv4 -PrefixLength $loopback_ipv4_length -AddressFamily ipv4
Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_msclient
Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_pacer
Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_server
Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_lltdio
Disable-NetAdapterBinding -Name $loopback_name -ComponentID ms_rspndr

Configuration du routage des machines virtuelles

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

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

Diagramme de résumé

Configuration du laboratoire pour la démonstration du BGP natif avec Anycast DNS

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

Démonstration avec Anycast DNS

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

    PS C:\> Get-BgpRouteInformation

    DestinationNetwork NextHop LearnedFromPeer State LocalPref MED
    ------------------ ------- --------------- ----- --------- ---
    51.51.51.0/24 10.10.10.1 DC001 Best
    51.51.51.0/24 10.10.10.2 DC002 Best

  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<1 ms 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
    Réponse de 51.51.51.51 : octets=32 temps<1 ms TTL=126

    Statistiques ping pour 51.51.51.51 :
    Paquets : Envoyé = 4, Reçu = 4, Perdu = 0 (perte de 0 %),
    Durées approximatives d’aller-retour en millisecondes :
    Minimum = 0 ms, Maximum = 0 ms, Moyenne = 0 ms

    Remarque

    En cas d’échec du test ping, vérifiez également qu’il n’existe aucune règle de pare-feu bloquant ICMP.

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

    PS C:\> dig server.zone.tst TXT +short
    PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51

    Un client affiche « DC001 » et l’autre client affiche « DC002 » pour vérifier que 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
    Bouclage
    Ethernet 2
    PS C:\> Disable-NetAdapter "Ethernet 2"
    Confirmer
    Êtes-vous sûr de vouloir effectuer cette action ?
    Disable-NetAdapter « Ethernet 2 »
    [Y] Oui [A] Oui à tous [N] Non [L] Non à tous [S] Suspendre [?] Aide (la valeur par défaut est « Y ») :
    PS C:\> (Get-NetAdapter).Status
    Haut
    Désactivé

  5. Vérifiez que les clients DNS qui recevaient auparavant des réponses de DC001 ont basculé vers DC002.

    PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
    Serveur : Non reconnu
    Adresse : 51.51.51.51

    server.zone.tst text =

    « DC001 »
    PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
    Serveur : Non reconnu
    Adresse : 51.51.51.51

    server.zone.tst text =

    « DC002 »

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

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

Remarque

Si aucun équilibreur de charge n’est utilisé, un client individuel utilise 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, consultez la section 4.4.3 de RFC4786 : Chemins d’accès à coût égal.

Forum aux questions

Q : Anycast DNS est-il une bonne solution à utiliser dans un environnement DNS local ?
R : Anycast DNS fonctionne en toute transparence avec un service DNS local. Toutefois, Anycast n’est pas nécessaire pour que le service DNS soit mis à l’échelle.

Q : Quel est l’impact de l’implémentation de Anycast DNS dans un environnement avec un grand nombre (par exemple, >50) de contrôleurs de domaine ?
R : Il n’y a aucun impact direct sur les fonctionnalités. Si un équilibreur de charge est utilisé, aucune autre configuration sur les contrôleurs de domaine n’est requise.

Q : Une configuration Anycast DNS 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 prend en charge les problèmes liés au service serveur DNS. Consultez le fournisseur de l’équilibreur de charge pour les problèmes liés au transfert DNS.

Q : Quelle est la meilleure pratique pour Anycast DNS avec un grand nombre (par exemple, >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 : Anycast DNS et Azure DNS ont-ils des fonctionnalités similaires ?
R : Azure DNS utilise Anycast. Pour utiliser Anycast avec Azure DNS, configurez votre équilibreur de charge pour transférer les requêtes au serveur Azure DNS.