Condividi tramite


Panoramica di Anycast DNS

In questo argomento vengono fornite informazioni sul funzionamento del DNS Anycast.

Che cos'è Anycast?

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

Anycast consente di ridimensionare un servizio senza stato, ad esempio DNS o HTTP, posizionando più nodi dietro lo stesso indirizzo IP e usando il routing ECMP (Equal-Cost Multi-Path) per indirizzare il traffico tra questi nodi. Anycast è diverso da unicast, in cui ogni endpoint ha un 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. In questo modo è possibile migliorare il tempo di risposta DNS e semplificare le impostazioni del client DNS. Anycast DNS offre anche un ulteriore livello di ridondanza e può contribuire a proteggersi dagli attacchi Denial of Service DNS.

Funzionamento di Anycast DNS

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

Con Anycast, i server presenti in più posizioni geografiche annunciano un singolo indirizzo IP identico al gateway locale (router). Quando un client DNS avvia una query sull'indirizzo Anycast, vengono valutate le route disponibili e la query DNS viene inviata alla posizione preferita. In generale, questo percorso è il più vicino in base alla topologia di rete. Vedi l'esempio seguente.

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

Figura 1: Rete Anycast di esempio

  • Quattro server DNS (cerchi blu), situati in siti diversi in una rete, ognuno annuncia lo stesso indirizzo IP Anycast al dispositivo di routing locale (non visualizzato).
  • Le route vengono condivise tra i dispositivi nella rete (frecce nere).
  • Un dispositivo client DNS (cerchio verde) invia una query DNS all'indirizzo IP Anycast.
  • La richiesta DNS del client viene ricevuta da un dispositivo di routing nella rete (non visualizzato).
  • Il dispositivo di routing analizza le route disponibili all'indirizzo IP Anycast e indirizza la query DNS usando la route più breve disponibile.
  • La query DNS viene inviata al server DNS più vicino (freccia blu).

Anycast DNS viene usato comunemente oggi per instradare il traffico DNS per molti servizi DNS globali. Ad esempio, il sistema del server DNS radice dipende principalmente da Anycast DNS. Anycast funziona anche con molti protocolli di routing diversi e può essere usato esclusivamente nelle Intranet.

Demo BGP nativa di Windows Server

La procedura seguente illustra come usare BGP nativo in Windows Server con Anycast DNS.

Requisiti

  • Un dispositivo fisico con il ruolo Hyper-V installato.
    • Windows Server 2012 R2, Windows 10 o versione successiva.
  • 2 macchine virtuali client (qualsiasi sistema operativo).
    • È consigliabile installare gli strumenti BIND per DNS, ad esempio l'analisi.
  • 3 macchine virtuali server (Windows Server 2016 o Windows Server 2019).
    • Se il modulo LoopbackAdapter di Windows PowerShell non è già installato nelle macchine virtuali server (DC001, DC002), l'accesso a Internet è temporaneamente necessario per installare questo modulo.

Configurazione di Hyper-V

Configurare il server Hyper-V come indicato di seguito:

  • Sono configurate 2 reti di commutatori virtuali privati
    • Una rete Internet fittizia 131.253.1.0/24
    • Una rete Intranet fittizia 10.10.10.0/24
  • 2 macchine virtuali client sono collegate alla rete 131.253.1.0/24
  • 2 macchine virtuali server sono collegate alla rete 10.10.10.0/24
  • 1 server è dual-homed e collegato alle reti 131.253.1.0/24 e 10.10.10.0/24.

Configurazione della rete di macchine virtuali

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

  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 la 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

*Usare inizialmente 10.10.10.1 per DNS quando si esegue l'aggiunta a un dominio per DC002 in modo da poter individuare il dominio di Active Directory in DC001.

Configurare DNS

Usare Server Manager e la console di gestione DNS o Windows PowerShell per installare i ruoli server seguenti e creare una zona DNS statica in ognuno di due server.

  1. DC001, DC002
  • Installare Servizi di dominio Active Directory e alzare di livello il controller di dominio (facoltativo)
  • Installare il ruolo DNS (obbligatorio)
  • Creare una zona statica (non integrata in Active Directory) denominata zone.tst in DC001 e DC002
    • Aggiungere il singolo nome di record statico server nella zona di tipo "TXT"
    • Dati (testo) per il record TXT in DC001 = DC001
    • Dati (testo) per il record TXT in DC002 = DC002

