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.
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:
- 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
- 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)
- DC001 (Windows Server)
- NIC1: 10.10.10.1
- Sub-rede: 255.255.255.0
- DNS: 10.10.10.1
- Gateway: 10.10.10.254
- 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.
- 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.
- 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
- 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
- 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
Figura 2: configuração do laboratório para demonstração DNS do BGP do Anycast nativo
Demonstração DNS do Anycast
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.2Em 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=126Estatí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 msObservação
Se o ping falhar, verifique também se não há regras de firewall bloqueando o ICMP.
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.
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
DesabilitadoConfirme 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.51server.zone.tst text =
"DC001"
PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
Servidor: desconhecido
Endereço: 51.51.51.51server.zone.tst text =
"DC002"
Confirme se a sessão BGP está inoperante no DC001 usando Get-BgpStatistics no servidor de gateway.
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.