Anycast DNS przegląd

  • 10/23/2020
  • 7 protokół do czytania
    • g
    • e

dotyczy: Windows Server (kanał półroczny), Windows Server 2016, Windows Server 2019

ten temat zawiera informacje o tym, jak działa Anycast DNS.

co to jest Anycast?

Anycast to technologia, która zapewnia wiele ścieżek routingu do grupy punktów końcowych, z których każdy ma przypisany ten sam adres IP. Każde urządzenie w grupie reklamuje ten sam adres w sieci, a protokoły routingu służą do wyboru najlepszego miejsca docelowego.

Anycast umożliwia skalowanie usługi bezstanowej, takiej jak DNS lub HTTP, poprzez umieszczenie kilku węzłów za tym samym adresem IP i użycie routingu wielościeżkowego (ECMP) o równych kosztach w celu kierowania ruchem między tymi węzłami. Anycast różni się od unicast, w którym każdy punkt końcowy ma swój własny, oddzielny adres IP.

dlaczego warto używać Anycast z DNS?

dzięki Anycast DNS możesz włączyć serwer DNS lub grupę serwerów, aby odpowiadać na zapytania DNS w oparciu o lokalizację geograficzną klienta DNS. Może to wydłużyć czas reakcji DNS i uprościć ustawienia klienta DNS. Anycast DNS zapewnia również dodatkową warstwę nadmiarowości i może pomóc w ochronie przed atakami typu denial of service DNS.

jak działa Anycast DNS

Anycast DNS działa przy użyciu protokołów routingu, takich jak Border Gateway Protocol (BGP), aby wysyłać zapytania DNS do preferowanego serwera DNS lub grupy serwerów DNS (na przykład: Grupa serwerów DNS zarządzanych przez load balancer). Może to zoptymalizować komunikację DNS, uzyskując odpowiedzi DNS z serwera DNS, który jest najbliżej klienta.

w przypadku Anycast serwery znajdujące się w wielu lokalizacjach geograficznych reklamują jeden, identyczny adres IP, jak w lokalnej bramie (routerze). Gdy klient DNS inicjuje zapytanie na adres Anycast, dostępne trasy są analizowane, a zapytanie DNS jest wysyłane do preferowanej lokalizacji. Ogólnie rzecz biorąc, jest to najbliższa lokalizacja oparta na topologii sieci. Zobacz poniższy przykład.

cztery serwery DNS, znajdujące się w różnych lokalizacjach, ogłaszają ten sam adres IP Anycast do sieci

Rysunek 1: Cztery serwery DNS znajdujące się w różnych lokalizacjach w sieci, z których każdy podaje ten sam adres IP Anycast (czarne strzałki) do sieci. Urządzenie klienckie DNS wysyła żądanie na adres IP Anycast. Urządzenia sieciowe analizują dostępne trasy i wysyłają zapytanie DNS Klienta do najbliższej lokalizacji (niebieska strzałka).

Anycast DNS jest obecnie powszechnie używany do kierowania ruchu DNS dla wielu globalnych usług DNS. Na przykład główny system serwera DNS w dużym stopniu zależy od Anycast DNS. Anycast działa również z różnymi protokołami routingu i może być używany wyłącznie w intranetach.

natywny BGP Dla Windows Server Anycast demo

poniższa procedura pokazuje, jak natywny BGP Dla Windows Server może być używany z DNS Anycast.

wymagania

  • jedno fizyczne urządzenie z zainstalowaną rolą Hyper-V.
    • Windows Server 2012 R2, Windows 10 lub nowszy.
  • 2 maszyny wirtualne klienta (dowolny system operacyjny).
    • zalecana jest instalacja narzędzi BIND dla DNS, takich jak dig.
  • 3 maszyny wirtualne serwera (Windows Server 2016 lub Windows Server 2019).
    • jeśli moduł Windows PowerShell LoopbackAdapter nie jest jeszcze zainstalowany na serwerowych maszynach wirtualnych (DC001, DC002), dostęp do Internetu jest tymczasowo wymagany do zainstalowania tego modułu.

Konfiguracja Hyper-V

