Auf Englisch lesen

Freigeben über


Übersicht über Anycast DNS

Dieses Thema enthält Informationen zur Funktionsweise von Anycast DNS.

Was ist Anycast?

Anycast ist eine Technologie, mit der mehrere Routingpfade für eine Gruppe von Endpunkten bereitgestellt werden, denen jeweils dieselbe IP-Adresse zugewiesen ist. Jedes Gerät in der Gruppe gibt dieselbe Adresse in einem Netzwerk an, und Routingprotokolle werden zur Auswahl des besten Ziels verwendet.

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 Datenverkehr zwischen diesen Knoten weiterzuleiten. Anycast unterscheidet sich von der Unicast-Adressierung, bei der jeder Endpunkt über eine eigene, separate IP-Adresse verfügt.

Warum Anycast mit DNS verwenden?

Mit Anycast DNS können Sie einen DNS-Server oder eine Gruppe von Servern aktivieren, um auf DNS-Abfragen basierend auf dem geografischen Standort eines DNS-Clients zu reagieren. Dies kann die DNS-Antwortzeit verbessern und die DNS-Clienteinstellungen vereinfachen. Anycast DNS bietet auch eine zusätzliche Redundanzebene und kann zum Schutz vor DNS-Denial-of-Service-Angriffen beitragen.

Funktionsweise von Anycast DNS

Bei Anycast DNS werden Routingprotokolle wie das Border Gateway Protocol (BGP) dazu verwendet, 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 Lastenausgleich verwaltet werden). Mithilfe dieses Designs kann die DNS-Kommunikation optimiert werden, indem DNS-Antworten von einem DNS-Server abgerufen werden, der einem Client am nächsten ist.

Bei Anycast kündigen Server, die an mehreren geografischen Standorten vorhanden sind, jeweils eine einzelne, identische IP-Adresse für ihr lokales Gateway (Router) an. Wenn von einem DNS-Client eine Abfrage an die Anycast-Adresse initiiert wird, werden die verfügbaren Routen ausgewertet, und die DNS-Abfrage wird an den bevorzugten Standort gesendet. Im Allgemeinen ist dies der nächstgelegene Standort basierend auf der Netzwerktopologie. Siehe folgendes Beispiel.

Vier DNS-Server, die sich an unterschiedlichen Standorten befinden, kündigen dieselbe Anycast-IP-Adresse für das Netzwerk an.

Abbildung 1: Anycast-Beispielnetzwerk

  • Vier DNS-Server (blaue Kreise), die sich an verschiedenen Standorten in einem Netzwerk befinden, geben jeweils dieselbe Anycast-IP-Adresse für ihr lokales Routinggerät an (nicht dargestellt).
  • Routen werden für Geräte im Netzwerk freigegeben (schwarze Pfeile).
  • Ein DNS-Clientgerät (grüner Kreis) sendet eine DNS-Abfrage an die Anycast-IP-Adresse.
  • Die DNS-Anforderung des Clients wird von einem Routinggerät im Netzwerk empfangen (nicht dargestellt).
  • Das Routinggerät analysiert die verfügbaren Routen zu der Anycast-IP-Adresse und leitet die DNS-Abfrage mithilfe der kürzesten verfügbaren Route weiter.
  • Die DNS-Abfrage wird an den nächstgelegenen DNS-Server gesendet (blauer Pfeil).

Anycast DNS wird heute häufig dazu verwendet, DNS-Datenverkehr für viele globale DNS-Dienste weiterzuleiten. Beispielsweise hängt das DNS-Stammserversystem stark von Anycast DNS ab. Anycast funktioniert auch mit einer Vielzahl von Routingprotokollen und kann ausschließlich in Intranets verwendet werden.

Windows Server Native BGP Anycast-Demo

Das folgende Verfahren veranschaulicht, wie natives BGP unter 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 (beliebiges Betriebssystem).
    • Die Installation von BIND-Tools 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 wurde, ist für die Installation dieses Moduls vorübergehend Internetzugriff erforderlich.

Hyper-V-Setup

