Přehled DNS anycastu

Toto téma obsahuje informace o tom, jak funguje DNS anycast.

Co je Anycast?

Anycast je technologie, která poskytuje více cest směrování ke skupině koncových bodů, které mají přiřazenou stejnou IP adresu. Každé zařízení ve skupině inzeruje stejnou adresu v síti a směrovací protokoly se používají k výběru nejvhodnějšího cíle.

Anycast umožňuje škálovat bezstavovou službu, jako je DNS nebo HTTP, umístěním několika uzlů za stejnou IP adresu a použitím směrování ECMP (Equal-Cost Multi-Path) k řízení provozu mezi těmito uzly. Anykast se liší od jednosměrového vysílání, při kterém má každý koncový bod vlastní, samostatnou IP adresu.

Proč používat Anycast s DNS?

Pomocí dns anycastu můžete povolit server DNS nebo skupinu serverů, aby reagoval na dotazy DNS na základě geografického umístění klienta DNS. To může zlepšit dobu odezvy DNS a zjednodušit nastavení klienta DNS. Dns anycast také poskytuje další vrstvu redundance a může pomoct chránit před útoky na odepření služby DNS.

Jak funguje DNS anycast

Dns anycast funguje pomocí směrovacích protokolů, jako je protokol BGP (Border Gateway Protocol) k odesílání dotazů DNS na upřednostňovaný server DNS nebo skupinu serverů DNS (například skupina serverů DNS spravovaných nástrojem pro vyrovnávání zatížení). Tento návrh může optimalizovat komunikaci DNS získáním odpovědí DNS ze serveru DNS, který je nejblíže klientovi.

V případě anycastu servery, které existují v několika geografických lokalitách, oznamují své místní bráně (směrovači) jednu jedinou, identickou IP adresu. Když klient DNS zahájí dotaz na adresu Anycast, vyhodnotí se dostupné trasy a dotaz DNS se odešle do upřednostňovaného umístění. Obecně platí, že toto umístění je nejblíže na základě topologie sítě. Podívejte se na následující příklad.

Čtyři servery DNS umístěné v různých lokalitách oznámí stejnou IP adresu anycastu do sítě.

Obrázek 1: Příklad sítě anycast

  • Čtyři servery DNS (modré kruhy), které se nacházejí v různých lokalitách v síti, každý oznámí stejnou IP adresu anycastu místnímu směrovacímu zařízení (nezobrazuje se).
  • Trasy se sdílejí mezi zařízeními v síti (černé šipky).
  • Klientské zařízení DNS (zelený kruh) odešle dotaz DNS na IP adresu Anycast.
  • Požadavek DNS klienta přijímá směrovací zařízení v síti (není zobrazeno).
  • Směrovací zařízení analyzuje dostupné trasy na IP adresu Anycast a směruje dotaz DNS pomocí nejkratší dostupné trasy.
  • Dotaz DNS se odešle na nejbližší server DNS (modrá šipka).

Dns anycast se běžně používá ke směrování provozu DNS pro mnoho globálních služeb DNS. Například systém kořenového serveru DNS závisí silně na DNS anycastu. Anycast také funguje s mnoha různými směrovacími protokoly a dá se používat výhradně v intranetech.

Ukázka nativního protokolu BGP Windows Serveru Anycast

Následující postup ukazuje, jak lze nativní protokol BGP na Windows Serveru použít s DNS anycast.

Requirements

  • Jedno fyzické zařízení s nainstalovanou rolí Hyper-V.
    • Windows Server 2012 R2, Windows 10 nebo novější
  • 2 klientské virtuální počítače (jakýkoli operační systém).
    • Doporučuje se instalace nástrojů BIND pro DNS, jako je dig.
  • 3 serverové virtuální počítače (Windows Server 2016 nebo Windows Server 2019).
    • Pokud ještě není na serverových virtuálních počítačích (DC001, DC002) nainstalovaný modul LoopbackAdapter windows PowerShellu, je k instalaci tohoto modulu dočasně nutný přístup k internetu.

