Delen via


Overzicht van Anycast DNS

In dit onderwerp vindt u informatie over hoe Anycast DNS werkt.

Wat is Anycast?

Anycast is een technologie die meerdere routeringspaden biedt naar een groep eindpunten waaraan elk hetzelfde IP-adres is toegewezen. Elk apparaat in de groep adverteert hetzelfde adres op een netwerk en routeringsprotocollen worden gebruikt om te kiezen welke het beste doel is.

Met Anycast kunt u een staatloze service, zoals DNS of HTTP, schalen door meerdere knooppunten achter hetzelfde IP-adres te plaatsen en ecmp-routering (equal-cost multi-path) te gebruiken om verkeer tussen deze knooppunten te leiden. Anycast verschilt van unicast, waarbij elk eindpunt een eigen, afzonderlijk IP-adres heeft.

Waarom Anycast gebruiken met DNS?

Met Anycast DNS kunt u een DNS-server of een groep servers inschakelen om te reageren op DNS-query's op basis van de geografische locatie van een DNS-client. Dit kan de DNS-reactietijd verbeteren en dns-clientinstellingen vereenvoudigen. Anycast DNS biedt ook een extra redundantielaag en kan helpen beschermen tegen DNS Denial of Service-aanvallen.

Hoe Anycast DNS werkt

Anycast DNS werkt met behulp van routeringsprotocollen zoals Border Gateway Protocol (BGP) voor het verzenden van DNS-query's naar een voorkeurs-DNS-server of -groep DNS-servers (bijvoorbeeld een groep DNS-servers die worden beheerd door een load balancer). Dit ontwerp kan DNS-communicatie optimaliseren door DNS-antwoorden te verkrijgen van een DNS-server die zich het dichtst bij een client bevindt.

Met Anycast adverteren servers die zich op meerdere geografische locaties bevinden elk één, identiek IP-adres aan hun lokale gateway (router). Wanneer een DNS-client een query initieert naar het Anycast-adres, worden de beschikbare routes geëvalueerd en wordt de DNS-query verzonden naar de voorkeurslocatie. Over het algemeen is deze locatie de dichtstbijzijnde op basis van netwerktopologie. Zie het volgende voorbeeld.

Vier DNS-servers, die zich op verschillende sites bevinden, kondigen hetzelfde Anycast-IP-adres aan voor het netwerk

Afbeelding 1: Voorbeeld van Anycast-netwerk

  • Vier DNS-servers (blauwe cirkels), die zich op verschillende sites in een netwerk bevinden, kondigen elk hetzelfde Anycast-IP-adres aan op hun lokale routeringsapparaat (niet weergegeven).
  • Routes worden gedeeld tussen apparaten in het netwerk (zwarte pijlen).
  • Een DNS-clientapparaat (groene cirkel) verzendt een DNS-query naar het Anycast-IP-adres.
  • De DNS-aanvraag van de client wordt ontvangen door een routeringsapparaat in het netwerk (niet weergegeven).
  • Het routeringsapparaat analyseert de beschikbare routes naar het Anycast-IP-adres en routeert de DNS-query met behulp van de kortste beschikbare route.
  • De DNS-query wordt verzonden naar de dichtstbijzijnde DNS-server (blauwe pijl).

Anycast-DNS wordt tegenwoordig gebruikt om DNS-verkeer te routeren voor veel globale DNS-services. Het hoofd-DNS-serversysteem is bijvoorbeeld sterk afhankelijk van Anycast DNS. Anycast werkt ook met veel verschillende routeringsprotocollen en kan uitsluitend worden gebruikt op intranetten.

Windows Server native BGP Anycast-demo

De volgende procedure laat zien hoe systeemeigen BGP op Windows Server kan worden gebruikt met Anycast DNS.