Configurare adattatori loopback

Immettere i comandi seguenti in un prompt di Windows PowerShell con privilegi elevati in DC001 e DC002 per configurare le schede di loopback.

Nota

Il comando install-module richiede l'accesso a Internet. Questa operazione può essere eseguita assegnando temporaneamente la macchina virtuale 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 -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

Configurazione del routing delle macchine virtuali

Usare i comandi di Windows PowerShell seguenti nelle macchine virtuali per configurare il routing.

  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

Diagramma di riepilogo

Configurazione del lab per la demo DNS Anycast BGP nativa

Figura 2: configurazione del lab per la demo DNS Anycast BGP nativa

Dimostrazione dns Anycast

  1. Verificare il routing BGP nel server gateway

    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. In client1 e client2 verificare che sia possibile raggiungere la versione 51.51.51.51.51

    PS C:\> ping 51.51.51.51

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

    Statistiche ping per 51.51.51.51.51:
    Pacchetti: inviati = 4, ricevuti = 4, persi = 0 (0% perdita),
    Round trip approssimativo in millisecondi:
    Minimo = 0 ms, massimo = 0 ms, media = 0 ms

    Nota

    Se il ping non riesce, verificare anche che non siano presenti regole del firewall che bloccano ICMP.

  3. In client1 e client2 usare nslookup o dig per eseguire query sul record TXT. Esempi di entrambi sono visualizzati.

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

    Un client visualizza "DC001" e l'altro client visualizza "DC002", verificando che Anycast funzioni correttamente. È anche possibile eseguire query dal server gateway.

  4. Disabilitare quindi la scheda Ethernet in DC001.

    PS C:\> (Get-NetAdapter).Name
    Loopback
    Ethernet 2
    PS C:\> Disable-NetAdapter "Ethernet 2"
    Confirm
    Eseguire questa azione?
    Disable-NetAdapter 'Ethernet 2'
    [Y] Sì [A] Sì a tutti [N] No [L] No to All [S] Suspend [?] Help (il valore predefinito è "Y"):
    PS C:\> (Get-NetAdapter).Status
    Freccia SU
    Disabled

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

    PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
    Server: UnKnown
    Indirizzo: 51.51.51.51.51

    server.zone.tst text =

    "DC001"
    PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
    Server: UnKnown
    Indirizzo: 51.51.51.51.51

    server.zone.tst text =

    "DC002"

  6. Verificare che la sessione BGP sia inattiva in DC001 usando Get-BgpStatistics nel server gateway.

  7. Abilitare nuovamente la scheda Ethernet in DC001 e verificare che la sessione BGP venga ripristinata e che i client ricevano nuovamente risposte DNS da DC001.

Nota

Se non viene usato un servizio di bilanciamento del carico, un singolo client userà lo stesso server DNS back-end, se disponibile. In questo modo viene creato un percorso BGP coerente per il client. Per altre informazioni, vedere la sezione 4.4.3 di RFC4786: Percorsi di uguale costo.

Domande frequenti

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

D: Qual è l'impatto dell'implementazione del DNS Anycast in un ambiente con un numero elevato (ad esempio, >50) dei controller di dominio?
R: Non c'è alcun impatto diretto sulle funzionalità. Se viene usato un servizio di bilanciamento del carico, non sono necessarie altre configurazioni nei controller di dominio.

D: La configurazione DNS Anycast è supportata dal servizio clienti Microsoft?
R: Se si usa un servizio di bilanciamento del carico non Microsoft per inoltrare le query DNS, Microsoft supporta problemi correlati al servizio server DNS. Per informazioni sui problemi relativi all'inoltro DNS, consultare il fornitore del servizio di bilanciamento del carico.

D: Qual è la procedura consigliata per il DNS Anycast con un numero elevato (ad esempio, >50) di controller di dominio?
R: La procedura consigliata consiste nell'usare un servizio di bilanciamento del carico in ogni posizione geografica. I servizi di bilanciamento del carico vengono in genere forniti da un fornitore esterno.

D: Il DNS Anycast e DNS di Azure hanno funzionalità simili?
R: DNS di Azure usa Anycast. Per usare Anycast con DNS di Azure, configurare il servizio di bilanciamento del carico per inoltrare le richieste al server DNS di Azure.