Excepción para un único FQDN en Windows DNS con Pinpoint Zone (sin romper el forwarder)

¿Necesitas que solo un FQDN (por ejemplo, host1.abc.com) responda con una IP interna sin romper el reenvío de todas las demás consultas *.abc.com hacia tu forwarder en Windows DNS? Aquí tienes la guía definitiva: usa una pinpoint zone para ese nombre, con pasos, verificación y buenas prácticas.

Índice

Escenario y objetivo

Administras un servidor DNS de Windows (en un controlador de dominio o como servidor miembro) configurado con forwarders hacia DNS externos o de un proveedor. Tu meta es anclar una resolución interna solo para host1.abc.com y que todo el resto del dominio abc.com continúe resolviéndose como siempre mediante el reenviador.

La trampa más común es intentar crear una zona abc.com para alojar ese único registro; hacerlo te convierte en autoritativo para todo el dominio y las consultas dejan de ir al forwarder. La solución correcta es una zona de precisión (pinpoint) con nombre idéntico al FQDN objetivo.

Solución recomendada: pinpoint zone para el FQDN

Una pinpoint zone en Windows DNS es una zona cuyo nombre coincide exactamente con el FQDN que deseas controlar (por ejemplo, host1.abc.com). El servidor se vuelve autoritativo solo para ese nombre y no para el dominio completo. Resultado: respondes localmente a host1.abc.com y reenvías el resto de *.abc.com al forwarder.

Pasos con la consola DNS (GUI)

  1. Abre DNS Manager en el servidor.
  2. Navega a Forward Lookup Zones y elige New Zone….
  3. Selecciona Primary zone. Si estás en AD, marca Store the zone in Active Directory y define el alcance de replicación apropiado.
  4. Especifica como Zone name: host1.abc.com (el FQDN exacto).
  5. Finaliza el asistente. Se creará la zona con su SOA/NS.
  6. Dentro de la nueva zona, crea un registro A o AAAA en la raíz (en el cuadro Name déjalo en blanco para que aparezca como “(same as parent folder)”). Asigna la IP deseada.
  7. No crees una zona abc.com en este servidor. Deja tus forwarders como estaban.

Pasos con PowerShell

Ejecuta en el servidor DNS (elevado):