Requirements

  • Eén fysiek apparaat waarop de Hyper-V-rol is geïnstalleerd.
    • Windows Server 2012 R2, Windows 10 of hoger.
  • 2 client-VM's (elk besturingssysteem).
    • Installatie van BIND-tools voor DNS, zoals dig, wordt aanbevolen.
  • 3 server-VM's (Windows Server 2016 of Windows Server 2019).
    • Als de Windows PowerShell LoopbackAdapter-module nog niet is geïnstalleerd op server-VM's (DC001, DC002), is internettoegang tijdelijk vereist om deze module te installeren.

Hyper-V instellen

Configureer uw Hyper-V-server als volgt:

  • 2 privénetwerken voor virtuele switch zijn geconfigureerd
    • Een mock-internetnetwerk 131.253.1.0/24
    • Een mock-intranetnetwerk 10.10.10.0/24
  • Twee client-VM's zijn gekoppeld aan het netwerk 131.253.1.0/24
  • Twee server-VM's zijn gekoppeld aan het netwerk 10.10.10.0/24
  • 1 server is dubbel thuis en gekoppeld aan zowel het 131.253.1.0/24 als het 10.10.10.0/24 netwerk.

Netwerkconfiguratie van virtuele machines

Configureer netwerkinstellingen op virtuele machines met de volgende instellingen:

  1. Client1, client2
  • Client1: 131.253.1.1
  • Client2: 131.253.1.2
  • Subnet-masker: 255.255.255.0
  • DNS: 51.51.51.51.51
  • Gateway: 131.253.1.254
  1. Gateway (Windows Server)
  • NIC1: 131.253.1.254, subnet 255.255.255.0
  • NIC2: 10.10.10.254, subnet 255.255.255.0
  • DNS: 51.51.51.51.51
  • Gateway: 131.253.1.100 (kan worden genegeerd voor de demo)
  1. DC001 (Windows Server)
  • NIC1: 10.10.10.1
  • Subnet: 255.255.255.0
  • DNS: 10.10.10.1
  • Gateway: 10.10.10.254
  1. DC002 (Windows Server)
  • NIC1: 10.10.10.2
  • Subnet 255.255.255.0
  • DNS: 10.10.10.2*
  • Gateway: 10.10.10.254

*Gebruik 10.10.10.1 voor DNS in eerste instantie bij het uitvoeren van domeindeelname voor DC002, zodat u het Active Directory-domein op DC001 kunt vinden.

DNS configureren

Gebruik Serverbeheer en de DNS-beheerconsole of Windows PowerShell om de volgende serverfuncties te installeren en een statische DNS-zone op elk van twee servers te maken.

  1. DC001, DC002
  • Active Directory Domain Services installeren en niveau verhogen naar domeincontroller (optioneel)
  • De DNS-rol installeren (vereist)
  • Maak een statische zone (niet-AD geïntegreerd) met de naam zone.tst op zowel DC001 als DC002
    • Voeg de enkele statische recordnaam server toe in een zone van het type "TXT".
    • Gegevens (tekst) voor de TXT-record op DC001 = DC001
    • Gegevens (tekst) voor de TXT-record op DC002 = DC002

Loopback-adapters configureren

Voer de volgende opdrachten in bij een Windows PowerShell-prompt met verhoogde bevoegdheid op DC001 en DC002 om loopback-adapters te configureren.

Note

Voor de opdracht Install-Module is internettoegang vereist. Dit kan worden gedaan door de VIRTUELE machine tijdelijk toe te wijzen aan een extern netwerk in 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

Routeringsconfiguratie voor virtuele machines

Gebruik de volgende Windows PowerShell-opdrachten op VM's om routering te configureren.

  1. Gateway
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

Overzichtsdiagram

Lab-installatie voor systeemeigen BGP Anycast DNS-demo

Afbeelding 2: Lab-installatie voor systeemeigen BGP Anycast DNS-demo

