anycast DNS-översikt

  • 10/23/2020
  • 7 minuter att läsa
    • g
    • e

gäller för: Windows Server (Halvårskanal), Windows Server 2016, Windows Server 2019

det här avsnittet innehåller information om hur anycast DNS fungerar.

Vad är Anycast?

Anycast är en teknik som tillhandahåller flera routingsvägar till en grupp slutpunkter som var och en tilldelas samma IP-adress. Varje enhet i gruppen annonserar samma adress i ett nätverk och routingprotokoll används för att välja vilken som är den bästa destinationen.

Anycast gör att du kan skala en statslös tjänst, till exempel DNS eller HTTP, genom att placera flera noder bakom samma IP-adress och använda ECMP-routing med samma kostnad (ecmp) för att dirigera trafik mellan dessa noder. Anycast skiljer sig från unicast, där varje slutpunkt har sin egen, separata IP-adress.

varför använda Anycast med DNS?

med Anycast DNS kan du aktivera en DNS-server eller en grupp servrar för att svara på DNS-frågor baserat på en DNS-klients geografiska läge. Detta kan förbättra DNS-svarstiden och förenkla DNS-klientinställningarna. Anycast DNS ger också ett extra lager av redundans och kan hjälpa till att skydda mot DNS-överbelastningsattacker.

hur anycast DNS fungerar

Anycast DNS fungerar genom att använda routingprotokoll som Border Gateway Protocol (BGP) för att skicka DNS-frågor till en föredragen DNS-server eller grupp av DNS-servrar (till exempel: en grupp DNS-servrar som hanteras av en lastbalanserare). Detta kan optimera DNS-kommunikation genom att få DNS-svar från en DNS-server som ligger närmast en klient.

med Anycast annonserar servrar som finns på flera geografiska platser en enda, identisk IP-adress till sin lokala gateway (router). När en DNS-klient initierar en fråga till anycast-adressen utvärderas de tillgängliga rutterna och DNS-frågan skickas till önskad plats. I allmänhet är detta den närmaste platsen baserat på nätverkstopologi. Se följande exempel.

fyra DNS-servrar, som finns på olika platser, meddelar samma Anycast IP-adress till nätverket

Figur 1: fyra DNS-servrar som finns på olika platser i ett nätverk meddelar var och en samma anycast IP-adress (svarta pilar) till nätverket. En DNS-klientenhet skickar ut en begäran till anycast IP-adressen. Nätverksenheter analyserar tillgängliga rutter och skickar klientens DNS-fråga till närmaste plats (blå pil).

Anycast DNS används ofta idag för att dirigera DNS-trafik för många globala DNS-tjänster. Till exempel beror root DNS-serversystemet starkt på Anycast DNS. Anycast fungerar också med en mängd olika routingprotokoll och kan användas uteslutande på intranät.

Windows Server native BGP anycast demo

följande procedur visar hur native BGP på Windows Server kan användas med Anycast DNS.

krav

  • en fysisk enhet med Hyper-V-rollen installerad.
    • Windows Server 2012 R2, Windows 10 eller senare.
  • 2 klient VM (alla operativsystem).
    • Installation av BINDNINGSVERKTYG för DNS som dig rekommenderas.
  • 3 Server VM (Windows Server 2016 eller Windows Server 2019).
    • om Windows PowerShell LoopbackAdapter-modulen inte redan är installerad på serverns virtuella datorer (DC001, DC002) krävs Internetåtkomst tillfälligt för att installera den här modulen.

Hyper-V setup

konfigurera din Hyper-V-server enligt följande:

  • 2 privata virtuella switch nätverk är konfigurerade
    • en mock Internet-nätverk 131.253.1.0/24
    • en mock intranät nätverk 10.10.10.0/24
  • 2 klient VMs är anslutna till 131.253.1.0/24 nätverk
  • 2 Server VMs är anslutna till 10.10.10.0/24 nätverk
  • 1 server är dual-homed och ansluten till både 131.253.1.0/24 och 10.10.10.0 / 24 nätverk.

virtuell maskin nätverkskonfiguration

Konfigurera nätverksinställningar på virtuella maskiner med följande inställningar:

  1. Kunden1, kunden2
  • Client1: 131.253.1.1
  • Client2: 131.253.1.2
  • nätmask: 255.255.255.0
  • DNS: 51.51.51.51
  • Gateway: 131.253.1.254
  1. Gateway (Windows Server)
  • NIC1: 131.253.1.254, subnät 255.255.255.0
  • NIC2: 10.10.10.254, subnät 255.255.255.0
  • DNS: 51.51.51.51
  • Gateway: 131.253.1.100 (kan ignoreras för demo)
  1. DC001 (Windows Server)
  • NIC1: 10.10.10.1
  • subnät: 255.255.255.0
  • DNS: 10.10.10.1
  • Gateway: 10.10.10.254
  1. DC002 (Windows Server)
  • NIC1: 10.10.10.2
  • subnät 255.255.255.0
  • DNS: 10.10.10.2 *
  • Gateway: 10.10.10.254

*använd 10.10.10.1 för DNS initialt när du utför domänanslutning för DC002 så att du kan hitta Active Directory-domänen på DC001.

konfigurera DNS

använd Serverhanteraren och DNS-hanteringskonsolen eller Windows PowerShell för att installera följande serverroller och skapa en statisk DNS-zon på var och en av två servrar.

  1. DC001, DC002
  • installera Active Directory Domain Services och marknadsför till domänkontrollant (valfritt)
  • installera DNS-rollen (krävs)
  • skapa en statisk zon (icke-ad integrerad) namngiven zon.tst på både DC001 och DC002
    • Lägg till den enda statiska postnamnsservern i zonen av typen ”TXT”
    • Data (text) för TXT-posten på DC001 = DC001
    • Data (text) för TXT-posten på DC002 = DC002

