Compartilhar via


Visão geral do DNS do Anycast

Este tópico fornece informações sobre como funciona o DNS do Anycast.

O que é Anycast?

Anycast é uma tecnologia que fornece vários caminhos de roteamento para um grupo de pontos de extremidade aos quais foram atribuídos o mesmo endereço IP. Cada dispositivo no grupo anuncia o mesmo endereço em uma rede, e os protocolos de roteamento são usados para escolher qual é o melhor destino.

O Anycast permite dimensionar um serviço sem monitoração de estado, como o DNS ou HTTP, colocando vários nós atrás do mesmo endereço IP e usando o roteamento de ECMP (caminho múltiplo de custo igual) para direcionar o tráfego entre esses nós. O Anycast é diferente do unicast, no qual cada ponto de extremidade tem o próprio endereço IP separado.

Por que usar o Anycast com o DNS?

Com o DNS do Anycast, você pode habilitar um servidor DNS ou um grupo de servidores para responder a consultas DNS com base na localização geográfica de um cliente DNS. Isso pode aprimorar o tempo de resposta DNS e simplificar as configurações do cliente DNS. O DNS do Anycast também fornece uma camada extra de redundância e pode ajudar a proteger contra ataques de serviço negação do DNS.

Como funciona o DNS do Anycast

O DNS do Anycast funciona usando protocolos de roteamento, como BGP (Border Gateway Protocol) para enviar consultas DNS para um servidor DNS preferencial ou um grupo de servidores DNS (por exemplo: um grupo de servidores DNS gerenciados por um balanceador de carga). Este design pode otimizar as comunicações DNS obtendo respostas DNS de um servidor DNS mais próximo de um cliente.

Com o Anycast, os servidores que existem em várias localizações geográficas anunciam um único endereço IP idêntico ao gateway local (roteador). Quando um cliente DNS inicia uma consulta para o endereço do Anycast, as rotas disponíveis são avaliadas e a consulta DNS é enviada para o local preferencial. Em geral, esse local é o mais próximo com base na topologia de rede. Veja o exemplo a seguir.

Quatro servidores DNS, localizados em sites diferentes, anunciam o mesmo endereço IP do Anycast para a rede

Figura 1: exemplo de rede Anycast

  • Quatro servidores DNS (círculos azuis), localizados em sites diferentes em uma rede, anunciam cada um o mesmo endereço IP Anycast para seu dispositivo de roteamento local (não mostrado).
  • As rotas são compartilhadas entre os dispositivos na rede (setas pretas).
  • Um dispositivo cliente DNS (círculo verde) envia uma consulta DNS para o endereço IP do Anycast.
  • A solicitação DNS do cliente é recebida por um dispositivo de roteamento na rede (não mostrado).
  • O dispositivo de roteamento analisa as rotas disponíveis para o endereço IP anycast e encaminha a consulta DNS usando a rota mais curta disponível.
  • A consulta DNS é enviada para o servidor DNS mais próximo (seta azul).

O DNS do Anycast é usado normalmente hoje em dia para rotear o tráfego DNS para muitos serviços DNS globais. Por exemplo, o sistema de servidor DNS raiz depende intensamente do DNS do Anycast. O Anycast também funciona com muitos protocolos de roteamento diferentes e pode ser usado exclusivamente em intranets.

Demonstração do BGP do Anycast nativo do Windows Server

O procedimento a seguir demonstra como o BGP nativo no Windows Server pode ser usado com o DNS do Anycast.

Requisitos

  • Um dispositivo físico com a função Hyper-V instalada.
    • Windows Server 2012 R2, Windows 10 ou posterior.
  • Duas VMs cliente (qualquer sistema operacional).
    • A instalação de ferramentas BIND para DNS, como dig, é recomendada.
  • Três VMs de servidor (Windows Server 2016 ou Windows Server 2019).
    • Se o módulo LoopbackAdapter do Windows PowerShell ainda não estiver instalado em VMs de servidor (DC001, DC002), será temporariamente necessário que o acesso à Internet instale este módulo.

