DNS Anycast panoramica

  • 10/23/2020
  • 7 minuti a leggere
    • g
    • e

si Applica a: Windows Server (Semi-Annuale Canale), Windows Server 2016, Windows Server 2019

in Questo argomento vengono fornite informazioni su come DNS Anycast opere.

Che cos’è Anycast?

Anycast è una tecnologia che fornisce più percorsi di routing a un gruppo di endpoint a cui viene assegnato ciascuno lo stesso indirizzo IP. Ogni dispositivo del gruppo pubblicizza lo stesso indirizzo su una rete e i protocolli di routing vengono utilizzati per scegliere quale è la destinazione migliore.

Anycast consente di scalare un servizio stateless, ad esempio DNS o HTTP, posizionando più nodi dietro lo stesso indirizzo IP e utilizzando il routing ECMP (Equal-Cost Multi-path) per indirizzare il traffico tra questi nodi. Anycast è diverso da unicast, in cui ogni endpoint ha il proprio indirizzo IP separato.

Perché usare Anycast con DNS?

Con Anycast DNS, è possibile abilitare un server DNS, o un gruppo di server, per rispondere alle query DNS in base alla posizione geografica di un client DNS. Ciò può migliorare il tempo di risposta DNS e semplificare le impostazioni del client DNS. Anycast DNS fornisce anche un ulteriore livello di ridondanza e può aiutare a proteggere dagli attacchi denial of service DNS.

Come funziona Anycast DNS

Anycast DNS funziona utilizzando protocolli di routing come Border Gateway Protocol (BGP) per inviare query DNS a un server DNS preferito o a un gruppo di server DNS (ad esempio: un gruppo di server DNS gestiti da un sistema di bilanciamento del carico). Questo può ottimizzare le comunicazioni DNS ottenendo risposte DNS da un server DNS più vicino a un client.

Con Anycast, i server che esistono in più posizioni geografiche pubblicizzano ciascuno un singolo indirizzo IP identico al loro gateway locale (router). Quando un client DNS avvia una query all’indirizzo Anycast, vengono valutati i percorsi disponibili e la query DNS viene inviata alla posizione preferita. In generale, questa è la posizione più vicina in base alla topologia di rete. Vedere il seguente esempio.

Quattro server DNS, situati in siti diversi, annunciano lo stesso indirizzo IP Anycast alla rete

Figura 1: Quattro server DNS situati in siti diversi su una rete annunciano ciascuno lo stesso indirizzo IP Anycast (frecce nere) alla rete. Un dispositivo client DNS invia una richiesta all’indirizzo IP Anycast. I dispositivi di rete analizzano i percorsi disponibili e inviano la query DNS del client alla posizione più vicina (freccia blu).

Anycast DNS è usato comunemente oggi per instradare il traffico DNS per molti servizi DNS globali. Ad esempio, il sistema del server DNS root dipende fortemente da Anycast DNS. Anycast funziona anche con una varietà di protocolli di routing e può essere utilizzato esclusivamente su intranet.

BGP nativo di Windows Server Anycast demo

La seguente procedura dimostra come BGP nativo su Windows Server può essere utilizzato con Anycast DNS.

Requisiti

  • Un dispositivo fisico con il ruolo Hyper-V installato.
    • Windows Server 2012 R2, Windows 10 o versioni successive.
  • 2 VM client (qualsiasi sistema operativo).
    • Si consiglia l’installazione di strumenti di BIND per DNS come dig.
  • 3 VM server (Windows Server 2016 o Windows Server 2019).
    • Se il modulo LoopbackAdapter di Windows PowerShell non è già installato sulle VM server (DC001, DC002), per installare questo modulo è temporaneamente necessario l’accesso a Internet.

Configurazione Hyper-V

Configura il tuo server Hyper-V come segue:

  • 2 le reti private di switch virtuali sono configurate
    • Una rete Internet fittizia 131.253.1.0/24
    • Una rete intranet fittizia 10.10.10.0/24
  • 2 le VM client sono collegate alla rete 131.253.1.0/24
  • 2 VM server sono collegate alla rete 10.10.10.0 / 24
  • 1 server è dual-homed e collegato a entrambe le reti 131.253.1.0/24 e 10.10.10.0/24.

macchina Virtuale configurazione di rete

