Anycast-DNS-Übersicht
- 10/23/2020
- 7 minuten zum Lesen
-
- g
- e
Gilt für: Windows Server (halbjährlicher Kanal), Windows Server 2016, Windows Server 2019
Dieses Thema enthält Informationen zur Funktionsweise von Anycast DNS.
Was ist Anycast?
Anycast ist eine Technologie, die mehrere Routingpfade zu einer Gruppe von Endpunkten bereitstellt, denen jeweils dieselbe IP-Adresse zugewiesen ist. Jedes Gerät in der Gruppe gibt dieselbe Adresse in einem Netzwerk an, und Routingprotokolle werden verwendet, um das beste Ziel auszuwählen.
Mit Anycast können Sie einen zustandslosen Dienst wie DNS oder HTTP skalieren, indem Sie mehrere Knoten hinter derselben IP-Adresse platzieren und ECMP-Routing (Equal-Cost Multi-Path) verwenden, um den Datenverkehr zwischen diesen Knoten zu leiten. Anycast unterscheidet sich von Unicast, bei dem jeder Endpunkt eine eigene, separate IP-Adresse hat.
Warum Anycast mit DNS verwenden?
Mit Anycast DNS können Sie einem DNS-Server oder einer Gruppe von Servern ermöglichen, auf DNS-Abfragen basierend auf dem geografischen Standort eines DNS-Clients zu antworten. Dies kann die DNS-Antwortzeit erhöhen und die DNS-Clienteinstellungen vereinfachen. Anycast DNS bietet außerdem eine zusätzliche Redundanzebene und kann zum Schutz vor DNS-Denial-of-Service-Angriffen beitragen.
Funktionsweise von Anycast DNS
Anycast DNS verwendet Routingprotokolle wie das Border Gateway Protocol (BGP), um DNS-Abfragen an einen bevorzugten DNS-Server oder eine Gruppe von DNS-Servern zu senden (z: b. eine Gruppe von DNS-Servern, die von einem Load Balancer verwaltet werden). Dadurch kann die DNS-Kommunikation optimiert werden, indem DNS-Antworten von einem DNS-Server abgerufen werden, der einem Client am nächsten liegt.
Mit Anycast melden Server, die an mehreren geografischen Standorten vorhanden sind, ihrem lokalen Gateway (Router) jeweils eine einzige, identische IP-Adresse. Wenn ein DNS-Client eine Abfrage an die Anycast-Adresse initiiert, werden die verfügbaren Routen ausgewertet und die DNS-Abfrage an den bevorzugten Speicherort gesendet. Im Allgemeinen ist dies der nächstgelegene Standort basierend auf der Netzwerktopologie. Siehe das folgende Beispiel.
Abbildung 1: Vier DNS-Server an verschiedenen Standorten in einem Netzwerk melden dem Netzwerk jeweils dieselbe Anycast-IP-Adresse (schwarze Pfeile). Ein DNS-Client-Gerät sendet eine Anfrage an die Anycast-IP-Adresse. Netzwerkgeräte analysieren die verfügbaren Routen und senden die DNS-Abfrage des Clients an den nächstgelegenen Standort (blauer Pfeil).
Anycast DNS wird heute häufig verwendet, um DNS-Datenverkehr für viele globale DNS-Dienste weiterzuleiten. Beispielsweise hängt das Root-DNS-Serversystem stark von Anycast DNS ab. Anycast arbeitet auch mit einer Vielzahl von Routing-Protokollen und kann ausschließlich in Intranets verwendet werden.
Windows Server natives BGP Anycast-Demo
Das folgende Verfahren zeigt, wie natives BGP auf Windows Server mit Anycast DNS verwendet werden kann.
Anforderungen
- Ein physisches Gerät mit installierter Hyper-V-Rolle.
- Windows Server 2012 R2, Windows 10 oder höher.
- 2 client-VMs (jedes Betriebssystem).
- Die Installation von Bindungstools für DNS wie dig wird empfohlen.
- 3 server-VMs (Windows Server 2016 oder Windows Server 2019).
- Wenn das Windows PowerShell LoopbackAdapter-Modul noch nicht auf Server-VMs (DC001, DC002) installiert ist, ist für die Installation dieses Moduls vorübergehend ein Internetzugang erforderlich.
Hyper-V-Setup
Konfigurieren Sie Ihren Hyper-V-Server wie folgt:
- 2 private virtuelle Switch-Netzwerke sind konfiguriert
- Ein Scheininternet-Netzwerk 131.253.1.0/24
- Ein Scheinintranet-Netzwerk 10.10.10.0/24
- 2 client-VMs sind an das 131.253.1.0/24-Netzwerk angeschlossen
- 2 Server-VMs sind an das 10.10.10.0/24-Netzwerk angeschlossen
- 1 Server ist Dual-Homed und sowohl an das 131.253.1.0/24- als auch an das 10.10.10.0/24-Netzwerk angeschlossen.
Netzwerkkonfiguration der virtuellen Maschine
Konfigurieren Sie die Netzwerkeinstellungen auf virtuellen Maschinen mit den folgenden Einstellungen:
- Klient1, Klient2
- Client1: 131.253.1.1
- Client2: 131.253.1.2
- Subnetzmaske: 255.255.255.0
- DNS: 51.51.51.51
- Zugang: 131.253.1.254
- Gateway (Windows-Server)
- NIC1: 131.253.1.254, Subnetz 255.255.255.0
- NIC2: 10.10.10.254, Subnetz 255.255.255.0
- DNS: 51.51.51.51
- Gateway: 131.253.1.100 (kann für die Demo ignoriert werden)
- DC001 (Windows Server)
- NIC1: 10.10.10.1
- Subnetz: 255.255.255.0
- DNS: 10.10.10.1
- Gateway: 10.10.10.254
- DC002 (Windows Server)
- 11: 10.10.10.2
- Subnetz 255.255.255.0
- DNS: 10.10.10.2*
- Gateway: 10.10.10.254
* Verwenden Sie zunächst 10.10.10.1 für DNS, wenn Sie einen Domänenbeitritt für DC002 durchführen, damit Sie die Active Directory-Domäne auf DC001 finden können.
DNS konfigurieren
Verwenden Sie Server Manager und die DNS-Verwaltungskonsole oder Windows PowerShell, um die folgenden Serverrollen zu installieren und auf jedem der beiden Server eine statische DNS-Zone zu erstellen.
- DC001, DC002
- Installieren von Active Directory-Domänendiensten und Heraufstufen zum Domänencontroller (optional)
- Installieren der DNS-Rolle (erforderlich)
- Erstellen einer statischen Zone (nicht AD integriert) mit dem Namen zone.tst auf DC001 und DC002
- Fügen Sie den einzelnen statischen Datensatznamenserver in der Zone vom Typ „TXT“ hinzu
- Daten (Text) für den TXT-Datensatz auf DC001 = DC001
- Daten (Text) für den TXT-Datensatz auf DC002 = DC002
Loopback-Adapter konfigurieren
Geben Sie die folgenden Befehle an einer Windows PowerShell-Eingabeaufforderung mit erhöhten Rechten auf DC001 und DC002 ein, um Loopback-Adapter zu konfigurieren.
Hinweis
Der Befehl Install-Module erfordert einen Internetzugang. Dies kann durch temporäres Zuweisen der VM zu einem externen Netzwerk in Hyper-V erfolgen.
$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
Routingkonfiguration der virtuellen Maschine
Verwenden Sie die folgenden Windows PowerShell-Befehle auf VMs, um das Routing zu konfigurieren.
- Zugang
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
- Modell: 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
- Modell: 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
Übersichtsdiagramm
Abbildung 2: Laboreinrichtung für native BGP Anycast DNS-Demo
Anycast DNS-Demonstration
-
Überprüfen Sie das BGP-Routing auf dem Gateway-Server
PS C:> Get-BgpRouteInformation
DestinationNetwork NextHop LearnedFromPeer Zustand LocalPref MED
—————— ——- ————— —– ——— —
51.51.51.0/24 10.10.10.1 DC001 Beste
51.51.51.0/24 10.10.10.2 DC002 Beste -
Stellen Sie auf Client1 und Client2 sicher, dass Sie 51.51.51.51 erreichen können
PS C:> Ping 51.51.51.51
Ping 51.51.51.51 mit 32 Datenbytes:
Antwort von 51.51.51.51: bytes = 32 Zeit < 1ms TTL = 126
Antwort von 51.51.51.51: bytes = 32 zeit < 1 ms TTL = 126
Antwort von 51.51.51.51: bytes = 32 zeit < 1 ms TTL = 126
Antwort von 51.51.51.51: bytes = 32 zeit < 1 ms TTL = 126Ping statistiken für 51.51.51.51:
Pakete: Gesendet = 4, Erhalten = 4, Verloren = 0 (0% verlust),
Ungefähre runde reise mal in milli-sekunden:
Minimum = 0 ms, Maximum = 0 ms, Durchschnitt = 0 msHinweis
Wenn Ping fehlschlägt, überprüfen Sie auch, ob keine Firewall-Regeln ICMP blockieren.
-
Verwenden Sie auf client1 und client2 nslookup oder dig , um den TXT-Datensatz abzufragen. Beispiele für beide sind unten gezeigt.
PS C:> graben Server.Zone.tst TXT +kurz
PS C:> nslookup -Typ =TXT-Server.Zone.tst 51.51.51.51Ein Client zeigt „DC001“ und der andere Client „DC002“ an, um zu überprüfen, ob Anycast ordnungsgemäß funktioniert. Sie können auch vom Gateway-Server abfragen.
-
Deaktivieren Sie als Nächstes den Ethernet-Adapter auf DC001.
PS C:> (Get-NetAdapter).Name
Loopback
Ethernet 2
PS C:> Disable-NetAdapter „Ethernet 2“
Bestätigen
Sind Sie sicher, dass Sie diese Aktion ausführen möchten?
Disable-NetAdapter ‚Ethernet 2‘
Ja Ja zu allen Nein Nein zu allen Suspend Help (Standard ist „Y“):
PS C:> (Get-NetAdapter).Status
Up
Deaktiviert -
Stellen Sie sicher, dass DNS-Clients, die zuvor Antworten von DC001 erhalten haben, zu DC002 gewechselt sind.
PS C:> nslookup -Typ =TXT-Server.Zone.tst 51.51.51.51
Server: Unbekannte
Adresse: 51.51.51.51server.Zone.tst text =
„DC001“
PS C:> nslookup -Typ =TXT-Server.Zone.tst 51.51.51.51
Server: Unbekannt
Adresse: 51.51.51.51server.Zone.tst text =
„DC002“
-
Bestätigen Sie, dass die BGP-Sitzung auf DC001 nicht verfügbar ist, indem Sie Get-BgpStatistics auf dem Gatewayserver verwenden.
-
Aktivieren Sie den Ethernet-Adapter auf DC001 erneut und bestätigen Sie, dass die BGP-Sitzung wiederhergestellt ist und Clients erneut DNS-Antworten von DC001 erhalten.
Hinweis
Wenn kein Load Balancer verwendet wird, verwendet ein einzelner Client denselben Back-End-DNS-Server, sofern er verfügbar ist. Dadurch wird ein konsistenter BGP-Pfad für den Client erstellt. Weitere Informationen finden Sie in Abschnitt 4.4.3 von RFC4786: Equal-Cost-Pfade.
Häufig gestellte Fragen
F: Ist Anycast DNS eine gute Lösung für die Verwendung in einer lokalen DNS-Umgebung?
A: Anycast DNS arbeitet nahtlos mit einem lokalen DNS-Dienst zusammen. Anycast ist jedoch nicht erforderlich, damit der DNS-Dienst skaliert werden kann.
F: Welche Auswirkungen hat die Implementierung von Anycast DNS in einer Umgebung mit einer großen Anzahl (z. B. >50) von Domänencontrollern?
A: Es gibt keine direkten Auswirkungen auf die Funktionalität. Wenn ein Load Balancer verwendet wird, ist keine zusätzliche Konfiguration auf Domänencontrollern erforderlich.
Q: Wird eine Anycast-DNS-Konfiguration vom Microsoft-Kundendienst unterstützt?
A: Wenn Sie einen Nicht-Microsoft-Load Balancer zum Weiterleiten von DNS-Abfragen verwenden, unterstützt Microsoft Probleme im Zusammenhang mit dem DNS-Serverdienst. Wenden Sie sich bei Problemen im Zusammenhang mit der DNS-Weiterleitung an den Load Balancer-Anbieter.
F: Was ist die beste Vorgehensweise für Anycast DNS mit einer großen Anzahl (z. B. >50) von Domänencontrollern?
A: Es empfiehlt sich, an jedem geografischen Standort einen Load Balancer zu verwenden. Load Balancer werden in der Regel von einem externen Anbieter bereitgestellt.
Q: Haben Anycast DNS und Azure DNS ähnliche Funktionen?
A: Azure DNS verwendet Anycast. Um Anycast mit Azure DNS zu verwenden, konfigurieren Sie Ihren Load Balancer so, dass Anforderungen an den Azure DNS-Server weitergeleitet werden.