Configuração do Hyper-V

Configure o servidor Hyper-V da seguinte maneira:

  • Duas redes de comutador virtual privado são configuradas
    • Uma rede fictícia da Internet 131.253.1.0/24
    • Uma rede fictícia da intranet 10.10.10.0/24
  • Duas VMs cliente são anexadas à rede 131.253.1.0/24
  • Duas VMs de servidor são anexadas à rede 10.10.10.0/24
  • Um servidor é duplamente hospedado e anexado às duas redes 131.253.1.0/24 e 10.10.10.0/24.

Configuração de rede de máquina virtual

Defina as configurações de rede em máquinas virtuais com as seguintes configurações:

  1. Client1, client2
  • Client1: 131.253.1.1
  • Client2: 131.253.1.2
  • Máscara de sub-rede: 255.255.255.0
  • DNS: 51.51.51.51
  • Gateway: 131.253.1.254
  1. Gateway (Windows Server)
  • NIC1: 131.253.1.254, sub-rede 255.255.255.0
  • NIC2: 10.10.10.254, sub-rede 255.255.255.0
  • DNS: 51.51.51.51
  • Gateway: 131.253.1.100 (pode ser ignorado para a demonstração)
  1. DC001 (Windows Server)
  • NIC1: 10.10.10.1
  • Sub-rede: 255.255.255.0
  • DNS: 10.10.10.1
  • Gateway: 10.10.10.254
  1. DC002 (Windows Server)
  • NIC1: 10.10.10.2
  • Sub-rede: 255.255.255.0
  • DNS: 10.10.10.2*
  • Gateway: 10.10.10.254

*Usar a 10.10.10.1 no DNS inicialmente ao executar o ingresso no domínio do DC002 para que você possa localizar o domínio do Active Directory no DC001.

Configurar DNS

Usar o Gerenciador do Servidor e o console de gerenciamento de DNS ou o Windows PowerShell para instalar as seguintes funções de servidor e criar uma zona DNS estática em cada um dos dois servidores.

  1. DC001, DC002
  • Instalar Active Directory Domain Services e promover para o controlador de domínio (opcional)
  • Instalar a função DNS (necessário)
  • Criar uma zona estática (não integrada ao AD) chamada zone.tst no DC001 e no DC002
    • Adicionar o servidor de nome de registro estático único na zona do tipo "TXT"
    • Dados (texto) para o registro TXT no DC001 = DC001
    • Dados (texto) para o registro TXT no DC002 = DC002

Configurar adaptadores de loopback

Insira os comandos a seguir em um prompt com privilégios elevados do Windows PowerShell no DC001 e DC002 para configurar adaptadores de loopback.

Observação

O comando Install-Module necessita de acesso à Internet. Isso pode ser feito atribuindo temporariamente a VM a uma rede externa no 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

Configuração de roteamento de máquina virtual

Usar os comandos do Windows PowerShell a seguir em VMs para configurar o roteamento.

  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

Diagrama de resumo

Configuração do laboratório para demonstração DNS do BGP do Anycast nativo

Figura 2: configuração do laboratório para demonstração DNS do BGP do Anycast nativo