Configurare le impostazioni di rete su macchine virtuali con le seguenti impostazioni:

  1. Client1, client2
  • Client1: 131.253.1.1
  • Client2: 131.253.1.2
  • Subnet mask: 255.255.255.0
  • DNS: 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
  • Gateway: 131.253.1.100 (può essere ignorato per il 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
  • Sottorete 255.255.255.0
  • DNS: 10.10.10.2 *
  • Gateway: 10.10.10.254

*Utilizzare 10.10.10.1 per DNS inizialmente quando si esegue domain join per DC002 in modo da poter individuare il dominio Active Directory su DC001.

Configurare DNS

Utilizzare Server Manager e la console di gestione DNS o Windows PowerShell per installare i seguenti ruoli server e creare una zona DNS statica su ciascuno dei due server.

  1. DC001, DC002
  • Installa i servizi di dominio di Active Directory e promuovi al controller di dominio (opzionale)
  • Installa il ruolo DNS (richiesto)
  • Crea una zona statica (non integrata da AD) denominata zona.tst sia DC001 e DC002
    • Aggiungere il singolo record statico nome del server nella zona di tipo “TXT”
    • Dati (testo) per il record TXT su DC001 = DC001
    • Dati (testo) per il record TXT su DC002 = DC002

Configurare le schede di loopback

Immettere i seguenti comandi di Windows PowerShell elevato prompt DC001 e DC002 per configurare le schede di loopback.

Nota

Il comando Install-Module richiede l’accesso a Internet. Questo può essere fatto assegnando temporaneamente la VM a una rete esterna 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 -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

Configurazione routing macchina virtuale

Utilizzare i seguenti comandi di Windows PowerShell sulle macchine virtuali per configurare il 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

Riepilogo schema

installazione del Laboratorio per i nativi BGP DNS Anycast demo

Figura 2: Installazione del laboratorio per i nativi BGP DNS Anycast demo

DNS Anycast dimostrazione

  1. Verificare BGP routing sul server gateway

    PS C:> Get-BgpRouteInformation

    DestinationNetwork NextHop LearnedFromPeer Stato LocalPref MED
    —————— ——- ————— —– ——— —
    51.51.51.0/24 10.10.10.1 DC001 Migliori
    51.51.51.0/24 10.10.10.2 DC002 Migliori

  2. In client1 e client2, verificare che è possibile raggiungere 51.51.51.51

    PS C:> ping 51.51.51.51

    Ping 51.51.51.51 con 32 byte di dati:
    Risposta da 51.51.51.51: byte=32 tempo<1ms TTL=126
    Risposta da 51.51.51.51: byte=32 tempo<1ms TTL=126
    Risposta da 51.51.51.51: byte=32 tempo<1ms TTL=126
    Risposta da 51.51.51.51: byte=32 tempo<1ms TTL=126

    statistiche di Ping per 51.51.51.51:
    Pacchetti: trasmessi = 4, Ricevuti = 4, Persi = 0 (0% persi),
    Approssimativa andata in milli-secondi:
    Minimo = 0ms, Massimo = 0ms, Medio = 0ms

    Nota

    Se il comando ha esito negativo, anche controllare che non ci siano le regole del firewall di blocco ICMP.

  3. Su client1 e client2, utilizzare nslookup o dig per interrogare il record TXT. Esempi di entrambi sono mostrati di seguito.

    PS C: > dig server.zona.tst TXT + breve
    PS C: > nslookup-type=server txt.zona.tst 51.51.51.51

    Un client visualizzerà” DC001 “e l’altro client visualizzerà” DC002 ” verificando che Anycast funzioni correttamente. È inoltre possibile eseguire query dal server gateway.

  4. Quindi, disabilitare l’adattatore Ethernet su DC001.

    PS C:>(Get-NetAdapter).Name
    Loopback
    Ethernet 2
    PS C:>Disable-NetAdapter “Ethernet 2”
    Confirm
    Eseguire veramente questa azione?
    Disable-NetAdapter ‘Ethernet 2’
    Yes Yes to All No No to All Suspend Help (il valore predefinito è “Y”):
    PS C:> (Get-NetAdapter).Stato
    Up
    Disabilitato

  5. Verificare che i client DNS che in precedenza ricevevano risposte da DC001 siano passati a DC002.

    PS C: > nslookup-type=txt server.zona.tst 51.51.51.51
    Server: Sconosciuto
    Indirizzo: 51.51.51.51

    server.zona.tst text =

    “DC001”
    PS C:> nslookup-type=server txt.zona.tst 51.51.51.51
    Server: Sconosciuto
    Indirizzo: 51.51.51.51

    server.zona.testo tst =

    “DC002”

  6. Verificare che la sessione BGP sia disattivata su DC001 utilizzando Get-BgpStatistics sul server gateway.

  7. Abilitare nuovamente l’adattatore Ethernet su DC001 e verificare che la sessione BGP sia ripristinata e che i client ricevano nuovamente le risposte DNS da DC001.

Nota

Se non viene utilizzato un sistema di bilanciamento del carico, un singolo client utilizzerà lo stesso server DNS back-end se disponibile. Questo crea un percorso BGP coerente per il client. Per ulteriori informazioni, vedere paragrafo 4.4.3 di RFC4786: Percorsi a costo uguale.

Domande frequenti

D: Anycast DNS è una buona soluzione da utilizzare in un ambiente DNS locale?
R: Anycast DNS funziona perfettamente con un servizio DNS locale. Tuttavia, Anycast non è necessario per il servizio DNS per scalare.

D: Qual è l’impatto dell’implementazione di Anycast DNS in un ambiente con un numero elevato (es: >50) di controller di dominio?
A: Non vi è alcun impatto diretto sulla funzionalità. Se viene utilizzato un sistema di bilanciamento del carico, non è richiesta alcuna configurazione aggiuntiva sui controller di dominio.

Q: Una configurazione DNS Anycast è supportata dal servizio clienti Microsoft?
A: Se si utilizza un sistema di bilanciamento del carico non Microsoft per inoltrare le query DNS, Microsoft supporterà i problemi relativi al servizio Server DNS. Consultare il fornitore di load balancer per problemi relativi all’inoltro DNS.

D: Qual è la migliore pratica per Anycast DNS con un numero elevato (es: >50) di controller di dominio?
A: La migliore pratica consiste nell’utilizzare un sistema di bilanciamento del carico in ogni posizione geografica. I bilanciatori di carico sono in genere forniti da un fornitore esterno.

Q: Anycast DNS e Azure DNS hanno funzionalità simili?
A: Azure DNS utilizza Anycast. Per utilizzare Anycast con Azure DNS, configurare il sistema di bilanciamento del carico per inoltrare le richieste al server DNS di Azure.