Skonfiguruj serwer Hyper – V w następujący sposób:

  • 2 prywatne wirtualne sieci przełączników są skonfigurowane
    • a mock Internet network 131.253.1.0 / 24
    • a mock intranet network 10.10.10.0/24
  • 2 maszyny wirtualne klienckie są dołączone do sieci 131.253.1.0/24
  • 2 maszyny wirtualne serwerowe są dołączone do sieci 10.10.10.0/24
  • 1 serwer jest podłączony do obu sieci 131.253.1.0/24 i 10.10.10.0/24.

konfiguracja sieci maszyn wirtualnych

skonfiguruj ustawienia sieci na maszynach wirtualnych za pomocą następujących ustawień:

  1. KLIENT1, klient2
  • KLIENT1: 131.253.1.1
  • Klient2: 131.253.1.2
  • maska podsieci: 255.255.255.0
  • DNS: 51.51.51.51
  • : 131.253.1.254
  1. Gateway (Windows Server)
  • NIC1: 131.253.1.254, podsieć 255.255.255.0
  • NIC2: 10.10.10.254, podsieć 255.255.255.0
  • DNS: 51.51.51.51
  • Gateway: 131.253.1.100 (można zignorować demo)
  1. DC001 (Windows Server)
  • NIC1: 10.10.10.1
  • podsieć: 255.255.255.0
  • DNS: 10.10.10.1
  • Gateway: 10.10.10.254
  1. DC002 (Windows Server)
  • NIC1: 10.10.10.2
  • podsieć 255.255.255.0
  • DNS: 10.10.10.2*
  • bramka: 10.10.10.254

*użyj 10.10.10.1 dla DNS początkowo podczas łączenia domen dla DC002, aby zlokalizować domenę Active Directory na DC001.

Konfiguracja DNS

Użyj Menedżera serwera i konsoli zarządzania DNS lub Windows PowerShell, aby zainstalować następujące role serwera i utworzyć statyczną strefę DNS na każdym z dwóch serwerów.

  1. DC001, DC002
  • zainstaluj usługi domeny Active Directory i promuj do kontrolera domeny (opcjonalnie)
  • zainstaluj rolę DNS (wymagane)
  • Utwórz strefę statyczną (bez zintegrowanej reklamy) o nazwie Strefa.TST na dc001 i dc002
    • Dodaj pojedynczy serwer nazw rekordów statycznych w strefie typu ” TXT ”
    • dane (tekst) dla rekordu TXT na dc001 = DC001
    • dane (tekst) dla rekordu TXT na DC002 = DC002

Skonfiguruj karty pętli zwrotnej

wprowadź następujące polecenia w podwyższonym wierszu polecenia Windows PowerShell w DC001 i DC002, aby skonfigurować karty pętli zwrotnej.

Uwaga

polecenie Install-Module wymaga dostępu do Internetu. Można to zrobić, tymczasowo przypisując maszynę wirtualną do sieci zewnętrznej w 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

konfiguracja routingu maszyn wirtualnych

użyj następujących poleceń Windows PowerShell na maszynach wirtualnych, aby skonfigurować routing.

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

schemat podsumowujący

 Lab setup for native BGP Anycast DNS demo

Rysunek 2: Lab setup for native BGP Anycast DNS demo