Anycast-DNS-demonstratie

  1. BGP-routering controleren op de gatewayserver

    PS C:\> Get-BgpRouteInformation

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

  2. Controleer op client1 en client2 of u 51.51.51.51 kunt bereiken

    PS C:\> ping 51.51.51.51

    Pingen 51.51.51.51 met 32 bytes aan gegevens:
    Antwoord van 51.51.51.51: bytes=32 tijd<1ms TTL=126
    Antwoord van 51.51.51.51: bytes=32 tijd<1ms TTL=126
    Antwoord van 51.51.51.51: bytes=32 tijd<1ms TTL=126
    Antwoord van 51.51.51.51: bytes=32 tijd<1ms TTL=126

    Pingstatistieken voor 51.51.51.51:51:
    Pakketten: Verzonden = 4, Ontvangen = 4, Verloren = 0 (0% verlies),
    Geschatte retourtijden in milliseconden:
    Minimum = 0 ms, Maximum = 0ms, Gemiddelde = 0ms

    Note

    Als ping mislukt, controleert u ook of er geen firewallregels zijn die ICMP blokkeren.

  3. Gebruik op client1 en client2 nslookup of graaf om een query uit te voeren op de TXT-record. Voorbeelden van beide worden weergegeven.

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

    De ene client geeft 'DC001' weer en de andere client geeft 'DC002' weer, waarbij wordt gecontroleerd of Anycast correct werkt. U kunt ook query's uitvoeren vanaf de gatewayserver.

  4. Schakel vervolgens de Ethernet-adapter op DC001 uit.

    PS C:\> (Get-NetAdapter).Name
    Loopback
    Ethernet 2
    PS C:\> Disable-NetAdapter "Ethernet 2"
    Confirm
    Weet u zeker dat u deze actie wilt uitvoeren?
    Disable-NetAdapter 'Ethernet 2'
    [Y] Ja [A] Ja voor alle [N] Nee [L] Nee voor alle [S] Onderbreken [?] Help (standaard is 'Y'):
    PS C:\> (Get-NetAdapter).Status
    Up
    Disabled

  5. Controleer of DNS-clients die eerder reacties van DC001 hebben ontvangen, zijn overgeschakeld naar DC002.

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

    server.zone.tst tekst =

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

    server.zone.tst tekst =

    "DC002"

  6. Controleer of de BGP-sessie niet beschikbaar is op DC001 met behulp van Get-BgpStatistics op de gatewayserver.

  7. Schakel de Ethernet-adapter op DC001 opnieuw in en controleer of de BGP-sessie is hersteld en dat clients DNS-antwoorden van DC001 opnieuw ontvangen.

Note

Als een load balancer niet wordt gebruikt, gebruikt een afzonderlijke client dezelfde back-end-DNS-server als deze beschikbaar is. Hiermee maakt u een consistent BGP-pad voor de client. Voor meer informatie, zie sectie 4.4.3 van RFC4786: Equal-Cost Paden.

Veelgestelde vragen

V: Is Anycast DNS een goede oplossing voor gebruik in een on-premises DNS-omgeving?
A: Anycast DNS werkt naadloos met een on-premises DNS-service. Anycast is echter niet vereist om de DNS-service te schalen.

V: Wat is de impact van het implementeren van Anycast-DNS in een omgeving met een groot aantal (bijvoorbeeld >50) domeincontrollers?
A: Er is geen directe invloed op de functionaliteit. Als er een load balancer wordt gebruikt, is er geen andere configuratie op domeincontrollers vereist.

V: Wordt een Anycast DNS-configuratie ondersteund door de Microsoft-klantenservice?
A: Als u een niet-Microsoft-load balancer gebruikt om DNS-query's door te sturen, ondersteunt Microsoft problemen met betrekking tot de DNS-serverservice. Raadpleeg de leverancier van de load balancer voor problemen met betrekking tot DNS-doorsturen.

V: Wat is de best practice voor Anycast DNS met een groot aantal (bijvoorbeeld >50) domeincontrollers?
A: De aanbevolen procedure is om een load balancer op elke geografische locatie te gebruiken. Load balancers worden doorgaans geleverd door een externe leverancier.

V: Hebben Anycast DNS en Azure DNS vergelijkbare functionaliteit?
A: Azure DNS maakt gebruik van Anycast. Als u Anycast wilt gebruiken met Azure DNS, configureert u uw load balancer om aanvragen door te sturen naar de Azure DNS-server.