konfigurera loopback-Adaptrar

ange följande kommandon vid en förhöjd Windows PowerShell-prompt på DC001 och DC002 för att konfigurera loopback-Adaptrar.

Obs

kommandot Install-Module kräver tillgång till Internet. Detta kan göras genom att tillfälligt tilldela VM till ett externt nätverk i 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 -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

konfiguration för virtuell maskindirigering

använd följande Windows PowerShell-kommandon på virtuella datorer för att konfigurera routing.

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

sammanfattning diagram

 Lab setup för native BGP anycast DNS demo

Figur 2: Lab setup för native BGP anycast DNS demo

Anycast DNS demonstration

  1. verifiera BGP-routing på gateway-servern

    PS C:> Get-BgpRouteInformation

    Destinationnätverk Nästhop lärde sig Frånpeer State LocalPref MED
    —————— ——- ————— —– ——— —
    51.51.51.0/24 10.10.10.1 DC001 bäst
    51.51.51.0 / 24 10.10.10.2 Dc002 bäst

  2. på client1 och client2, kontrollera att du kan nå 51.51.51.51

    PS C:> ping 51.51.51.51

    Pinga 51.51.51.51 med 32 byte data:
    svara från 51.51.51.51: byte=32 tid<1ms TTL=126
    svar från 51.51.51.51: byte=32 tid<1MS TTL=126
    svar från 51.51.51.51: byte=32 tid<1ms TTL=126
    svar från 51.51.51.51: byte=32 tid<1ms TTL=126

    Pingstatistik för 51.51.51.51:
    paket: skickat = 4, mottaget = 4, förlorat = 0 (0% förlust),
    ungefärliga tur och returtider i milli-sekunder:
    minimum = 0MS, maximum = 0MS, average = 0MS

    Obs

    om ping misslyckas, kontrollera också att det inte finns några brandväggsregler som blockerar ICMP.

  3. på client1 och client2 använder du nslookup eller dig för att fråga TXT-posten. Exempel på båda visas nedan.

    PS C: > gräva server.zon.tst TXT + kort
    PS C:> nslookup-type=Txt server.zon.tst 51.51.51.51

    en klient visar ”DC001” och den andra klienten visar ”DC002” som verifierar att Anycast fungerar korrekt. Du kan också fråga från gateway-servern.

  4. inaktivera sedan Ethernet-adaptern på DC001.

    PS C:> (Get-NetAdapter).namn
    Loopback
    Ethernet 2
    PS C:> inaktivera-NetAdapter ”Ethernet 2”
    bekräfta
    är du säker på att du vill utföra den här åtgärden?
    inaktivera-NetAdapter ’Ethernet 2’
    Ja ja till alla Nej nej till alla suspendera hjälp (standard är ”Y”):
    PS C:> (Get-NetAdapter).Status
    upp
    inaktiverad

  5. bekräfta att DNS-klienter som tidigare fick svar från DC001 har bytt till DC002.

    PS C:> nslookup-type=Txt server.zon.tst 51.51.51.51
    Server: okänd
    adress: 51.51.51.51

    server.zon.tst text =

    ”DC001”
    PS C:> nslookup-type=Txt server.zon.tst 51.51.51.51
    Server: okänd
    adress: 51.51.51.51

    server.zon.tst text =

    ”DC002”

  6. bekräfta att BGP-sessionen är nere på DC001 genom att använda Get-BgpStatistics på gateway-servern.

  7. aktivera Ethernet-adaptern på DC001 igen och bekräfta att BGP-sessionen återställs och klienter får DNS-svar från DC001 igen.

Obs!

om en lastbalanserare inte används kommer en enskild klient att använda samma back-end DNS-server om den är tillgänglig. Detta skapar en konsekvent BGP-väg för klienten. För mer information, se Avsnitt 4. 4.3 av RFC4786: lika kostnad vägar.

Vanliga frågor

F: är anycast DNS en bra lösning att använda i en lokal DNS-miljö?
A: Anycast DNS fungerar sömlöst med en lokal DNS-tjänst. Anycast krävs dock inte för att DNS-tjänsten ska skala.

F: Vad är effekten av att implementera Anycast DNS i en miljö med ett stort antal (ex: >50) domänkontrollanter?
A: Det finns ingen direkt inverkan på funktionaliteten. Om en lastbalanserare används krävs ingen ytterligare konfiguration på domänkontrollanter.

Q: Stöds en anycast DNS-konfiguration av Microsofts kundtjänst?
A: Om du använder en icke-Microsoft load balancer för att vidarebefordra DNS-frågor, stöder Microsoft problem relaterade till DNS-servertjänsten. Kontakta leverantören av lastbalanserare för problem relaterade till DNS-vidarebefordran.

F: Vad är bästa praxis för anycast DNS med ett stort antal (ex: >50) domänkontrollanter?
A: bästa praxis är att använda en lastbalanserare på varje geografisk plats. Lastbalanserare tillhandahålls vanligtvis av en extern leverantör.

Q: Har Anycast DNS och Azure DNS liknande funktioner?
A: Azure DNS använder Anycast. Om du vill använda Anycast med Azure DNS konfigurerar du din lastbalanserare för att vidarebefordra förfrågningar till Azure DNS-servern.