nastavení Hyper-V

Nakonfigurujte server Hyper-V následujícím způsobem:

  • Konfigurace 2 privátních sítí virtuálních přepínačů
    • Simulovaná Internetová síť 131.253.1.0/24
    • Napodobená intranetová síť 10.10.10.0/24
  • 2 klientské virtuální počítače jsou připojené k síti 131.253.1.0/24.
  • 2 serverové virtuální počítače jsou připojené k síti 10.10.10.0/24.
  • 1 server je duální a připojený k sítím 131.253.1.0/24 a 10.10.10.0/24.

Konfigurace sítě virtuálních počítačů

Nakonfigurujte nastavení sítě na virtuálních počítačích s následujícími nastaveními:

  1. Client1, client2
  • Klient 1: 131.253.1.1
  • Klient 2: 131.253.1.2
  • Maska podsítě: 255.255.255.0
  • DNS: 51.51.51.51
  • Brána: 131.253.1.254
  1. Brána (Windows Server)
  • NIC1: 131.253.1.254, podsíť 255.255.255.0
  • NIC2: 10.10.10.254, podsíť 255.255.255.0
  • DNS: 51.51.51.51
  • Brána: 131.253.1.100 (pro ukázku je možné ji ignorovat)
  1. DC001 (Windows Server)
  • NIC1: 10.10.10.1
  • Podsíť: 255.255.255.0
  • DNS: 10.10.10.1
  • Brána: 10.10.10.254
  1. DC002 (Windows Server)
  • NIC1: 10.10.10.2
  • Podsíť 255.255.255.0
  • DNS: 10.10.10.2*
  • Brána: 10.10.10.254

*Při počátečním provádění připojení k doméně pro DC002 použijte pro DNS 10.10.10.1, abyste mohli najít doménu Active Directory na řadiči domény DC001.

Konfigurace DNS

Pomocí Správce serveru a konzoly pro správu DNS nebo Windows PowerShellu nainstalujte následující role serveru a vytvořte na každém ze dvou serverů statickou zónu DNS.

  1. DC001, DC002
  • Instalace služby Active Directory Domain Services a povýšení na řadič domény (volitelné)
  • Nainstalujte roli DNS (povinné)
  • Vytvoření statické zóny (neintegrovanou službou AD) s názvem zone.tst v DC001 i DC002
    • Přidejte jeden statický názvový server záznamu do zóny typu TXT.
    • Data (text) záznamu TXT na DC001 = DC001
    • Data (text) záznamu TXT na DC002 = DC002

Konfigurace adaptérů zpětné smyčky

Zadejte následující příkazy v prostředí Windows PowerShell se zvýšenými oprávněními na DC001 a DC002 pro konfiguraci adaptérů pro zpětnou smyčku.

Note

Příkaz Install-Module vyžaduje přístup k internetu. Můžete to provést tak, že dočasně přiřadíte virtuální počítač k externí síti v 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

Konfigurace směrování virtuálních počítačů

Ke konfiguraci směrování použijte následující příkazy Windows PowerShellu na virtuálních počítačích.

  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

Souhrnný diagram

Nastavení testovacího prostředí pro nativní ukázku DNS anycast protokolu BGP

Obrázek 2: Nastavení testovacího prostředí pro nativní ukázku DNS anycast protokolu BGP