Demonstração DNS do Anycast

  1. Verificar o roteamento BGP no servidor de gateway

    PS C:\> Get-BgpRouteInformation

    DestinationNetwork NextHop LearnedFromPeer State LocalPref MED
    ------------------ ------- --------------- ----- --------- ---
    Melhor DC001 51.51.51.0/24 10.10.10.1
    Melhor DC002 51.51.51.0/24 10.10.10.2

  2. Em client1 e client2, verifique se é possível alcançar 51.51.51.51

    PS C:\> ping 51.51.51.51

    Executando ping 51.51.51.51 com 32 bytes de dados:
    Resposta de 51.51.51.51: bytes=32 time<1ms TTL=126
    Resposta de 51.51.51.51: bytes=32 time<1ms TTL=126
    Resposta de 51.51.51.51: bytes=32 time<1ms TTL=126
    Resposta de 51.51.51.51: bytes=32 time<1ms TTL=126

    Estatísticas de ping para 51.51.51.51:
    Pacotes: enviado = 4, recebido = 4, perdido = 0 (0% de perda).
    Tempos aproximados de ida e volta em milissegundos:
    Mínimo = 0 ms, Máximo = 0 ms, Média = 0 ms

    Observação

    Se o ping falhar, verifique também se não há regras de firewall bloqueando o ICMP.

  3. Em client1 e client2, use nslookup ou dig para consultar o registro TXT. Exemplos dos dois são mostrados.

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

    Um cliente exibe "DC001" e o outro cliente exibe "DC002", verificando se o Anycast está funcionando corretamente. Você também pode consultar no servidor de gateway.

  4. Em seguida, desabilite o adaptador Ethernet no DC001.

    PS C:\> (Get-NetAdapter).Name
    Loopback
    Ethernet 2
    PS C:\> Disable-NetAdapter "Ethernet 2"
    Confirmar
    Tem certeza de que deseja executar esta ação?
    Disable-NetAdapter "Ethernet 2"
    [S] Sim  [T] Sim para Todos  [N] Não  [T] Não para Todos  [S] Suspender  [?] Ajuda (o padrão é "S"):
    PS C:\> (Get-NetAdapter).Status
    Para cima
    Desabilitado

  5. Confirme se os clientes DNS que estavam recebendo respostas anteriormente do DC001 mudaram para DC002.

    PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
    Servidor: desconhecido
    Endereço: 51.51.51.51

    server.zone.tst text =

    "DC001"
    PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
    Servidor: desconhecido
    Endereço: 51.51.51.51

    server.zone.tst text =

    "DC002"

  6. Confirme se a sessão BGP está inoperante no DC001 usando Get-BgpStatistics no servidor de gateway.

  7. Habilite o adaptador Ethernet no DC001 novamente e confirme se a sessão BGP está restaurada e os clientes recebendo respostas DNS do DC001 novamente.

Observação

Se um balanceador de carga não for usado, um cliente individual usará o mesmo servidor DNS de back-end se ele estiver disponível. Isso cria um caminho BGP consistente para o cliente. Para obter mais informações, consulte a seção 4.4.3 de RFC4786: Caminhos de custo igual.

Perguntas frequentes

P: o DNS do Anycast é uma solução boa para ser usada em um ambiente DNS local?
R: o DNS do Anycast funciona perfeitamente com um serviço DNS local. No entanto, o Anycast não é necessário para que o serviço DNS seja escalado.

P: qual é o impacto da implementação do DNS do Anycast em um ambiente com um grande número (por exemplo, >50) de controladores de domínio?
R: não há impacto direto na funcionalidade. Se um balanceador de carga for usado, outras configurações não serão necessárias nos controladores de domínio.

P: há suporte para a configuração do DNS do Anycast no serviço de atendimento ao consumidor da Microsoft?
R: se você usar um balanceador de carga que não seja da Microsoft para encaminhar consultas DNS, a Microsoft dá suporte a problemas relacionados ao serviço do servidor DNS. Consulte o fornecedor do balanceador de carga para obter problemas relacionados ao encaminhamento de DNS.

P: qual é a melhor prática para o DNS do Anycast com um número grande (por exemplo, >50) de controladores de domínio?
R: a melhor prática é usar um balanceador de carga em cada localização geográfica. Os balanceadores de carga normalmente são fornecidos por um fornecedor externo.

P: o DNS do Anycast e o DNS do Azure têm funcionalidade semelhante?
R: o DNS do Azure usa o Anycast. Para usar o Anycast com o DNS do Azure, configure o balanceador de carga para encaminhar solicitações para o servidor DNS do Azure.