Compartir a través de


Información general de DNS de difusión por proximidad

En este tema, se proporciona información sobre cómo funciona DNS de difusión por proximidad.

¿Qué es la difusión por proximidad?

La difusión por proximidad es una tecnología que proporciona varias rutas de enrutamiento a un grupo de puntos de conexión a los que se asigna la misma dirección IP. Cada dispositivo del grupo anuncia la misma dirección en una red, y los protocolos de enrutamiento se usan para elegir cuál es el mejor destino.

La difusión por proximidad permite escalar un servicio sin estado, como DNS o HTTP, colocando varios nodos detrás de la misma dirección IP y usando el enrutamiento multirruta de igual coste (ECMP) para dirigir el tráfico entre estos nodos. La difusión por proximidad es diferente de la unidifusión en que cada punto de conexión tiene su propia dirección IP independiente.

¿Por qué usar la difusión por proximidad con DNS?

Con DNS de difusión por proximidad, puede habilitar un servidor DNS o un grupo de servidores para responder a consultas de DNS basadas en 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. DNS de difusión por proximidad también proporciona una capa adicional de redundancia, y le puede ayudar a protegerse frente a ataques de denegación de servicio de DNS.

Cómo funciona DNS de difusión por proximidad

DNS de difusión por proximidad funciona utilizando protocolos de enrutamiento como el Protocolo de puerta de enlace de borde (BGP) para enviar consultas de DNS a un servidor DNS preferido o a un grupo de servidores DNS (por ejemplo, un grupo de servidores DNS administrados por un equilibrador de carga). Este diseño puede optimizar las comunicaciones DNS obteniendo respuestas DNS de un servidor DNS que esté más cerca de un cliente.

Con la difusión por proximidad, los servidores que existen en varias ubicaciones geográficas anuncian una única dirección IP idéntica a su puerta de enlace local (enrutador). Cuando un cliente DNS inicia una consulta a la dirección de difusión por proximidad, se evalúan las rutas disponibles y la consulta de DNS se envía a la ubicación preferida. En general, esta ubicación es la más cercana en función de la topología de la red. Consulte el ejemplo siguiente.

Cuatro servidores DNS, ubicados en diferentes sitios, anuncian la misma dirección IP de difusión por proximidad a la red

Figura 1: Ejemplo de red de difusión por proximidad

  • Cuatro servidores DNS (círculos azules), ubicados en diferentes sitios de una red, cada uno anuncia la misma dirección IP de difusión por proximidad a su dispositivo de enrutamiento local (no se muestra).
  • Las rutas se comparten entre los dispositivos de la red (flechas negras).
  • Un dispositivo cliente DNS (círculo verde) envía una consulta de DNS a la dirección IP de difusión por proximidad.
  • Un dispositivo de enrutamiento de la red recibe la solicitud DNS del cliente (no se muestra).
  • El dispositivo de enrutamiento analiza las rutas disponibles hacia la dirección IP de difusión por proximidad y enruta la consulta de DNS usando la ruta más corta disponible.
  • La consulta de DNS se envía al servidor DNS más cercano (flecha azul).

El DNS de difusión por proximidad se usa hoy habitualmente 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 DNS de difusión por proximidad. La difusión por proximidad también funciona con una variedad de protocolos de enrutamiento y se puede usar exclusivamente en intranets.

Demostración de difusión por proximidad de BGP nativo de Windows Server

En el procedimiento siguiente, se muestra cómo se puede usar el BGP nativo en Windows Server con DNS de difusión por proximidad.

Requisitos

  • Un dispositivo físico con el rol de 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, por ejemplo, dig.
  • 3 máquinas virtuales de servidor (Windows Server 2016 o Windows Server 2019).
    • Si el módulo Windows PowerShell LoopbackAdapter aún no está instalado en las máquinas virtuales de servidor (DC001, DC002), se requiere temporalmente acceso a Internet para instalar este módulo.

Configuración de Hyper-V

Configure el servidor de Hyper-V de la siguiente manera:

  • 2 redes de conmutador virtual privadas configuradas
    • Una red ficticia de Internet 131.253.1.0/24
    • Una red de intranet ficticia 10.10.10.0/24
  • 2 máquinas virtuales de cliente conectadas a la red 131.253.1.0/24
  • 2 máquinas virtuales de servidor conectadas a la red 10.10.10.0/24
  • 1 servidor de inicio dual y conectado a las redes 131.253.1.0/24 y 10.10.10.0/24.

Configuración de red de máquina virtual

Configure las opciones de red en las máquinas virtuales con las siguientes opciones:

  1. Client1, client2
  • Client1: 131.253.1.1
  • Client2: 131.253.1.2
  • Máscara de subred: 255.255.255.0
  • DNS: 51.51.51.51
  • Puerta de enlace: 131.253.1.254
  1. Puerta de enlace (Windows Server)
  • 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
  • Puerta de enlace: 131.253.1.100 (se puede omitir para la demostración)
  1. DC001 (Windows Server)
  • NIC1: 10.10.10.1
  • Subred: 255.255.255.0
  • DNS: 10.10.10.1
  • Puerta de enlace: 10.10.10.254
  1. DC002 (Windows Server)
  • NIC1: 10.10.10.2
  • Subred: 255.255.255.0
  • DNS: 10.10.10.2*
  • Puerta de enlace: 10.10.10.254

*Use 10.10.10.1 para DNS inicialmente cuando realice una unión a un dominio para DC002, para que pueda localizar el dominio de Active Directory en DC001.