Konfigurieren Sie den Hyper-V-Server wie folgt:

  • 2 private Netzwerke mit virtuellem Switch sind konfiguriert
    • Ein Pseudo-Internetnetzwerk 131.253.1.0/24
    • Ein Pseudo-Internetnetzwerk 10.10.10.0/24
  • 2 Client-VMs sind an das Netzwerk 131.253.1.0/24 angeschlossen.
  • 2 Server-VMs sind an das Netzwerk 10.10.10.0/24 angeschlossen.
  • 1 Server ist dual homed und an die Netzwerke 131.253.1.0/24 und 10.10.10.0/24 angeschlossen.

Netzwerkkonfiguration virtueller Computer

Konfigurieren Sie die Netzwerkeinstellungen auf den virtuellen Computern wie folgt:

  1. Client1, Client2
  • Client1: 131.253.1.1
  • Client2: 131.253.1.2
  • Subnetzmaske: 255.255.255.0
  • DNS: 51.51.51.51
  • Gateway: 131.253.1.254
  1. 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)
  1. DC001 (Windows Server)
  • NIC1: 10.10.10.1
  • Subnetz: 255.255.255.0
  • DNS: 10.10.10.1
  • Gateway: 10.10.10.254
  1. DC002 (Windows Server)
  • NIC1: 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 den Domänenbeitritt für DC002 durchführen, damit Sie die Active Directory-Domäne auf DC001 suchen können.

Konfigurieren des DNS

Verwenden Sie den Server-Manager und die DNS-Verwaltungskonsole oder Windows PowerShell, um die folgenden Serverrollen zu installieren und eine statische DNS-Zone auf jedem der beiden Server zu erstellen.

  1. DC001, DC002
  • Installieren von Active Directory Domain Services und Heraufstufen auf Domänencontroller (optional)
  • Installieren der DNS-Rolle (erforderlich)
  • Erstellen einer statischen Zone (nicht in AD integriert) mit dem Namen zone.tst auf DC001 und DC002
    • Hinzufügen des Namenservers eines einzelnen statischen Datensatzes in Zone des Typs „TXT“
    • Daten (Text) für den TXT-Eintrag auf DC001 = DC001
    • Daten (Text) für den TXT-Eintrag auf DC002 = DC002

Konfigurieren von Loopbackadaptern

Geben Sie die folgenden Befehle an einer Windows PowerShell-Eingabeaufforderung für DC001 und DC002 ein, um Loopbackadapter zu konfigurieren.

Hinweis

Für den Befehl Install-Module ist Internetzugriff erforderlich. Dies kann durch vorübergehendes Zuweisen der VM zu einem externen Netzwerk in Hyper-V erfolgen.

PowerShell
$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

Routingkonfiguration virtueller Computer

Verwenden Sie zur Routingkonfiguration die folgenden Windows PowerShell-Befehle auf virtuellen Computern.

  1. Gateway
PowerShell
Install-WindowsFeature RemoteAccess -IncludeManagementTools
Install-RemoteAccess -VpnType RoutingOnly
Add-BgpRouter -BgpIdentifier10.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
PowerShell
Install-WindowsFeature RemoteAccess -IncludeManagementTools
Install-RemoteAccess -VpnType RoutingOnly
Add-BgpRouter -BgpIdentifier10.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
PowerShell
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

Übersichtsdiagramm

Lab-Setup für native BGP Anycast DNS-Demo

Abbildung 2: Lab-Setup für native BGP Anycast DNS-Demo