Ukázka Anycast DNS

  1. Ověření směrování protokolu BGP na serveru brány

    PS C:\> Get-BgpRouteInformation

    DestinationNetwork NextHop LearnedFromPeer State LocalPref MED
    ------------------ ------- --------------- ----- --------- ---
    51.51.51.0/24 10.10.10.1 DC001 Nejlepší
    51.51.51.0/24 10.10.10.2 DC002 Nejlepší

  2. Na klientovi 1 a klientovi 2 ověřte, zda se můžete spojit s 51.51.51.51.

    PS C:\> ping 51.51.51.51

    Pinging 51.51.51.51 s 32 bajty dat:
    Odpověď od 51.51.51.51: bajty=32 čas<1ms TTL=126
    Odpověď od 51.51.51.51: bajty=32 čas<1ms TTL=126
    Odpověď od 51.51.51.51: bajty=32 čas<1ms TTL=126
    Odpověď od 51.51.51.51: bajty=32 čas<1ms TTL=126

    Statistika ping pro 51.51.51.51:
    Pakety: Sent = 4, Received = 4, Lost = 0 (0% ztráta),
    Přibližné doby obousměrné komunikace v milisekundách:
    Minimum = 0 ms, Maximum = 0 ms, Průměr = 0 ms

    Note

    Pokud příkaz ping selže, zkontrolujte také, že protokol ICMP neblokují žádná pravidla brány firewall.

  3. V klientovi 1 a klientovi 2 použijte příkaz nslookup nebo dig k dotazování záznamu TXT. Zobrazí se příklady obou.

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

    Jeden klient zobrazí dc001 a druhý klient zobrazí DC002 a ověří, že anycast funguje správně. Můžete se také dotazovat ze serveru brány.

  4. Dále zakažte ethernetový adaptér na DC001.

    PS C:\> (Get-NetAdapter).Name
    Loopback
    Ethernet 2
    PS C:\> Disable-NetAdapter "Ethernet 2"
    Confirm
    Opravdu chcete provést tuto akci?
    Disable-NetAdapter Ethernet 2
    [Y] Ano [A] Ano všem [N] Ne [L] Ne všem [S] Pozastavit [?] Nápověda (výchozí hodnota je Y):
    PS C:\> (Get-NetAdapter).Status
    Up
    Disabled

  5. Ověřte, že klienti DNS, kteří dříve dostávali odpovědi z DC001, přešli na DC002.

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

    server.zone.tst text =

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

    server.zone.tst text =

    "DC002"

  6. Pomocí Get-BgpStatistics na serveru brány ověřte, že relace protokolu BGP nefunguje na řadiči domény DC001.

  7. Znovu povolte adaptér Ethernet na řadiči DC001 a ověřte, že se obnovila relace protokolu BGP, a klienti znovu obdrží odpovědi DNS z řadiče DC001.

Note

Pokud se nástroj pro vyrovnávání zatížení nepoužívá, použije jednotlivý klient stejný back-endový server DNS, pokud je k dispozici. Tím se pro klienta vytvoří konzistentní cesta protokolu BGP. Další informace najdete v části 4.4.3 RFC4786: Equal-Cost Cesty.

Nejčastější dotazy

Otázka: Je dns anycast vhodným řešením pro použití v místním prostředí DNS?
A: Dns anycast bez problémů funguje s místní službou DNS. Pro škálování služby DNS se ale nevyžaduje anycast.

Otázka: Jaký je dopad implementace DNS anycastu v prostředí s velkým počtem (např. >50) řadičů domény?
A: Nemá žádný přímý dopad na funkčnost. Pokud se použije nástroj pro vyrovnávání zatížení, nevyžaduje se žádná další konfigurace na řadičích domény.

Otázka: Podporuje zákaznická služba Microsoftu konfiguraci DNS anycastu?
A: Pokud k předávání dotazů DNS používáte nástroj pro vyrovnávání zatížení jiného než Microsoftu, podporuje Microsoft problémy související se službou DNS Server. V případě problémů souvisejících s předáváním DNS se obraťte na dodavatele nástroje pro vyrovnávání zatížení.

Otázka: Jaký je osvědčený postup pro DNS anycast s velkým počtem (např. >50) řadičů domény?
A: Osvědčeným postupem je použít nástroj pro vyrovnávání zatížení v každém zeměpisném umístění. Nástroje pro vyrovnávání zatížení obvykle poskytují externí dodavatel.

Otázka: Mají dns anycast a Azure DNS podobné funkce?
A: Azure DNS používá Anycast. Pokud chcete použít Anycast s Azure DNS, nakonfigurujte nástroj pro vyrovnávání zatížení tak, aby předával požadavky na server Azure DNS.