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.
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 :
- 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
- 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)
- 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
- 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.
- 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.
- 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
- 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
- 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é
Figure 2 : Configuration du laboratoire pour la démonstration du BGP natif avec Anycast DNS
Démonstration avec Anycast DNS
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 BestSur 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=126Statistiques 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 msRemarque
En cas d’échec du test ping, vérifiez également qu’il n’existe aucune règle de pare-feu bloquant ICMP.
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.
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é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.51server.zone.tst text =
« DC001 »
PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
Serveur : Non reconnu
Adresse : 51.51.51.51server.zone.tst text =
« DC002 »
Vérifiez que la session BGP est en panne sur DC001 à l’aide de Get-BgpStatistics sur le serveur de passerelle.
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.