Anycast DNS-Demonstration

  1. Überprüfen Sie das BGP-Routing auf dem Gatewayserver.

    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. Überprüfen Sie auf client1 und client2, ob Sie 51.51.51.51 erreichen können.

    PS C:\> ping 51.51.51.51

    Pingen von 51.51.51.51 mit 32 Bytes Daten:
    Antwort von 51.51.51.51: bytes=32 time<1ms TTL=126
    Antwort von 51.51.51.51: bytes=32 time<1ms TTL=126
    Antwort von 51.51.51.51: bytes=32 time<1ms TTL=126
    Antwort von 51.51.51.51: bytes=32 time<1ms TTL=126

    Pingstatistik für 51.51.51.51:
    Gesendet = 4, Empfangen = 4, Verloren = 0 (0 % Verlust),
    Ungefähre Roundtripzeiten in Millisekunden:
    Minimum = 0ms, Maximum = 0ms, Mittelwert = 0ms

    Hinweis

    Wenn ein Pingfehler auftritt, vergewissern Sie sich außerdem, dass keine Firewallregeln vorhanden sind, die ICMP blockieren.

  3. Verwenden Sie auf client1 und client2 nslookup oder dig, um den TXT-Eintrag abzufragen. Beispiele für beides sind unten dargestellt.

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

    Für eine Client wird „DC001“ und für den anderen Client „DC002“ angezeigt. Dies dient der Sicherstellung, dass Anycast ordnungsgemäß funktioniert. Sie können auch Abfragen vom Gatewayserver ausführen.

  4. Deaktivieren Sie als Nächstes den Ethernet-Adapter auf DC001.

    PS C:\> (Get-NetAdapter).Name
    Loopback
    Ethernet 2
    PS C:\> Disable-NetAdapter "Ethernet 2"
    Confirm
    Möchten Sie diese Aktion wirklich ausführen?
    Disable-NetAdapter 'Ethernet 2'
    [Y] Ja [A] Ja, alle [N] Nein [L] Nein für alle [S] Anhalten [?] Hilfe (Standardeinstellung ist „Y“):
    PS C:\> (Get-NetAdapter).Status
    Nach oben
    Disabled

  5. Vergewissern Sie sich, dass DNS-Clients, die zuvor Antworten von DC001 empfangen haben, zu DC002 gewechselt sind.

    PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
    Server: unbekannt
    Adresse: 51.51.51.51

    server.zone.tst text =

    "DC001"
    PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
    Server: unbekannt
    Adresse: 51.51.51.51

    server.zone.tst text =

    "DC002"

  6. Vergewissern Sie sich, dass die BGP-Sitzung auf DC001 ausgefallen ist, indem Sie Get-BgpStatistics auf dem Gatewayserver verwenden.

  7. Aktivieren Sie den Ethernet-Adapter auf DC001 wieder, und vergewissern Sie sich, dass die BGP-Sitzung wiederhergestellt wurde und Clients wieder DNS-Antworten von DC001 empfangen.

Hinweis

Wenn kein Lastenausgleich angewendet wird, verwendet ein einzelner Client denselben Back-End-DNS-Server, sofern verfügbar. Dadurch wird ein konsistenter BGP-Pfad für den Client erstellt. Weitere Informationen finden Sie im 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 funktioniert nahtlos mit einem lokalen DNS-Dienst. Für die Skalierung des DNS-Diensts ist Anycast jedoch nicht erforderlich.

F: Welche Auswirkungen hat die Implementierung von Anycast DNS in einer Umgebung mit einer großen Anzahl von Domänencontrollern (z. B. > 50)?
A: Es gibt keine direkten Auswirkungen auf die Funktionalität. Wenn ein Lastenausgleich verwendet wird, ist keine zusätzliche Konfiguration auf Domänencontrollern erforderlich.

F: Wird eine Anycast DNS-Konfiguration vom Microsoft-Kundenservice unterstützt?
A: Wenn Sie einen Nicht-Microsoft-Lastenausgleich verwenden, um DNS-Abfragen weiterzuleiten, bietet Microsoft Unterstützung für Probleme im Zusammenhang mit dem DNS-Serverdienst. Wenden Sie sich bei Problemen im Zusammenhang mit der DNS-Weiterleitung an den Anbieter des Lastenausgleichs.

F: Was ist die bewährte Methode für Anycast DNS mit einer großen Anzahl von Domänencontrollern (z. B. > 50)?
A: Die bewährte Methode besteht darin, an jedem geografischen Standort einen Lastenausgleich zu verwenden. Lastenausgleichsmodule werden in der Regel von einem externen Anbieter bereitgestellt.

F: Verfügen Anycast DNS und Azure DNS über ähnliche Funktionen?
A: Azure DNS verwendet Anycast. Wenn Sie Anycast mit Azure DNS verwenden möchten, müssen Sie den Lastenausgleich so konfigurieren, dass Anforderungen an den Azure DNS-Server weitergeleitet werden.