Descripción general de DNS de Anycast
- 10/23/2020
- 7 minutos de lectura
-
- g
- e
Válido para: Windows Server (Canal semestral), Windows Server 2016, Windows Server 2019
Este tema proporciona información sobre cómo funciona Anycast DNS.
¿Qué es Anycast?
Anycast es una tecnología que proporciona múltiples rutas de enrutamiento a un grupo de puntos finales a los que se les asigna la misma dirección IP. Cada dispositivo del grupo anuncia la misma dirección en una red, y se utilizan protocolos de enrutamiento para elegir cuál es el mejor destino.
Anycast le permite escalar un servicio sin estado, como DNS o HTTP, colocando varios nodos detrás de la misma dirección IP y utilizando enrutamiento de múltiples rutas de igual costo (ECMP) para dirigir el tráfico entre estos nodos. Anycast es diferente de unicast, en el que cada extremo tiene su propia dirección IP separada.
¿Por qué usar Anycast con DNS?
Con Anycast DNS, puede habilitar un servidor DNS, o un grupo de servidores, para responder a consultas de DNS en función de la ubicación geográfica de un cliente DNS. Esto puede mejorar el tiempo de respuesta de DNS y simplificar la configuración del cliente DNS. Anycast DNS también proporciona una capa adicional de redundancia y puede ayudar a proteger contra ataques de denegación de servicio de DNS.
Cómo funciona Anycast DNS
Anycast DNS funciona mediante el uso de protocolos de enrutamiento como el Protocolo de puerta de enlace de Frontera (BGP) para enviar consultas DNS a un servidor DNS preferido o grupo de servidores DNS (por ejemplo: un grupo de servidores DNS administrados por un equilibrador de carga). Esto puede optimizar las comunicaciones DNS al obtener respuestas DNS de un servidor DNS que esté más cerca de un cliente.
Con Anycast, los servidores que existen en múltiples ubicaciones geográficas anuncian una sola dirección IP idéntica a su puerta de enlace local (enrutador). Cuando un cliente DNS inicia una consulta a la dirección Anycast, se evalúan las rutas disponibles y la consulta DNS se envía a la ubicación preferida. En general, esta es la ubicación más cercana según la topología de red. Vea el siguiente ejemplo.
Figura 1: Cuatro servidores DNS ubicados en sitios diferentes en una red anuncian la misma dirección IP de Anycast (flechas negras) a la red. Un dispositivo cliente DNS envía una solicitud a la dirección IP Anycast. Los dispositivos de red analizan las rutas disponibles y envían la consulta DNS del cliente a la ubicación más cercana (flecha azul).
Anycast DNS se usa comúnmente hoy en día para enrutar el tráfico DNS para muchos servicios DNS globales. Por ejemplo, el sistema de servidor DNS raíz depende en gran medida de Anycast DNS. Anycast también funciona con una variedad de protocolos de enrutamiento y se puede usar exclusivamente en intranets.
Demostración de Anycast de BGP nativo de Windows Server
El siguiente procedimiento muestra cómo se puede usar BGP nativo en Windows Server con DNS de Anycast.
Requisitos
- Un dispositivo físico con el rol Hyper-V instalado.
- Windows Server 2012 R2, Windows 10 o posterior.
- 2 máquinas virtuales cliente (cualquier sistema operativo).
- Se recomienda la instalación de herramientas BIND para DNS, como dig.
- 3 máquinas virtuales de servidor (Windows Server 2016 o Windows Server 2019).
- Si el módulo LoopbackAdapter de Windows PowerShell aún no está instalado en máquinas virtuales de servidor (DC001, DC002), se requiere acceso a Internet temporalmente para instalar este módulo.
Configuración de Hyper-V
Configure su servidor Hyper-V de la siguiente manera:
- 2 las redes de conmutadores virtuales privados se configuran
- Una red de Internet simulada 131.253.1.0 / 24
- Una red de intranet simulada 10.10.10.0/24
- 2 cliente VMs están conectados a la 131.253.1.0/24 red
- 2 máquinas virtuales del servidor están conectados a la 10.10.10.0/24 red
- 1 servidor es dual-homed y conectados a los 131.253.1.0/24 y 10.10.10.0/24 redes.
Configuración de red de máquinas virtuales
Configure la configuración de red en máquinas virtuales con la siguiente configuración:
- Cliente1, cliente2
- Cliente1: 131.253.1.1
- Cliente2: 131.253.1.2
- Máscara de subred: 255.255.255.0
- DNS: 51.51.51.Puerta de enlace 51
- : 131.253.1.254
- Puerta de enlace (Servidor Windows)
- NIC1: 131.253.1.254, subred 255.255.255.0
- NIC2: 10.10.10.254, subred 255.255.255.0
- DNS: 51.51.51.51
- Gateway: 131.253.1.100 (se puede ignorar para la demostración)
- DC001 (Servidor Windows)
- NIC1: 10.10.10.1
- Subred: 255.255.255.0
- DNS: 10.10.10.1
- Gateway: 10.10.10.254
- DC002 (Servidor Windows)
- NIC1: 10.10.10.2
- Subred 255.255.255.0
- DNS: 10.10.10.2 *
- Gateway: 10.10.10.254
*Utilice 10.10.10.1 para DNS inicialmente al realizar una unión de dominio para DC002, de modo que pueda localizar el dominio de Active Directory en DC001.
Configurar DNS
Use el Administrador del servidor y la consola de administración de DNS o Windows PowerShell para instalar los siguientes roles de servidor y crear una zona DNS estática en cada uno de los dos servidores.
- DC001, DC002
- Instalar los servicios de dominio de Active Directory y promover en controlador de dominio (opcional)
- Instalar el rol DNS (obligatorio)
- Crear una zona estática (no integrada con AD) con nombre.tst en DC001 y DC002
- Agregue el servidor de nombres de registro estático único en la zona de tipo » TXT »
- Datos (texto) para el registro TXT en DC001 = DC001
- Datos (texto) para el registro TXT en DC002 = DC002
Configure adaptadores de bucle invertido
Introduzca los siguientes comandos en un símbolo del sistema elevado de Windows PowerShell en DC001 y DC002 para configurar adaptadores de bucle invertido.
Nota
El comando Install-Module requiere acceso a Internet. Esto se puede hacer asignando temporalmente la máquina virtual a una red externa en 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
Configuración de enrutamiento de máquinas virtuales
Utilice los siguientes comandos de Windows PowerShell en las máquinas virtuales para configurar el enrutamiento.
- Puerta de enlace
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
- 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
- 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
Diagrama de resumen
Figura 2: Configuración de laboratorio para demostración de DNS nativo de BGP Anycast
Demostración de DNS de Anycast
-
Verificar el enrutamiento BGP en el servidor de puerta de enlace
PS C:> Get-BgpRouteInformation
DestinationNetwork NextHop LearnedFromPeer Estado LocalPref MED
—————— ——- ————— —– ——— —
51.51.51.0/24 10.10.10.1 DC001 Mejor
51.51.51.0/24 10.10.10.2 DC002 Mejor -
En cliente1 y cliente2, compruebe que puede llegar a 51.51.51.51
PS C:> ping 51.51.51.51
Ping 51.51.51.51 con 32 bytes de datos:
Respuesta desde 51.51.51.51: bytes=32 tiempo<1ms TTL=126
Respuesta desde 51.51.51.51: bytes=32 tiempo<1ms TTL=126
Respuesta desde 51.51.51.51: bytes=32 tiempo<1ms TTL=126
Respuesta de 51.51.51.51: bytes=32 tiempo<1ms TTL=126Estadísticas de Ping para 51.51.51.51:
Paquetes: Enviados = 4, Recibidos = 4, Perdidos = 0 (0% de pérdida),
Tiempos de ida y vuelta aproximados en mili-segundos:
Mínimo = 0ms, Máximo = 0ms, Promedio = 0msNota
Si el ping falla, también verifique que no haya reglas de firewall que bloqueen ICMP.
-
En client1 y client2, utilice nslookup o dig para consultar el registro TXT. A continuación se muestran ejemplos de ambos.
PS C:> servidor de excavación.huso.tst TXT + short
PS C:> nslookup-type=servidor txt.huso.tst 51.51.51.51Un cliente mostrará » DC001 «y el otro cliente mostrará» DC002 » verificando que Anycast funciona correctamente. También puede realizar consultas desde el servidor de puerta de enlace.
-
A continuación, desactive el adaptador Ethernet en DC001.
PS C:>(Get-NetAdapter).Name
Loopback
Ethernet 2
PS C:> Disable-NetAdapter «Ethernet 2»
Confirm
¿Está seguro de que desea realizar esta acción?
Disable-NetAdapter ‘Ethernet 2’
Sí Sí a Todo No No a todo Ayuda de suspensión (el valor predeterminado es «Y»):
PS C:> (Get-NetAdapter).Estado
Arriba
Desactivado -
Confirme que los clientes DNS que anteriormente recibían respuestas de DC001 se han cambiado a DC002.
PS C:> nslookup-type=servidor txt.huso.tst 51.51.51.51
Servidor: Dirección desconocida
: 51.51.51.51servidor.huso.tst text =
«DC001»
PS C:> nslookup-type=servidor txt.huso.tst 51.51.51.51
Servidor: Desconocido
Dirección: 51.51.51.51servidor.huso.tst text =
«DC002»
-
Confirme que la sesión BGP está inactiva en DC001 mediante Get-BgpStatistics en el servidor de puerta de enlace.
-
Habilite de nuevo el adaptador Ethernet en DC001 y confirme que la sesión BGP se ha restaurado y que los clientes vuelven a recibir respuestas DNS de DC001.
Nota
Si no se utiliza un equilibrador de carga, un cliente individual utilizará el mismo servidor DNS de fondo si está disponible. Esto crea una ruta BGP coherente para el cliente. Para más información, ver sección 4.4.3 de RFC4786: Rutas de Igual Costo.
Preguntas frecuentes
P: ¿Es Anycast DNS una buena solución para usar en un entorno DNS local?
A: Anycast DNS funciona a la perfección con un servicio DNS local. Sin embargo, Anycast no es necesario para que el servicio DNS se amplíe.
P: ¿Cuál es el impacto de implementar DNS Anycast en un entorno con un gran número (por ejemplo, >50) de controladores de dominio?
A: No hay un impacto directo en la funcionalidad. Si se utiliza un equilibrador de carga, no se requiere ninguna configuración adicional en los controladores de dominio.
Q: ¿El servicio de atención al cliente de Microsoft admite una configuración de DNS Anycast?
A: Si utiliza un equilibrador de carga que no es de Microsoft para reenviar consultas DNS, Microsoft admitirá problemas relacionados con el servicio servidor DNS. Consulte al proveedor del equilibrador de carga para conocer los problemas relacionados con el reenvío de DNS.
P: ¿Cuál es la mejor práctica para Anycast DNS con un gran número (por ejemplo: >50) de controladores de dominio?
A: La mejor práctica es utilizar un equilibrador de carga en cada ubicación geográfica. Los equilibradores de carga suelen ser proporcionados por un proveedor externo.
Q: ¿Anycast DNS y Azure DNS tienen una funcionalidad similar?
A: Azure DNS utiliza Anycast. Para usar Anycast con Azure DNS, configure el equilibrador de carga para reenviar solicitudes al servidor DNS de Azure.