Configurar el 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.

  1. DC001, DC002
  • Instalar Active Directory Domain Services y promover al controlador de dominio (opcional)
  • Instalar el rol DNS (necesario)
  • Crear una zona estática (no integrada en AD) denominada zone.tst en DC001 y DC002
    • Añadir el servidor de nombres de registro estático individual en la zona de tipo "TXT"
    • Datos (texto) para el registro de TXT en DC001 = DC001
    • Datos (texto) para el registro de TXT en DC002 = DC002

Configurar adaptadores de bucle invertido

Escriba los siguientes comandos en un símbolo del sistema de Windows PowerShell con privilegios elevados en DC001 y DC002 para configurar adaptadores de bucle invertido.

Nota

El comando Install-Module requiere acceso a Internet. Se puede ejecutar 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 -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

Configuración de enrutamiento de máquinas virtuales

Use los siguientes comandos de Windows PowerShell en máquinas virtuales para configurar el enrutamiento.

  1. Puerta de enlace
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 resumen

Configuración de laboratorio para la demostración de DNS de difusión por proximidad de BGP nativo

Figura 2: Configuración de laboratorio para la demostración de DNS de difusión por proximidad de BGP nativo

Demostración de DNS de difusión por proximidad

  1. Verificar el enrutamiento de BGP en el servidor de puerta de enlace

    PS C:\> Get-BgpRouteInformation

    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. En client1 y client2, compruebe que puede alcanzar 51.51.51.51.51.

    PS C:\> ping 51.51.51.51

    Haciendo ping a 51.51.51.51 con 32 bytes de datos:
    Respuesta de 51.51.51.51: bytes=32 por <1ms TTL=126
    Respuesta de 51.51.51.51: bytes=32 por <1ms TTL=126
    Respuesta de 51.51.51.51: bytes=32 por <1ms TTL=126
    Respuesta de 51.51.51.51: bytes=32 por <1ms TTL=126

    Estadísticas de ping para 51.51.51.51:
    Paquetes: enviados = 4, recibidos = 4, perdidos = 0 (0% de pérdida),
    Tiempos aproximados de ida y vuelta en milisegundos:
    Mínimo = 0ms, Máximo = 0ms, Media = 0ms

    Nota

    Si se produce un error en el ping, compruebe también que no haya reglas de firewall que bloqueen ICMP.

  3. En client1 y client2, utilice nslookup o dig para consultar el registro TXT. Se muestran ejemplos de ambos.

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

    Uno de los clientes muestra "DC001" y el otro "DC002", lo que verifica que la difusión por proximidad funciona correctamente. También puede realizar una consulta desde el servidor de puerta de enlace.

  4. A continuación, deshabilite el adaptador Ethernet en DC001.

    PS C:\> (Get-NetAdapter).Name
    Bucle invertido
    Ethernet 2
    PS C:\> Disable-NetAdapter "Ethernet 2"
    Confirm
    ¿Está seguro de que desea realizar esta acción?
    Disable-NetAdapter 'Ethernet 2'
    [Y] Sí [A] Sí a todo [N] No [L] No a todo [S] Suspender [?] Ayuda (el valor predeterminado es "Y"):
    PS C:\> (Get-NetAdapter).Status
    Arriba
    Disabled

  5. Confirme que los clientes DNS que anteriormente recibieron respuestas de DC001 han cambiado a DC002.

    PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
    Servidor: Desconocido
    Dirección: 51.51.51.51

    server.zone.tst text =

    "DC001"
    PS C:\> nslookup -type=txt server.zone.tst 51.51.51.51
    Servidor: Desconocido
    Dirección: 51.51.51.51

    server.zone.tst text =

    "DC002"

  6. Confirme que la sesión BGP esté inactiva en DC001 utilizando Get-BgpStatistics en el servidor de puerta de enlace.

  7. Vuelva a habilitar el adaptador Ethernet en DC001, y confirme que la sesión BGP se restaura y que los clientes reciben respuestas DNS de DC001 de nuevo.

Nota

Si no se usa un equilibrador de carga, un cliente individual usará el mismo servidor DNS de back-end si está disponible. Esto crea una ruta de acceso BGP coherente para el cliente. Para obtener más información, consulte la sección 4.4.3 de RFC4786: Rutas de acceso de igual coste.

Preguntas más frecuentes

P: ¿DNS de difusión por proximidad es una buena solución para utilizarla en un entorno DNS local?
R: DNS de difusión por proximidad funciona sin problemas con un servicio DNS local. Sin embargo, la difusión por proximidad no es necesaria para que el servicio DNS se escale.

P: ¿Cuál es el impacto de implementar DNS de difusión por proximidad en un entorno con un gran número de controladores de dominio (por ejemplo: >50)?
R: No hay ningún impacto directo en la funcionalidad. Si se usa un equilibrador de carga, no se requiere ninguna configuración adicional en los controladores de dominio.

P: ¿Es una configuración de DNS de difusión por proximidad compatible con el servicio al cliente de Microsoft?
R: Si usa un equilibrador de carga que no es de Microsoft para reenviar consultas de DNS, Microsoft dará soporte a los problemas relacionados con el servicio del servidor DNS. Consulte al proveedor del equilibrador de carga los problemas relacionados con el reenvío de DNS.

P: ¿Cuál es el procedimiento recomendado para DNS de difusión por proximidad con un gran número de controladores de dominio (por ejemplo: >50)?
R: El procedimiento recomendado es usar un equilibrador de carga en cada ubicación geográfica. Normalmente, los equilibradores de carga los proporciona un proveedor externo.

P: ¿DNS de difusión por proximidad y Azure DNS tienen una funcionalidad similar?
R: Azure DNS usa la difusión por proximidad. Para usar la difusión por proximidad con Azure DNS, configure el equilibrador de carga para reenviar solicitudes al servidor DNS de Azure.