Anycast DNS demonstration

  1. Sprawdź routing BGP na serwerze gateway

    PS C:> Get-Bgprouteinformacje

    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. na kliencie1 i kliencie2 sprawdź, czy możesz osiągnąć 51.51.51.51

    PS C:> ping 51.51.51.51

    pingowanie 51.51.51.51 z 32 bajtami danych:
    odpowiedź z 51.51.51.51: bajty=32 Czas<1ms TTL=126
    odpowiedź z 51.51.51.51: bajtów=32 czas<1ms TTL=126
    odpowiedź z 51.51.51.51: bajty=32 Czas<1ms TTL=126
    odpowiedź z 51.51.51.51: bajty=32 Czas<1ms TTL=126

    statystyki Ping dla 51.51.51.51:
    pakiety: wysłane = 4, otrzymane = 4, utracone = 0 (0% straty),
    przybliżone czasy podróży w obie strony w mili-sekundy:
    minimum = 0ms, maksimum = 0ms, średnia = 0ms

    Uwaga

    jeśli ping się nie powiedzie, sprawdź również, czy nie ma reguł firewalla blokujących ICMP.

  3. w przypadku client1 i client2 użyj nslookup lub dig do odpytywania rekordu TXT. Przykłady obu przedstawiono poniżej.

    PS C:> serwer dig.Strefa.TST TXT +short
    PS C:> nslookup-type=txt server.Strefa.TST 51.51.51.51

    jeden klient wyświetli „DC001”, a drugi klient wyświetli „dc002”, sprawdzając, czy Anycast działa poprawnie. Możesz również odpytywać z serwera gateway.

  4. następnie wyłącz adapter Ethernet na DC001.

    PS C:> (Get-NetAdapter).Name
    Loopback
    Ethernet 2
    PS C:> Disable-NetAdapter „Ethernet 2”
    Confirm
    czy na pewno chcesz wykonać tę akcję?
    Wyłącz-NetAdapter 'Ethernet 2′
    tak tak dla wszystkich Nie Nie dla wszystkich Wstrzymaj pomoc (domyślnie jest to „Y”):
    PS C:> (Get-NetAdapter).Status
    do góry
    wyłączony

  5. potwierdź, że klienci DNS, którzy wcześniej otrzymywali odpowiedzi od DC001, przeszli na DC002.

    PS C:> nslookup-type=txt server.Strefa.tst 51.51.51.51
    Serwer: nieznany
    adres: 51.51.51.51

    serwer.Strefa.TST text =

    „DC001”
    PS C:> nslookup-type=txt server.Strefa.tst 51.51.51.51
    Serwer: nieznany
    adres: 51.51.51.51

    serwer.Strefa.TST text =

    „DC002”

  6. potwierdź, że sesja BGP jest wyłączona na DC001, używając Get-BgpStatistics na serwerze gateway.

  7. włącz ponownie kartę Ethernet na DC001 i potwierdź, że sesja BGP została przywrócona, a klienci ponownie otrzymują odpowiedzi DNS od DC001.

Uwaga

jeśli load balancer nie jest używany, indywidualny klient użyje tego samego serwera DNS back-end, jeśli jest dostępny. Tworzy to spójną ścieżkę BGP dla klienta. Więcej informacji, patrz punkt 4. 4.3 z RFC4786: ścieżki równych kosztów.

Często zadawane pytania

P: Czy Anycast DNS jest dobrym rozwiązaniem do użycia w lokalnym środowisku DNS?
A: Anycast DNS działa bezproblemowo z lokalną usługą DNS. Jednak Anycast nie jest wymagany do skalowania usługi DNS.

P: Jaki jest wpływ implementacji Anycast DNS w środowisku z dużą liczbą (np. >50) kontrolerów domeny?
A :nie ma bezpośredniego wpływu na funkcjonalność. Jeśli używany jest load balancer, nie jest wymagana dodatkowa konfiguracja kontrolerów domeny.

Q: Czy konfiguracja DNS Anycast jest obsługiwana przez dział obsługi klienta firmy Microsoft?
A: jeśli do przekazywania zapytań DNS używasz programu load balancer innego niż Microsoft, firma Microsoft będzie obsługiwać problemy związane z usługą serwera DNS. Skontaktuj się z dostawcą Load balancer w sprawie problemów związanych z przekierowaniem DNS.

P: Jaka jest najlepsza praktyka dla Anycast DNS z dużą liczbą (np. >50) kontrolerów domeny?
A: najlepszą praktyką jest używanie Load balancera w każdej lokalizacji geograficznej. Systemy równoważenia obciążenia są zazwyczaj dostarczane przez zewnętrznego dostawcę.

Q: Czy Anycast DNS i Azure DNS mają podobną funkcjonalność?
A: Azure DNS używa Anycast. Aby korzystać z Anycast z usługą Azure DNS, skonfiguruj load balancer, aby przesyłać żądania do serwera Azure DNS.