# Crear la pinpoint zone (AD-integrada, sin actualizaciones dinámicas)
Add-DnsServerPrimaryZone `
  -Name "host1.abc.com" `
  -ReplicationScope "Domain" `  # O "Forest" según tu necesidad
  -DynamicUpdate None

Registrar el Apex A (usar "@" para el apex de la zona)

Add-DnsServerResourceRecordA `  -ZoneName "host1.abc.com"`
-Name "@" `  -IPv4Address "10.20.30.40"`
-TimeToLive 01:00:00

(Opcional) Registrar AAAA si aplica

Add-DnsServerResourceRecordAAAA `  -ZoneName "host1.abc.com"`
-Name "@" `  -IPv6Address "2001:db8::10"`
-TimeToLive 01:00:00 

Alternativa clásica con dnscmd:

dnscmd /ZoneAdd host1.abc.com /DsPrimary
dnscmd /RecordAdd host1.abc.com @ A 10.20.30.40

Por qué funciona

Windows DNS aplica la regla de coincidencia más larga de zona en cada consulta. Cuando recibe una pregunta por host1.abc.com:

  • Encuentra una zona host1.abc.com que coincide exactamente con el nombre consultado.
  • Como es autoritativo solo para ese FQDN, responde con el registro A/AAAA del apex.
  • Si la consulta fuera por www.abc.com, no hay zona local correspondiente; entonces se aplican conditional forwarders (si existen) o los forwarders generales y, en su defecto, root hints.

Precedencia de resolución en Windows DNS

SituaciónAcción del servidor DNSEfecto
Existe una zona que coincide exactamente (pinpoint)Responde de forma autoritativaSe usa tu registro A/AAAA local
Existe una zona que coincide por sufijoResuelve dentro de esa zonaAutoridad local para esa parte del nombre
No hay zona local coincidenteAplica conditional forwarders y luego forwardersEl resto de *.abc.com se reenvía
Sin forwarders aplicablesUsa root hintsRecursión por Internet

Verificación y pruebas

Una vez creada la pinpoint zone, limpia caché en servidor y clientes y prueba resoluciones.

Comandos recomendados

:: En clientes
ipconfig /flushdns
nslookup host1.abc.com <IP-del-servidor-DNS>

\:: En el servidor DNS
dnscmd /clearcache
nslookup host1.abc.com 127.0.0.1

\:: Prueba con PowerShell en el servidor o clientes Windows 10/11+
Resolve-DnsName host1.abc.com -Server \ -Type A
Resolve-DnsName [www.abc.com](http://www.abc.com)   -Server \ -Type A 

Resultados esperados:

  • host1.abc.com responde con la IP interna configurada.
  • Cualquier otro nombre bajo abc.com se resuelve vía forwarder, sin intervención local.

Ajustes finos y buenas prácticas

  • TTL: Define un TTL coherente (por ejemplo, 1 hora) si prevés cambios frecuentes. Aprovecha el TTL para controlar el “time-to-switch” en futuras migraciones.
  • Actualizaciones dinámicas: Para una pinpoint zone estática, usa None o Secure only según tu política de seguridad. Lo habitual es None.
  • Ámbito de replicación: Si almacenas en AD, elige Domain o Forest según dónde necesites que la respuesta esté disponible.
  • Registro AAAA: Si tu entorno es dual-stack, crea también un AAAA. Verifica que el forwarder maneja IPv6 si esperas respuestas externas v6 para el resto del dominio.
  • CNAME en apex: No es posible usar CNAME en el apex de la pinpoint zone porque el apex contiene SOA/NS. Emplea A/AAAA.
  • PTR inverso: Si necesitas reverse lookup para la IP interna, crea manualmente el PTR en la zona inversa correspondiente (por ejemplo, 30.20.10.in-addr.arpa).

Errores comunes que debes evitar

  • Crear la zona abc.com localmente “solo para un registro”. Eso desvía todo el dominio al servidor local, rompiendo el reenvío.
  • Olvidar limpiar cachés. Tanto en clientes como en el servidor: ipconfig /flushdns y dnscmd /clearcache evitan falsos negativos durante pruebas.
  • Confundir “delegación” con pinpoint. Delegar solo aplica a subzonas (por ejemplo, eu.abc.com), no a un host individual. Para un host usa pinpoint.
  • Asumir que el wildcard externo afectará a tu pinpoint. Tu pinpoint tiene prioridad para host1.abc.com; los demás nombres irán al wildcard externo vía forwarder si lo hubiera.

Alternativas y cuándo considerarlas

  • Varias excepciones puntuales: Crea una pinpoint zone por cada FQDN (p. ej., m1.abc.com, m2.abc.com). Es simple y predecible.
  • Muchos nombres con lógicas especiales por subred/horario: Valora DNS Policies en Windows Server 2016+. Permiten reglas según cliente, tiempo u otros criterios. Para un único FQDN, la pinpoint zone es más limpia.
  • Archivo hosts: Evítalo salvo emergencias; no escala ni se audita centralmente.
  • Proxy o split-horizon avanzado: Si necesitas respuestas diferentes del mismo nombre según el origen, usa scopes de zona con DNS Policies. De nuevo, para una sola excepción fija, pinpoint es suficiente.

Automatización idempotente con PowerShell

El siguiente script crea o actualiza una pinpoint zone de manera segura. Ajusta valores según tu entorno.

param(
  [Parameter(Mandatory=$true)][string]$Fqdn,           # p.ej. "host1.abc.com"
  [Parameter(Mandatory=$true)][string]$IPv4,           # p.ej. "10.20.30.40"
  [ValidateSet("None","Domain","Forest")]
  [string]$ReplicationScope = "Domain",
  [TimeSpan]$TTL = (New-TimeSpan -Hours 1)
)

function Ensure-PinpointZone {
param(\[string]\$Name, \[string]\$Scope)
\$zone = Get-DnsServerZone -Name \$Name -ErrorAction SilentlyContinue
if (-not \$zone) {
Write-Host "Creando zona \$Name..."
Add-DnsServerPrimaryZone -Name \$Name -ReplicationScope \$Scope -DynamicUpdate None | Out-Null
} else {
Write-Host "Zona \$Name ya existe. Continuando..."
}
}

function Ensure-ARecord {
param(\[string]\$ZoneName, \[string]\$IPv4, \[TimeSpan]\$TTL)
\$rr = Get-DnsServerResourceRecord -ZoneName \$ZoneName -Name "@" -RRType "A" -ErrorAction SilentlyContinue
if (\$rr) {
if (\$rr.RecordData.IPv4Address.IPAddressToString -ne \$IPv4 -or \$rr.TimeToLive -ne \$TTL) {
Write-Host "Actualizando A en \$ZoneName a \$IPv4 TTL=\$TTL..."
Remove-DnsServerResourceRecord -ZoneName \$ZoneName -RRType A -Name "@" -RecordData \$rr.RecordData.IPv4Address.IPAddressToString -Force
Add-DnsServerResourceRecordA -ZoneName \$ZoneName -Name "@" -IPv4Address \$IPv4 -TimeToLive \$TTL | Out-Null
} else {
Write-Host "Registro A ya coincide. Sin cambios."
}
} else {
Write-Host "Creando A en \$ZoneName con \$IPv4 TTL=\$TTL..."
Add-DnsServerResourceRecordA -ZoneName \$ZoneName -Name "@" -IPv4Address \$IPv4 -TimeToLive \$TTL | Out-Null
}
}

Ensure-PinpointZone -Name \$Fqdn -Scope \$ReplicationScope
Ensure-ARecord -ZoneName \$Fqdn -IPv4 \$IPv4 -TTL \$TTL

Write-Host "Limpia caché del servidor para pruebas: dnscmd /clearcache" 

Checklist rápido de implementación

  • Confirmaste el FQDN exacto a interceptar (host1.abc.com).
  • Creaste la pinpoint zone host1.abc.com (AD-integrada si corresponde).
  • Agregaste el A/AAAA en el apex con la IP correcta.
  • Verificaste que no existe una zona abc.com local.
  • Limpiaste caché en servidor y clientes y probaste con nslookup / Resolve-DnsName.
  • Documentaste el TTL y el alcance de replicación.

Notas complementarias y verificación

  • Verificación: ejecuta ipconfig /flushdns en clientes y/o dnscmd /clearcache en el servidor; prueba con nslookup host1.abc.com <ip-del-servidor-dns>.
  • TTL: ajusta un TTL razonable si prevés cambios (una hora suele ser buen equilibrio).
  • Advertencia: si creas una zona abc.com en el servidor, todas las consultas para ese dominio dejarán de reenviarse.
  • CNAME en apex: el apex de la pinpoint zone (host1.abc.com) debe contener SOA/NS, por lo que no puede ser CNAME; usa A/AAAA.
  • Escenarios avanzados: para múltiples excepciones o reglas por subred/horario, explora DNS Policies con recursion scopes (Windows Server 2016+). Para un único FQDN, la pinpoint zone es suficiente y más sencilla.

Preguntas frecuentes

¿Puedo hacer lo mismo si el FQDN es más profundo, por ejemplo srv1.eu.abc.com?
Sí. La pinpoint zone será exactamente srv1.eu.abc.com y el procedimiento es idéntico.

¿Qué ocurre si el proveedor externo tiene un wildcard *.abc.com?
No afecta a tu pinpoint. host1.abc.com se responde localmente; otras etiquetas se reenviarán y el wildcard externo podrá aplicar allí.

¿Cuántas pinpoint zones puedo crear?
No hay un límite práctico en escenarios normales. A nivel operativo, conviene documentarlas y preferir una política común de TTL/replicación.

¿Puedo redirigir con CNAME en lugar de A?
En el apex de la pinpoint zone no; usa A/AAAA. Si necesitas alias, podrías crear otra pinpoint zone para ese alias concreto con A/AAAA.

¿Se requiere reiniciar el servicio DNS?
No. Crear la zona y el registro aplica de inmediato. Solo asegúrate de limpiar cachés para ver resultados al instante.

Monitoreo y diagnóstico

  • Registros del servicio DNS: revisa el visor de eventos en Applications and Services Logs → DNS Server para errores de zona.
  • Estadísticas: dnscmd /statistics puede mostrar recuentos de consultas resueltas localmente vs reenviadas.
  • Registro analítico: habilita el canal DNS Server → Analytical para trazas detalladas durante pruebas (deshabilítalo luego por rendimiento).

Resumen ejecutivo

Si necesitas una excepción de resolución para un único nombre bajo un dominio que normalmente reenvías, no toques la zona del dominio. La técnica correcta y probada en Windows DNS es la pinpoint zone con un registro A/AAAA en el apex del FQDN. Es simple, segura y no interfiere con tu forwarder.

Índice