DNS (Sistema de Nombres de Dominio) es el sistema fundamental sobre el que se sostiene todo el internet moderno. No es simplemente una «guía telefónica», sino una base de datos compleja y distribuida que traduce nombres legibles por humanos (por ejemplo, google.com) en identificadores técnicos, como direcciones IP, servidores de correo, políticas de seguridad e incluso coordenadas geográficas. Una configuración incorrecta de DNS es una de las causas más frecuentes de indisponibilidad de sitios web, problemas con la entrega de correo y vulnerabilidades de seguridad.
Esta guía combina todos los aspectos de DNS: desde los registros básicos que se usan a diario hasta mecanismos complejos como DNSSEC y DANE. Examinaremos cada tipo de registro, su propósito, sintaxis, ejemplos prácticos, errores comunes, comandos para diagnóstico y plantillas listas para implementación. La información está estructurada para que puedas usar este material como libro de texto, referencia de administrador y lista de verificación para entornos de producción.
- 1. Terminología
- 2. Desglose detallado de todos los tipos de registros
- A — Registro de dirección (IPv4)
- AAAA — Registro de dirección IPv6
- CNAME — Registro de nombre canónico
- MX — Registro de intercambio de correo
- TXT — Registro de texto
- NS — Registro de servidor de nombres
- SOA — Registro de inicio de autoridad
- PTR — Registro de puntero (DNS inverso)
- SRV — Registro de servicio
- CAA — Autorización de autoridad de certificación
- NAPTR — Registro de puntero de autoridad de nombres
- TLSA — Registro de asociación de certificados TLSA (DANE)
- Registros DNSSEC (DNSKEY, DS, RRSIG, NSEC, NSEC3)
- SSHFP — Huella digital de clave pública SSH
- Registros raros y de servicio
- 3. Recomendaciones prácticas y matices de configuración
- 4. Plantillas completas de archivos de zona (estilo BIND)
- 5. Configuración paso a paso del dominio de correo (PTR, SPF, DKIM, DMARC)
- 6. Comandos para verificación y depuración de DNS
- 7. Seguridad y mejores prácticas
- 8. Errores comunes y cómo evitarlos
- 9. Lista de verificación antes del lanzamiento en producción o migración
- 10. Ejemplos adicionales y explicaciones de campos
- 11. Escenarios útiles
- 12. JSON listo para importar en el panel del proveedor
1. Terminología
Antes de profundizar en los tipos de registros, es crucial entender los términos clave utilizados en DNS. Esto establece una base lingüística común y ayuda a evitar confusiones.
- DNS (Domain Name System): El Sistema de Nombres de Dominio. Una base de datos distribuida global que traduce nombres de dominio en direcciones IP y otra información relacionada.
- Nombre de dominio (Domain Name): Una dirección legible por humanos en internet, por ejemplo,
example.com. Consiste en etiquetas separadas por puntos. - FQDN (Fully Qualified Domain Name): Un nombre de dominio completo que identifica de forma única un nodo en la jerarquía DNS. Siempre termina con un punto que denota la raíz de DNS (por ejemplo,
www.example.com.). - Zona (Zone): Una unidad administrativa en DNS. Una porción del espacio de nombres administrada por un servidor autoritativo (o un grupo de servidores). Generalmente corresponde a un dominio o subdominio.
- Archivo de zona (Zone File): Un archivo de texto almacenado en un servidor DNS que contiene todos los registros para una zona específica. Utiliza la sintaxis definida por el estándar BIND.
- Registro (Resource Record, RR): La unidad básica de datos en DNS. Cada registro tiene un tipo, nombre, valor y TTL.
- Tipo de registro (Record Type): Define qué información contiene el registro (por ejemplo,
A,MX,TXT). Cada tipo corresponde a un código numérico único (por ejemplo, 1 paraA, 15 paraMX). - TTL (Time To Live): La vida útil del registro, especificada en segundos. Determina cuánto tiempo los resolvers y otros servidores DNS pueden almacenar en caché el registro antes de solicitarlo nuevamente al servidor autoritativo.
- Resolver: Un cliente o servidor DNS que recibe una solicitud de una aplicación (por ejemplo, un navegador) y realiza las consultas necesarias para obtener una respuesta. Puede ser recursivo (realiza la cadena completa de consultas) o no recursivo.
- Servidor autoritativo (Authoritative Server): Un servidor DNS que almacena los registros originales para una zona específica y es responsable de ellos. Responde a las consultas utilizando datos del archivo de zona.
- Servidor recursivo (Recursive Server): Un servidor que recibe una solicitud de un cliente y, si no tiene la respuesta en su caché, realiza una cadena de consultas, comenzando desde los servidores raíz, para encontrar el servidor autoritativo y obtener la respuesta.
- Servidor raíz (Root Server): Uno de los 13 grupos de servidores (denotados por letras de
a.root-servers.net.am.root-servers.net.) que son el punto de partida para resolver cualquier nombre de dominio. Saben dónde se encuentran los servidores para los dominios de nivel superior (TLD). - TLD (Top-Level Domain): Un dominio de nivel superior. La última parte de un nombre de dominio (por ejemplo,
.com,.org,.ru,.io). - Registrador (Registrar): La empresa a través de la cual se registran los nombres de dominio. Gestiona la información de delegación (qué servidores NS sirven al dominio) en la zona padre (por ejemplo, en la zona
.compara el dominioexample.com). - Registrante (Registrant): El propietario del nombre de dominio.
- Delegación (Delegation): El proceso de transferir el control de un subdominio (o dominio) de la zona padre a la hija. Se logra mediante registros
NSen la zona padre. - Registro Glue (Glue Record): Un registro
AoAAAApublicado por el registrador para un servidor de nombres cuyo nombre de dominio está dentro de la zona delegada. Necesario para romper una dependencia circular. - SOA (Start of Authority): Un registro que contiene información administrativa sobre la zona, incluyendo el servidor primario, contacto del administrador y parámetros que controlan la transferencia de zona a servidores secundarios.
- Número de serie (Serial Number): Un campo en el registro
SOAque indica la versión de la zona. Los servidores secundarios lo usan para determinar si se necesita una actualización. - Resolución directa (Forward Resolution): El proceso de convertir un nombre de dominio en una dirección IP (por ejemplo,
example.com→192.0.2.1). - Resolución inversa (Reverse Resolution): El proceso de convertir una dirección IP en un nombre de dominio (por ejemplo,
192.0.2.1→example.com). Gestionado a través de zonasin-addr.arpa(para IPv4) yip6.arpa(para IPv6). - Caché: Un almacenamiento temporal para registros DNS en un resolver o servidor DNS para acelerar solicitudes posteriores.
- Almacenamiento en caché (Caching): El proceso de guardar registros DNS en una caché.
- Almacenamiento en caché negativo (Negative Caching): Almacenar en caché información de que el registro solicitado no existe.
- RFC (Request for Comments): Un documento oficial que describe estándares, protocolos y procedimientos en internet. Todos los aspectos principales de DNS se describen en una serie de RFC.
- BIND (Berkeley Internet Name Domain): La implementación más común de un servidor DNS. La sintaxis de sus archivos de zona se ha convertido en el estándar de facto.
- MTA (Mail Transfer Agent): Un servidor de correo responsable de transferir correos electrónicos (por ejemplo, Postfix, Exim, Sendmail).
- FCrDNS (Forward-Confirmed Reverse DNS): Un mecanismo de verificación donde una dirección IP tiene un registro
PTRque se resuelve en un nombre de dominio, y ese nombre de dominio, a su vez, tiene un registroAque apunta de nuevo a la dirección IP original. Crítico para la reputación del servidor de correo. - DNSSEC (Domain Name System Security Extensions): Un conjunto de extensiones que agregan firmas criptográficas a los registros DNS para garantizar su autenticidad e integridad.
- DANE (DNS-based Authentication of Named Entities): Un estándar que permite vincular certificados TLS a nombres DNS mediante registros
TLSA. Requiere que DNSSEC esté habilitado. - CAA (Certification Authority Authorization): Un mecanismo que permite al propietario de un dominio especificar qué autoridades de certificación (CA) están autorizadas para emitir certificados para él.
- SPF (Sender Policy Framework): Un mecanismo que permite al propietario de un dominio especificar qué servidores están autorizados a enviar correo en su nombre.
- DKIM (DomainKeys Identified Mail): Un mecanismo que permite firmar correos electrónicos salientes con una firma digital que el destinatario puede verificar utilizando una clave pública publicada en DNS.
- DMARC (Domain-based Message Authentication, Reporting & Conformance): Una política que define cómo los servidores de correo deben manejar los correos que no pasan las verificaciones SPF o DKIM y configura el envío de informes al propietario del dominio.
- ALIAS / ANAME: Tipos de registros no estándar ofrecidos por algunos proveedores de DNS. Permiten crear alias para el dominio raíz (apex), lo cual es imposible con un
CNAMEestándar. - CNAME Flattening: Una tecnología utilizada por algunos proveedores de DNS. Cuando se consulta un
CNAMEpara un dominio apex, el servidor resuelve automáticamente la cadenaCNAMEy devuelve los registrosA/AAAAfinales al cliente, evitando la violación de RFC.
2. Desglose detallado de todos los tipos de registros
Todos los ejemplos se proporcionan en formato de archivo de zona estilo BIND. Los nombres que terminan con un punto (por ejemplo, example.com.) son FQDN. TTL (Time To Live) se especifica en segundos y determina cuánto tiempo se puede almacenar en caché el registro por los resolvers.
A — Registro de dirección (IPv4)
- Propósito: Vincula un nombre de dominio a una dirección IPv4 de 32 bits. El registro más básico y frecuentemente utilizado.
- Formato:
nombre TTL IN A dirección-IPv4 - Ejemplo:
example.com. 3600 IN A 192.0.2.1 www.example.com. 3600 IN A 192.0.2.1 - Cuándo se usa: Para especificar la dirección IP de un servidor web, API, servidor de juegos o cualquier otro servicio accesible a través de IPv4.
- Verificación:
dig +short example.com A - Mejores prácticas:
- Usar un registro
Apara el dominio raíz (apex,@) es una práctica estándar y correcta. - Elija TTL según la estabilidad de la dirección IP. Para direcciones estables — 3600 (1 hora) o 86400 (1 día). Antes de la migración — reduzca a 300 (5 minutos).
- Usar un registro
AAAA — Registro de dirección IPv6
- Propósito: Análogo al registro
A, pero para direcciones IPv6 de 128 bits. Críticamente importante para el futuro de internet. - Formato:
nombre TTL IN AAAA dirección-IPv6 - Ejemplo:
example.com. 3600 IN AAAA 2001:db8::1 - Cuándo se usa: Para garantizar la disponibilidad del servicio a través del protocolo IPv6.
- Verificación:
dig +short example.com AAAA
CNAME — Registro de nombre canónico
- Propósito: Crea un alias para un nombre de dominio. Cualquier solicitud a un CNAME se convierte automáticamente en una solicitud a su nombre objetivo (canónico).
- Formato:
nombre TTL IN CNAME objetivo. - Ejemplo:
www.example.com. 3600 IN CNAME example.com. blog.example.com. 3600 IN CNAME blog-hosting.example.net. - Restricciones importantes:
- Conflicto de registros: No puede tener un
CNAMEy cualquier otro registro (A,MX,TXT, etc.) para el mismo nombre. Esto es una violación de RFC. - Dominio Apex: El estándar RFC prohíbe usar
CNAMEpara el dominio raíz (por ejemplo,example.com.) porque ya contiene registrosNSySOA. Para resolver esto, los proveedores de DNS (Cloudflare, AWS Route 53) ofrecen extensiones no estándar:ALIASoANAME, que resuelven el alias en registrosA/AAAAsobre la marcha.
- Conflicto de registros: No puede tener un
- Aplicación práctica: Conectar un CDN (hacer que
wwwsea un CNAME a la dirección del CDN), usar plataformas SaaS (blog, tienda). - Verificación:
dig +short www.example.com CNAME
MX — Registro de intercambio de correo
- Propósito: Especifica los servidores que aceptan correo entrante para el dominio. El registro contiene una prioridad: cuanto menor sea el número, mayor será la prioridad.
- Formato:
nombre TTL IN MX prioridad servidor_de_correo. - Ejemplo:
example.com. 3600 IN MX 10 mail1.example.com. example.com. 3600 IN MX 20 mail2.example.com.- El correo se enviará primero a
mail1.example.com.. Si no está disponible, el MTA (Agente de Transferencia de Correo) intentarámail2.example.com..
- El correo se enviará primero a
- Requisitos clave:
- El servidor de correo (
mail1.example.com.) debe tener su propio registroAoAAAA. - Un registro
PTRdebe configurarse para la dirección IP del servidor de correo, y debe coincidir con el nombre del servidor especificado en elMX. Esto es crítico para la reputación del servidor y la entrega del correo.
- El servidor de correo (
- Verificación:
dig +short example.com MX
TXT — Registro de texto
- Propósito: Almacena datos de texto arbitrarios. Ampliamente utilizado para políticas de seguridad de correo electrónico (SPF, DKIM, DMARC), verificación de propiedad de dominio (Google, Microsoft, Yandex) y otros fines.
- Formato:
nombre TTL IN TXT "texto" - Ejemplos:
- SPF (Sender Policy Framework): Define qué servidores están autorizados a enviar correo en nombre del dominio.
example.com. 3600 IN TXT "v=spf1 ip4:192.0.2.0/24 include:_spf.google.com ~all"ip4:192.0.2.0/24— permite toda la subred.include:_spf.google.com— incluye reglas de la zona de Google (para Gmail).~all— «fallo suave» para todos los demás (softfail).-all— fallo estricto (fail).
- DKIM (DomainKeys Identified Mail): Publica la clave pública para verificar la firma digital agregada a los correos salientes. Generalmente se crea para un subdominio como
selector._domainkey.dominio.default._domainkey.example.com. 3600 IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQ..."v=DKIM1— versión.k=rsa— tipo de clave.p=...— la clave pública en sí en formato base64.
- DMARC (Domain-based Message Authentication, Reporting & Conformance): Establece la política para manejar correos que no pasan las verificaciones SPF o DKIM y configura el envío de informes.
_dmarc.example.com. 3600 IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com; ruf=mailto:forensics@example.com; pct=100"p=reject— rechazar correos que no pasan la verificación.rua=mailto:...— dirección para informes agregados.ruf=mailto:...— dirección para informes forenses (fallas específicas).pct=100— aplicar política al 100% de los correos.
- Verificación:
example.com. 3600 IN TXT "google-site-verification=abc123..."
- SPF (Sender Policy Framework): Define qué servidores están autorizados a enviar correo en nombre del dominio.
- Notas:
- Si una cadena de texto es más larga de 255 bytes, se puede dividir en varias partes en el archivo de zona, con cada parte encerrada entre comillas. El servidor DNS las concatenará automáticamente.
example.com. IN TXT ("v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; " "pct=100; fo=1")
- Si una cadena de texto es más larga de 255 bytes, se puede dividir en varias partes en el archivo de zona, con cada parte encerrada entre comillas. El servidor DNS las concatenará automáticamente.
- Verificación:
dig +short example.com TXT
NS — Registro de servidor de nombres
- Propósito: Especifica los servidores DNS que son autoritativos para la zona. Estos registros son la base para delegar la gestión del dominio.
- Formato:
nombre TTL IN NS nombre_del_servidor. - Ejemplo:
example.com. 3600 IN NS ns1.example.net. example.com. 3600 IN NS ns2.example.net. - Puntos importantes:
- Los registros
NSen la zona deben coincidir exactamente con los servidores de nombres especificados con el registrador de dominio. - Registros Glue: Si el servidor de nombres (por ejemplo,
ns1.example.com.) se encuentra dentro de la misma zona que sirve (example.com.), surge una dependencia circular. Para romperla, agregue registros «glue» — registrosAoAAAApara estos servidores de nombres — con el registrador.
- Los registros
- Verificación:
dig +short example.com NS
SOA — Registro de inicio de autoridad
- Propósito: El registro administrativo principal de una zona DNS. Contiene información sobre el servidor principal, el administrador y parámetros que controlan la sincronización entre el servidor principal y los secundarios.
- Formato:
nombre TTL IN SOA servidor_primario. email_administrador. ( número_de_serie ; Serial intervalo_de_actualización ; Refresh intervalo_de_reintento ; Retry tiempo_de_vencimiento ; Expire ttl_mínimo ) ; Minimum TTL - Ejemplo:
example.com. 3600 IN SOA ns1.example.net. admin.example.com. ( 2025092201 ; Serial (YYYYMMDDNN) 7200 ; Refresh (2 horas) 3600 ; Retry (1 hora) 1209600 ; Expire (14 días) 86400 ) ; Minimum TTL (1 día) - Explicaciones de campos:
Serial: Versión de la zona. Es crucialmente importante incrementar este número con cada cambio en la zona. Los servidores secundarios comparan suSerialcon elSerialen el servidor primario y, si es menor, solicitan una actualización. Formato recomendado:YYYYMMDDNN(año, mes, día, número de revisión del día).Refresh: Intervalo (en segundos) después del cual los servidores secundarios deben verificar el servidor primario en busca de actualizaciones.Retry: Intervalo después del cual un servidor secundario debe reintentar si falla el primer intento de actualización.Expire: Tiempo (en segundos) después del cual un servidor secundario dejará de responder a consultas si no puede contactar al servidor primario. La zona se considera «caducada».Minimum TTL: Originalmente establecía el TTL mínimo para todos los registros en la zona. Ahora a menudo se usa como el TTL para el almacenamiento en caché negativo (cuánto tiempo almacenar en caché una respuesta de «registro no encontrado»).
- Verificación:
dig +short example.com SOA
PTR — Registro de puntero (DNS inverso)
- Propósito: Proporciona resolución inversa — convierte una dirección IP en un nombre de dominio. Gestionado por el propietario de la dirección IP (ISP, proveedor de hosting), no por el propietario del dominio.
- Formato para IPv4: La dirección IP se escribe en orden inverso, y se agrega el sufijo
.in-addr.arpa..- IP
192.0.2.5→5.2.0.192.in-addr.arpa.
- IP
- Formato para IPv6: Cada parte de 4 bits (nibble) de la dirección se escribe en orden inverso, y se agrega el sufijo
.ip6.arpa..- IPv6
2001:db8::1→1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa.
- IPv6
- Ejemplo (IPv4):
5.2.0.192.in-addr.arpa. 3600 IN PTR mail.example.com. - Significado práctico: Críticamente importante para los servidores de correo. La mayoría de los sistemas de correo verifican que el registro PTR para la dirección IP del remitente coincida con el nombre que el servidor presenta en el comando
HELO/EHLO. Una discrepancia es una razón común para que los correos sean marcados como spam. - Verificación:
dig -x 192.0.2.5 +shortohost 192.0.2.5
SRV — Registro de servicio
- Propósito: Especifica la ubicación de los servidores para servicios específicos, incluyendo protocolo y puerto. Permite a los clientes encontrar automáticamente el servidor necesario.
- Formato de nombre:
_servicio._protocolo.dominio.- Servicio:
sip,xmpp-server,_minecraft, etc. - Protocolo:
tcp,udp.
- Servicio:
- Formato de registro:
nombre TTL IN SRV prioridad peso puerto objetivo. - Ejemplo:
_sip._tcp.example.com. 3600 IN SRV 10 60 5060 sipserver.example.com. _minecraft._tcp.example.com. 3600 IN SRV 5 0 25565 mc1.example.com. - Explicaciones de campos:
Priority(Prioridad): Cuanto menor sea el número, mayor será la prioridad. El cliente intentará primero conectarse al servidor con la prioridad más baja.Weight(Peso): Se utiliza para el balanceo de carga entre servidores con la misma prioridad. La probabilidad de seleccionar un servidor es proporcional a su peso. Si todos los pesos son iguales, la selección es aleatoria.Port(Puerto): El puerto en el que se ejecuta el servicio.Target(Objetivo): El FQDN del servidor al que se debe dirigir la solicitud. Este servidor debe tener un registroAoAAAA.
- Aplicación: VoIP (SIP), mensajería instantánea (XMPP), juegos (Minecraft), directorios (LDAP).
- Verificación:
dig +short _sip._tcp.example.com SRV
CAA — Autorización de autoridad de certificación
- Propósito: Permite al propietario del dominio especificar qué autoridades de certificación (CA) están autorizadas a emitir certificados SSL/TLS para este dominio. Este es un mecanismo de seguridad importante para prevenir la emisión no autorizada de certificados.
- Formato:
nombre TTL IN CAA flags etiqueta valor - Ejemplo:
example.com. 3600 IN CAA 0 issue "letsencrypt.org" example.com. 3600 IN CAA 0 iodef "mailto:security@example.com" - Explicaciones:
Flags: Generalmente0. La bandera128(crítica) significa que una CA que no entiende esta etiqueta debe rechazar emitir el certificado.Tags:issue: Permite a la CA especificada emitir certificados. Un valor vacío (;) prohíbe la emisión por parte de cualquiera.issuewild: Permite la emisión de certificados wildcard (*.example.com).iodef: URL (generalmentemailto:ohttp(s):) para enviar informes sobre intentos de violar la política CAA.
- Verificación:
dig +short example.com CAA
NAPTR — Registro de puntero de autoridad de nombres
- Propósito: Se utiliza para reglas complejas de reescritura de nombres y URI. Más a menudo se aplica en sistemas de telecomunicaciones (ENUM para convertir números de teléfono en URI SIP) y para descubrimiento de servicios dinámico.
- Formato:
nombre TTL IN NAPTR orden preferencia banderas servicio expresión_regular reemplazo. - Ejemplo (simplificado para ENUM):
4.3.2.1.5.5.5.1.e164.arpa. IN NAPTR 100 10 "U" "E2U+sip" "!^.*$!sip:info@example.com!" . - Explicaciones:
Order(Orden): Procesado de menor a mayor.Preference(Preferencia): Análogo alweightenSRVpara registros con el mismoorder.Flags:Usignifica que el resultado es un URI (por ejemplo,sip:).Service: Tipo de servicio (por ejemplo,E2U+sip— conversión a URI SIP).Regexp: Expresión regular para transformar la cadena de entrada.Replacement: Alternativa a la expresión regular (generalmente vacía si se usaregexp).
- Aplicación: Escenarios de enrutamiento complejos en VoIP, ENUM.
TLSA — Registro de asociación de certificados TLSA (DANE)
- Propósito: Vincula un certificado TLS (o parte de él) a un nombre DNS mediante un registro DNS. Esto es parte del estándar DANE (Autenticación Basada en DNS de Entidades Nombradas). Requiere que DNSSEC esté habilitado para garantizar la confianza; de lo contrario, el registro se puede falsificar.
- Formato de nombre:
_puerto._protocolo.nombre. - Formato de registro:
nombre TTL IN TLSA uso selector tipo_de_coincidencia datos - Ejemplo:
_443._tcp.www.example.com. 3600 IN TLSA 3 1 1 d2abde...f21 - Explicaciones de campos:
Usage(Uso):3(DANE-EE): Certificado de entidad final. El más común.1(PKIX-EE): Certificado de entidad final, debe estar firmado por una CA de confianza.2(DANE-TA): Certificado de autoridad de certificación de confianza.0(PKIX-TA): Certificado de CA, debe estar en la cadena de confianza.
Selector(Selector):0: Certificado completo.1: Solo la clave pública del certificado.
Matching Type(Tipo de coincidencia):0: Datos exactos (no se usa).1: Hash SHA-256.2: Hash SHA-512.
Data: Hash del certificado o su clave pública en formato hex.
- Aplicación: Mejora la seguridad de TLS, especialmente en entornos donde no se puede confiar en las CA públicas.
- Verificación:
dig +short _443._tcp.www.example.com. TLSA
Registros DNSSEC (DNSKEY, DS, RRSIG, NSEC, NSEC3)
DNSSEC (Extensiones de Seguridad del Sistema de Nombres de Dominio) es un conjunto de extensiones que agregan firmas criptográficas a los registros DNS para proteger contra la falsificación (spoofing) y ataques de envenenamiento de caché.
- Principio general: La zona se firma con una clave privada. La clave pública se publica en un registro
DNSKEY. Para crear una cadena de confianza, el hash de esta clave (DSregistro) se publica en la zona padre (por ejemplo, paraexample.com— en la zona.com). Los clientes que admiten DNSSEC pueden verificar la firma (RRSIG) de cada registro utilizando la clave pública y asegurarse de su autenticidad. DNSKEY: La clave pública de la zona.- Ejemplo:
example.com. 3600 IN DNSKEY 257 3 13 AwEAAa3d...9QAB257— banderas (257 = KSK, 256 = ZSK).3— protocolo (siempre 3).13— algoritmo (13 = ECDSA/SHA256).- Último campo — clave en base64.
- Ejemplo:
DS(Delegation Signer): Hash de la clave pública (DNSKEY) de la zona hija, publicado en la zona padre para crear una cadena de confianza.- Ejemplo:
example.com. 3600 IN DS 54517 13 2 84C8...D34F54517— Key Tag (identificador de clave).13— Algoritmo.2— Tipo de resumen (SHA-256).- Último campo — hash en hex.
- Ejemplo:
RRSIG(Firma de registro de recurso): Firma digital para un conjunto de registros DNS.- Ejemplo (firma para registro
A):example.com. 3600 IN RRSIG A 13 2 3600 20251001000000 20250901000000 54517 example.com. oNvL...7Q==A— tipo de registros firmados.13— algoritmo.2— número de etiquetas en el nombre.3600— TTL original.20251001000000— tiempo de expiración de la firma.20250901000000— tiempo de inicio de la firma.54517— Key Tag de la clave de firma.example.com.— nombre del firmante.- Último campo — firma en base64.
- Ejemplo (firma para registro
NSEC/NSEC3: Se utilizan para autenticar respuestas negativas (prueba de que un registro con tal nombre o tipo no existe).NSEC3además aplica hash a los nombres para proteger contra «caminatas de zona».- Habilitar DNSSEC: Este es un proceso separado y complejo:
- Genere pares de claves (KSK y ZSK) en el servidor DNS.
- Publique registros
DNSKEYen la zona. - Genere un registro
DSa partir del KSK. - Publique el registro
DScon el registrador de dominio (en la zona padre). - Habilite la firma de zona en el servidor DNS (generación automática de
RRSIG,NSEC/NSEC3). - Pruebe usando
dig +dnssecy herramientas en línea (por ejemplo, Verisign DNSSEC Debugger).
- Verificación:
dig +dnssec example.com A(mostraráRRSIGpara el registroAsi DNSSEC está habilitado y funcionando).dig +short example.com DNSKEYdig +short example.com DS
SSHFP — Huella digital de clave pública SSH
- Propósito: Publica el hash (huella digital) de la clave SSH del host en DNS. Los clientes SSH pueden usar este registro para verificar automáticamente la autenticidad del servidor en la primera conexión, evitando ataques de «hombre en el medio» (MITM). Se recomienda usar con DNSSEC para garantizar la autenticidad del registro.
- Formato:
nombre TTL IN SSHFP algoritmo tipo_de_resumen huella_digital - Ejemplo:
example.com. 3600 IN SSHFP 4 2 356a192b7913b04c54574d18c28d46e6395428ab - Explicaciones:
Algorithm(Algoritmo):1— RSA2— DSA3— ECDSA4— ED25519
Digest Type(Tipo de resumen):1— SHA-12— SHA-256
Fingerprint: Hash de la clave pública en formato hex.
- Generación: En el servidor, puede generar el registro con el comando:
ssh-keygen -r example.com - Verificación:
dig +short example.com SSHFP
Registros raros y de servicio
HINFO(Información del host): Almacena información sobre el tipo de CPU y sistema operativo del host. No se recomienda su uso ya que revela información potencialmente sensible del sistema.- Ejemplo:
server1.example.com. 3600 IN HINFO "Intel Xeon" "Ubuntu 22.04"
- Ejemplo:
LOC(Ubicación): Almacena las coordenadas geográficas (latitud, longitud, altitud) del host.- Ejemplo:
example.com. 3600 IN LOC 55 45 21.000 N 37 37 03.000 E 15m
- Ejemplo:
RP(Persona responsable): Especifica la persona de contacto responsable de la zona. El correo electrónico se especifica en formato de nombre de host (punto en lugar de@).- Ejemplo:
example.com. 3600 IN RP admin.example.com. txt-record.example.com.
- Ejemplo:
SPF(obsoleto): Anteriormente existía como un tipo de registro separado pero ahora está completamente reemplazado porTXT. No debe usarse.- Ejemplo (no usar):
example.com. IN SPF "v=spf1 ..."
- Ejemplo (no usar):
3. Recomendaciones prácticas y matices de configuración
- Gestión de TTL:
- Valor estándar: 3600 segundos (1 hora) — un buen equilibrio entre rendimiento (caché) y flexibilidad.
- Antes de la migración: Reduzca el TTL para los registros relevantes (por ejemplo,
A/AAAApara su sitio web) a 300 segundos (5 minutos) 24-72 horas antes del cambio planeado. Esto reduce el tiempo para que los cambios se propaguen. - Después de la migración: Una vez que los cambios se hayan estabilizado, aumente el TTL de nuevo a un valor óptimo (por ejemplo, 3600 o 86400) para reducir la carga en los servidores DNS.
- SOA Serial:
- Siempre incremente el número de serie después de cada cambio en la zona. Si no lo hace, los servidores secundarios no se enterarán de las actualizaciones.
- Formato recomendado:
YYYYMMDDNN(por ejemplo,2024051701). Esto es claro y permite un seguimiento fácil de cuándo se realizó el último cambio.
- CNAME en Apex (Dominio raíz):
- Problema: El estándar RFC prohíbe
CNAMEen el dominio apex (por ejemplo,example.com.) porque entra en conflicto con otros registros obligatorios (NS,SOA). - Solución: Utilice funciones proporcionadas por su proveedor de DNS:
ALIAS/ANAME: Tipos de registros no estándar que se comportan comoCNAMEpero se resuelven por el servidor DNS del proveedor en registrosA/AAAApara la respuesta del cliente. Esto permite usar alias en el apex.- CNAME Flattening: Una tecnología (por ejemplo, en Cloudflare) donde un
CNAMEen el apex se «aplana» automáticamente — el servidor DNS devuelve los registrosA/AAAAdel host objetivo en lugar delCNAME.
- Problema: El estándar RFC prohíbe
- Registros Glue:
- Cuándo se necesitan: Si sus servidores de nombres (por ejemplo,
ns1.example.com.) se encuentran dentro de la misma zona que sirven (example.com.). - Qué hacer: Encuentre la sección de configuración de registros glue con su registrador de dominio y agregue registros
A(y/oAAAA) para sus servidores de nombres. Esto rompe la dependencia circular.
- Cuándo se necesitan: Si sus servidores de nombres (por ejemplo,
- Configuración de PTR para correo:
- Requisito: La dirección IP de su servidor de correo debe tener un registro
PTRque se resuelva en su nombre de dominio completamente calificado (FQDN, por ejemplo,mail.example.com.). - Consistencia: El nombre que el servidor de correo envía en el comando
HELO/EHLOdebe coincidir con el nombre del registroPTR, y ese nombre, a su vez, debe tener un registroAque apunte de nuevo a la misma dirección IP. Esto se llama «Forward-Confirmed Reverse DNS» (FCrDNS) y es crítico para la reputación. - Dónde configurar: Con su proveedor de hosting o propietario de la dirección IP, no en la zona DNS de su dominio.
- Requisito: La dirección IP de su servidor de correo debe tener un registro
- División de registros TXT largos:
- Si una cadena en un registro
TXTexcede los 255 bytes, debe dividirse en varias partes en el archivo de zona. Cada parte se encierra entre comillas, y el servidor DNS las concatena automáticamente. - Ejemplo:
example.com. IN TXT ( "v=DMARC1; p=reject; rua=mailto:dmarc@example.com,mailto:dmarc@thirdparty.com; " "ruf=mailto:forensics@example.com; fo=1; adkim=s; aspf=s; pct=100" )
- Si una cadena en un registro
4. Plantillas completas de archivos de zona (estilo BIND)
A continuación se muestran plantillas listas para tres escenarios comunes. Reemplace example.com, example.net, direcciones IP y claves con sus propios valores.
a) Sitio web simple (estático, sin correo)
$TTL 3600
@ IN SOA ns1.hosting.net. hostmaster.example.com. (
2025092201 ; serial (YYYYMMDDNN)
7200 ; refresh (2 hours)
3600 ; retry (1 hour)
1209600 ; expire (14 days)
86400 ) ; minimum TTL (1 day)
; Authoritative Name Servers
@ IN NS ns1.hosting.net.
@ IN NS ns2.hosting.net.
; Web Server (IPv4 and IPv6)
@ IN A 192.0.2.10
@ IN AAAA 2001:db8::10
; WWW subdomain (alias to apex)
www IN CNAME @
; Security: Restrict Certificate Authorities
@ IN CAA 0 issue "letsencrypt.org"
@ IN CAA 0 iodef "mailto:security@example.com"
b) Sitio web + servidor de correo propio
$TTL 3600
@ IN SOA ns1.example.net. admin.example.com. (
2025092201 ; serial
7200 ; refresh
3600 ; retry
1209600 ; expire
86400 ) ; minimum
; Name Servers
@ IN NS ns1.example.net.
@ IN NS ns2.example.net.
; --- Web Section ---
@ IN A 192.0.2.10
www IN CNAME @
; --- Mail Section ---
; A record for the mail server
mail IN A 192.0.2.20
; MX record pointing to the mail server
@ IN MX 10 mail.example.com.
; --- Email Authentication ---
; SPF: Allow mail server IP and Google Workspace
@ IN TXT "v=spf1 ip4:192.0.2.20 include:_spf.google.com ~all"
; DKIM: Public key for 'default' selector
default._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQ..."
; DMARC: Policy to quarantine failures and send reports
_dmarc IN TXT "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100"
; --- Security ---
@ IN CAA 0 issue "letsencrypt.org"
c) Sitio web + CDN + Correo + DNSSEC (ejemplo complejo)
$TTL 300 ; Lower TTL for flexibility with CDN
@ IN SOA ns1.example.net. hostmaster.example.com. (
2025092201 ; serial
7200 ; refresh
3600 ; retry
1209600 ; expire
3600 ) ; minimum (also used for negative caching)
; Name Servers
@ IN NS ns1.example.net.
@ IN NS ns2.example.net.
; --- Web Section (with CDN) ---
; Apex domain: Use ALIAS/ANAME (provider-specific) to point to origin or CDN edge
; If your provider supports ALIAS:
; @ IN ALIAS origin.examplehost.net.
; If using CNAME flattening for apex (e.g., Cloudflare):
@ IN A 192.0.2.10 ; Temporary or fallback IP, often managed by provider
; WWW subdomain: CNAME to CDN provider
www IN CNAME cdn-provider.example.net.
; --- Mail Section ---
mail IN A 192.0.2.20
@ IN MX 10 mail.example.com.
; --- Email Authentication ---
@ IN TXT "v=spf1 include:_spf.google.com include:spf.protection.outlook.com -all"
default._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQ..."
_dmarc IN TXT "v=DMARC1; p=reject; rua=mailto:dmarc@example.com; ruf=mailto:abuse@example.com; pct=100"
; --- Security ---
@ IN CAA 0 issue "letsencrypt.org"
@ IN CAA 0 issuewild "letsencrypt.org"
@ IN CAA 0 iodef "mailto:security@example.com"
; --- DNSSEC (Example keys - REPLACE WITH YOURS) ---
; DNSKEY records (usually auto-generated by DNS server when signing is enabled)
@ IN DNSKEY 257 3 13 ( ; KSK
AwEAAbOv...QAB )
@ IN DNSKEY 256 3 13 ( ; ZSK
AwEAAa3d...9QAB )
; RRSIG records are automatically generated by the DNS server during signing and are not manually added to the zone file.
; NSEC/NSEC3 records are also automatically generated.
; --- Additional Services (Example) ---
; SRV record for SIP service
_sip._tcp IN SRV 10 50 5060 sip1.example.com.
5. Configuración paso a paso del dominio de correo (PTR, SPF, DKIM, DMARC)
La configuración del correo es una tarea compleja. Siga estos pasos para garantizar la máxima entregabilidad y protección contra el spam.
Paso 1: Configure A/AAAA para el servidor de correo
Asegúrese de que su servidor de correo tenga un registro A (y preferiblemente AAAA).
mail.example.com. 3600 IN A 192.0.2.20
Paso 2: Configure registros MX
Especifique que el correo para example.com debe entregarse a mail.example.com..
example.com. 3600 IN MX 10 mail.example.com.
Paso 3: Configure PTR (DNS inverso)
Este es el paso más importante y a menudo pasado por alto. Comuníquese con su proveedor de hosting o propietario de la dirección IP (192.0.2.20) y solicite un registro PTR que apunte a mail.example.com..
- Verificación:
dig -x 192.0.2.20 +shortdebería devolvermail.example.com..
Paso 4: Configure SPF (a través de TXT)
Defina qué servidores están autorizados a enviar correo en nombre de example.com. Incluya su servidor y cualquier servicio de terceros (Gmail, SendGrid, etc.).
example.com. 3600 IN TXT "v=spf1 ip4:192.0.2.20 include:_spf.google.com -all"
- Comience con
~all(fallo suave) para pruebas, luego pase a-all(fallo estricto).
Paso 5: Configure DKIM
- Genere un par de claves (privada y pública) en su servidor de correo (MTA). Elija un «selector» (por ejemplo,
default,202405). - Configure el MTA para firmar los correos salientes utilizando la clave privada y el selector elegido.
- Publique la clave pública en DNS como un registro
TXTpara el subdominioselector._domainkey.example.com..default._domainkey.example.com. 3600 IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQ..."
Paso 6: Configure DMARC
Defina la política para manejar los correos que no pasan las verificaciones SPF/DKIM y configure el envío de informes.
_dmarc.example.com. 3600 IN TXT "v=DMARC1; p=none; rua=mailto:dmarc@example.com; ruf=mailto:forensics@example.com; pct=100"
- Estrategia de implementación:
- Comience con
p=none— los correos no se bloquean, solo recibe informes. - Analice los informes, corrija errores en SPF/DKIM.
- Pase a
p=quarantine— los correos sospechosos van al spam. - Pase a
p=reject— los correos sospechosos se rechazan.
- Comience con
Consejos adicionales:
- Asegúrese de que el nombre que su servidor de correo envía en el comando
HELO/EHLOcoincida con el nombre del registroPTR(mail.example.com.). - Utilice herramientas en línea para verificar su configuración: mail-tester.com, mxtoolbox.com, dmarcian.com.
6. Comandos para verificación y depuración de DNS
Las herramientas de línea de comandos son indispensables para los administradores.
dig(Domain Information Groper) — la herramienta más potente y recomendada.- Consultas básicas:
dig +short example.com A— obtener solo la dirección IPv4.dig +short example.com AAAA— obtener solo la dirección IPv6.dig +short example.com MX— obtener registros MX.dig +short example.com TXT— obtener registros TXT (SPF, DKIM, DMARC).dig +short www.example.com CNAME— obtener CNAME.dig +short _sip._tcp.example.com SRV— obtener registro SRV.
- DNS inverso:
dig -x 192.0.2.1 +short— obtener PTR para IP.
- Trazado de delegación:
dig +trace example.com— muestra toda la ruta desde los servidores raíz hasta los servidores autoritativos de su zona. Ideal para diagnosticar problemas de delegación.
- Consulta a servidor específico:
dig @ns1.example.net example.com SOA— solicitar registro SOA a un servidor de nombres específico.
- Verificación de DNSSEC:
dig +dnssec example.com A— realizar una consulta con la bandera DO (DNSSEC OK) y mostrar registrosRRSIGsi existen.dig +short example.com DNSKEY— obtener registros DNSKEY.dig +short example.com DS— obtener registro DS (de la zona padre).
- Verificación de TLSA (DANE):
dig +short _443._tcp.www.example.com. TLSA
- Verificación de SSHFP:
dig +short example.com SSHFP
- Consultas básicas:
nslookup— herramienta antigua pero aún encontrada.nslookup -type=MX example.comnslookup -type=TXT example.comnslookup 192.0.2.1(para PTR)
host— simple y conveniente para consultas básicas.host -t A example.comhost -t MX example.comhost -t TXT example.comhost 192.0.2.1(para PTR)host -t sshfp example.com
7. Seguridad y mejores prácticas
- DNSSEC: Habilite DNSSEC para dominios críticos. Esto protege a sus usuarios de respuestas DNS falsas. Comience con un dominio de prueba para dominar el procedimiento (generación de claves, publicación de
DScon el registrador). Utilice validadores en línea para verificar. - CAA: Configure siempre registros
CAA. Esta es una forma simple y efectiva de evitar la emisión no autorizada de certificados para su dominio. Especifique solo las CA que utiliza (por ejemplo,letsencrypt.org). - Gestión de claves DKIM: Genere regularmente (por ejemplo, anualmente) nuevos pares de claves DKIM. Publique la nueva clave pública en DNS, configure el MTA para usar el nuevo selector y, después de algunas semanas (asegurándose de que todos los correos antiguos firmados con la clave anterior se hayan procesado), elimine el registro
TXTanterior. - Privacidad: No publique registros
HINFOya que revelan información sobre hardware y software que podría ser útil para atacantes. - Consultas ANY: Muchos resolvers DNS públicos (por ejemplo, Google Public DNS, Cloudflare) ya no procesan consultas
ANYdebido a su uso en ataques DDoS. No confíe en ellas.
8. Errores comunes y cómo evitarlos
- CNAME entra en conflicto con otros registros: No puede tener un
CNAMEy, por ejemplo, unAoMXpara el mismo nombre. Solución: Revise la estructura de su zona. Use registrosAoALIAS/ANAMEpara apex. - Falta de PTR para el servidor de correo: Esta es la razón principal por la que el correo termina en spam. Solución: Configure siempre
PTRcon su proveedor de hosting. - Número de serie SOA sin cambios: Si no incrementa el número de serie, los servidores secundarios no se enterarán de las actualizaciones. Solución: Incremente siempre
Serialdespués de cualquier cambio en la zona. Automatice este proceso si es posible. - Formato incorrecto de registros TXT largos: Si una cadena es más larga de 255 bytes y no se divide en partes, puede truncarse o causar un error. Solución: Divida siempre las cadenas largas en registros
TXT, encerrando cada parte entre comillas. - DS incorrecto al habilitar DNSSEC: Si el registro
DSpublicado con el registrador no coincide con suDNSKEY, la zona se volverá «no confiable», y los clientes con DNSSEC habilitado no podrán obtener registros de ella. Solución: Siga cuidadosamente las instrucciones de su servidor DNS y registrador. Verifique dos veces los hashes. - TTL alto antes de la migración: Si el TTL es alto (por ejemplo, 86400), después de cambiar la dirección IP, los usuarios llegarán a la dirección antigua durante un día. Solución: Reduzca siempre el TTL uno o dos días antes de una migración planeada.
- CNAME en el dominio apex: El uso directo de
CNAMEparaexample.com.viola RFC y puede causar un comportamiento impredecible. Solución: UseALIAS/ANAMEoCNAME flatteningproporcionado por su proveedor de DNS.
9. Lista de verificación antes del lanzamiento en producción o migración
Use esta lista para verificaciones finales antes de lanzar o mover un sitio/servicio.
- [ ] Registros básicos:
A/AAAApara todos los hosts clave (web, correo) están configurados y apuntan a las direcciones IP correctas. - [ ] Correo: Los registros
MXestán configurados y apuntan a hosts con registrosA/AAAA. - [ ] DNS inverso: Los registros
PTRpara todas las direcciones IP de los servidores de correo están configurados y son correctos (verificado mediantedig -x). - [ ] SPF: El registro
TXTSPF está configurado, incluye todas las fuentes permitidas y tiene el mecanismo de terminación correcto (-allo~all). - [ ] DKIM: La clave pública está publicada en DNS, el MTA está configurado para firmar correos. La firma se verifica en un correo de prueba.
- [ ] DMARC: El registro
TXTDMARC está publicado. Para nuevos despliegues, se recomienda comenzar conp=none. - [ ] Servidores de nombres: Los registros
NSen la zona coinciden con los servidores especificados con el registrador. Los registrosglueestán configurados si es necesario. - [ ] Número de serie SOA: El número de serie se ha incrementado después de todos los cambios recientes.
- [ ] CAA: Los registros
CAAestán configurados para restringir la emisión de certificados. - [ ] TTL: El TTL se redujo con anticipación (si se planeó una migración).
- [ ] Verificación: Se realizaron verificaciones usando
dig +trace,dig MX,dig TXTy herramientas en línea (por ejemplo, MXToolbox). - [ ] DNSSEC (si está habilitado): El registro
DSse agregó correctamente con el registrador, las verificaciones de DNSSEC pasan con éxito. - [ ] Copia de seguridad: La exportación de la zona actual está guardada.
- [ ] Plan de reversión: Los pasos para revertir los cambios en caso de falla están claramente escritos.
- [ ] Monitoreo: Los sistemas de monitoreo están configurados para rastrear la disponibilidad de los servidores DNS y los cambios en la zona.
10. Ejemplos adicionales y explicaciones de campos
- SRV — Profundización:
_xmpp-client._tcp.example.com. 3600 IN SRV 5 20 5222 xmpp1.example.com. _xmpp-client._tcp.example.com. 3600 IN SRV 5 30 5222 xmpp2.example.com. _xmpp-client._tcp.example.com. 3600 IN SRV 10 100 5222 backup.example.com.- El cliente primero contactará a los servidores con prioridad
5(xmpp1yxmpp2). - Entre
xmpp1yxmpp2, la selección será proporcional a su peso:xmpp1tiene un 40% de probabilidad (20/(20+30)),xmpp2— 60% (30/(20+30)). - El servidor
backup.example.com.(prioridad10) solo se usará si ambos servidores con prioridad5están no disponibles.
- El cliente primero contactará a los servidores con prioridad
- TLSA — Decodificación de ejemplo:
_443._tcp.www.example.com. IN TLSA 3 1 1 d2abde...f213(DANE-EE): El cliente debe usar este certificado exacto (o su clave pública), independientemente de la cadena de confianza de la CA.1(Selector): El registro almacena el hash no de todo el certificado, sino solo de su clave pública. Esto es más conveniente porque al reemitir un certificado con la misma clave, no necesita cambiar el registroTLSA.1(Tipo de coincidencia): Se usa hash SHA-256.
- SSHFP — Decodificación de ejemplo:
example.com. IN SSHFP 4 2 356a192b7913b04c54574d18c28d46e6395428ab4: Algoritmo — ED25519 (moderno y seguro).2: Tipo de resumen — SHA-256.356a19...28ab: Hash SHA-256 de la clave pública ED25519.
11. Escenarios útiles
- Conectar un sitio web a un CDN:
- Generalmente, el proveedor de CDN le pide que haga un
CNAMEpara un subdominio (por ejemplo,www) a su dirección (por ejemplo,example.cdnprovider.com). - Si desea usar el CDN para el dominio raíz (
example.com), use la funciónALIAS/ANAMEoCNAME flatteningde su proveedor de DNS. - Asegúrese de que el CDN esté correctamente configurado para trabajar con su certificado SSL (a menudo el CDN se encarga de la terminación SSL). Tener en cuenta los registros
CAAes importante en este caso.
- Generalmente, el proveedor de CDN le pide que haga un
- Mover un host (migración):
- 48-72 horas antes de la migración: Reduzca el TTL para los registros
A/AAAAde su sitio a 300 segundos. - Espere: Espere a que el TTL anterior se «propague» (espere un período igual al TTL anterior, por ejemplo, 3600 segundos).
- En el día de la migración: Cambie los registros
A/AAAApara que apunten a las nuevas direcciones IP. - Verificación: Use
dig +short example.com Acon diferentes DNS públicos (Google8.8.8.8, Cloudflare1.1.1.1) para verificar la propagación de los cambios. - Después de la estabilización (después de 24-48 horas): Aumente el TTL de nuevo a un valor óptimo (por ejemplo, 3600).
- 48-72 horas antes de la migración: Reduzca el TTL para los registros
12. JSON listo para importar en el panel del proveedor
A continuación se muestra una plantilla JSON extendida que contiene casi todos los tipos de registros cubiertos en esta guía. Este formato es generalizado y puede requerir adaptación a la API específica de su proveedor de DNS (Cloudflare, AWS Route 53, DigitalOcean, etc.).
{
"zone": "example.com",
"records": [
{
"type": "A",
"name": "@",
"value": "192.0.2.10",
"ttl": 3600
},
{
"type": "AAAA",
"name": "@",
"value": "2001:db8::10",
"ttl": 3600
},
{
"type": "CNAME",
"name": "www",
"value": "example.com.",
"ttl": 3600
},
{
"type": "MX",
"name": "@",
"value": "mail.example.com.",
"priority": 10,
"ttl": 3600
},
{
"type": "MX",
"name": "@",
"value": "backup-mail.example.com.",
"priority": 20,
"ttl": 3600
},
{
"type": "TXT",
"name": "@",
"value": "v=spf1 ip4:192.0.2.20 include:_spf.google.com -all",
"ttl": 3600
},
{
"type": "TXT",
"name": "default._domainkey",
"value": "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQA...",
"ttl": 3600
},
{
"type": "TXT",
"name": "_dmarc",
"value": "v=DMARC1; p=reject; rua=mailto:dmarc@example.com; pct=100",
"ttl": 3600
},
{
"type": "NS",
"name": "@",
"value": "ns1.example.net.",
"ttl": 3600
},
{
"type": "NS",
"name": "@",
"value": "ns2.example.net.",
"ttl": 3600
},
{
"type": "SOA",
"name": "@",
"primary_ns": "ns1.example.net.",
"admin_email": "admin.example.com.",
"serial": 2025092201,
"refresh": 7200,
"retry": 3600,
"expire": 1209600,
"minimum": 86400,
"ttl": 3600
},
{
"type": "PTR",
"name": "20.2.0.192.in-addr.arpa.",
"value": "mail.example.com.",
"ttl": 3600
},
{
"type": "SRV",
"name": "_sip._tcp",
"target": "sipserver.example.com.",
"port": 5060,
"priority": 10,
"weight": 60,
"ttl": 3600
},
{
"type": "CAA",
"name": "@",
"value": "letsencrypt.org",
"flags": 0,
"tag": "issue",
"ttl": 3600
},
{
"type": "CAA",
"name": "@",
"value": "mailto:security@example.com",
"flags": 0,
"tag": "iodef",
"ttl": 3600
},
{
"type": "TLSA",
"name": "_443._tcp.www",
"usage": 3,
"selector": 1,
"matching_type": 1,
"value": "d2abde240d7cd3ee6b4b28c54df034b97983a1d16e8a410e4561cb106618e971",
"ttl": 3600
},
{
"type": "SSHFP",
"name": "@",
"algorithm": 4,
"digest_type": 2,
"value": "356a192b7913b04c54574d18c28d46e6395428ab",
"ttl": 3600
},
{
"type": "HINFO",
"name": "server1",
"cpu": "Intel Xeon",
"os": "Ubuntu 22.04 LTS",
"ttl": 3600
},
{
"type": "LOC",
"name": "@",
"latitude": "55.7558 N",
"longitude": "37.6176 E",
"altitude": 150,
"ttl": 3600
},
{
"type": "RP",
"name": "@",
"mbox": "admin.example.com.",
"txt": "Technical Support",
"ttl": 3600
},
{
"type": "NAPTR",
"name": "4.3.2.1.5.5.5.1.e164.arpa.",
"order": 100,
"preference": 10,
"flags": "U",
"service": "E2U+sip",
"regexp": "!^.*$!sip:info@example.com!",
"replacement": ".",
"ttl": 3600
},
{
"type": "DS",
"name": "@",
"key_tag": 54517,
"algorithm": 13,
"digest_type": 2,
"digest": "84C84478D00A57973FC5D3E32F7E2BF539FB697D2660874C6D33A3313872D34F",
"ttl": 3600
},
{
"type": "DNSKEY",
"name": "@",
"flags": 257,
"protocol": 3,
"algorithm": 13,
"public_key": "AwEAAbOv...QAB",
"ttl": 3600
},
{
"type": "DNSKEY",
"name": "@",
"flags": 256,
"protocol": 3,
"algorithm": 13,
"public_key": "AwEAAa3d...9QAB",
"ttl": 3600
}
]
}
Cloudflare:
{
"zone_name": "example.com",
"zone_type": "full",
"records": [
{
"type": "A",
"name": "@",
"content": "192.0.2.10",
"ttl": 3600,
"proxied": false
},
{
"type": "AAAA",
"name": "@",
"content": "2001:db8::10",
"ttl": 3600,
"proxied": false
},
{
"type": "CNAME",
"name": "www",
"content": "example.com",
"ttl": 3600,
"proxied": false
},
{
"type": "MX",
"name": "@",
"content": "mail.example.com",
"priority": 10,
"ttl": 3600
},
{
"type": "TXT",
"name": "@",
"content": "v=spf1 ip4:192.0.2.20 include:_spf.google.com ~all",
"ttl": 3600
},
{
"type": "TXT",
"name": "_dmarc",
"content": "v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100",
"ttl": 3600
},
{
"type": "NS",
"name": "@",
"content": "ns1.example.net",
"ttl": 3600
},
{
"type": "NS",
"name": "@",
"content": "ns2.example.net",
"ttl": 3600
},
{
"type": "SRV",
"name": "_sip._tcp",
"data": {
"target": "sipserver.example.com",
"port": 5060,
"priority": 10,
"weight": 60
},
"ttl": 3600
},
{
"type": "CAA",
"name": "@",
"data": {
"flags": 0,
"tag": "issue",
"value": "letsencrypt.org"
},
"ttl": 3600
},
{
"type": "TLSA",
"name": "_443._tcp",
"data": {
"usage": 3,
"selector": 1,
"matching_type": 1,
"certificate": "<hex-of-cert-hash>"
},
"ttl": 3600
},
{
"type": "SSHFP",
"name": "@",
"data": {
"algorithm": 4,
"digest_type": 2,
"fingerprint": "d6f8..."
},
"ttl": 3600
},
{
"type": "HINFO",
"name": "@",
"data": {
"cpu": "INTEL",
"os": "Linux"
},
"ttl": 3600
},
{
"type": "LOC",
"name": "@",
"data": {
"latitude": "37.7749N",
"longitude": "122.4194W",
"altitude": 30
},
"ttl": 3600
},
{
"type": "RP",
"name": "admin",
"data": {
"mbox": "admin.example.com",
"txt": "Responsible person for the domain"
},
"ttl": 3600
},
{
"type": "NAPTR",
"name": "_sip._tcp",
"data": {
"order": 100,
"preference": 10,
"flags": "U",
"service": "SIP+D2U",
"regexp": "",
"replacement": "_sip._udp.example.com"
},
"ttl": 3600
},
{
"type": "DS",
"name": "@",
"data": {
"key_tag": 12345,
"algorithm": 8,
"digest_type": 2,
"digest": "<hex-digest>"
},
"ttl": 3600
},
{
"type": "DNSKEY",
"name": "@",
"data": {
"flags": 256,
"protocol": 3,
"algorithm": 8,
"public_key": "<base64-key>"
},
"ttl": 3600
},
{
"type": "RRSIG",
"name": "@",
"data": {
"type_covered": "A",
"algorithm": 8,
"labels": 1,
"original_ttl": 3600,
"signature_expiration": 1700000000,
"signature_inception": 1690000000,
"key_tag": 12345,
"signer_name": "example.com",
"signature": "<base64-signature>"
},
"ttl": 3600
},
{
"type": "NSEC",
"name": "@",
"data": {
"next_domain": "example.net",
"types": ["A","AAAA","MX","TXT","NS"]
},
"ttl": 3600
}
]
}
Route 53:
{
"Comment": "Full DNS cheat sheet import",
"Changes": [
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "A",
"TTL": 3600,
"ResourceRecords": [{"Value": "192.0.2.10"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "AAAA",
"TTL": 3600,
"ResourceRecords": [{"Value": "2001:db8::10"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "www.example.com.",
"Type": "CNAME",
"TTL": 3600,
"ResourceRecords": [{"Value": "example.com"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "MX",
"TTL": 3600,
"ResourceRecords": [{"Value": "10 mail.example.com"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "TXT",
"TTL": 3600,
"ResourceRecords": [{"Value": "\"v=spf1 ip4:192.0.2.20 include:_spf.google.com ~all\""}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "_dmarc.example.com.",
"Type": "TXT",
"TTL": 3600,
"ResourceRecords": [{"Value": "\"v=DMARC1; p=quarantine; rua=mailto:dmarc@example.com; pct=100\""}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "NS",
"TTL": 3600,
"ResourceRecords": [
{"Value": "ns1.example.net"},
{"Value": "ns2.example.net"}
]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "_sip._tcp.example.com.",
"Type": "SRV",
"TTL": 3600,
"ResourceRecords": [{"Value": "10 60 5060 sipserver.example.com"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "CAA",
"TTL": 3600,
"ResourceRecords": [{"Value": "0 issue \"letsencrypt.org\""}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "_443._tcp.example.com.",
"Type": "TLSA",
"TTL": 3600,
"ResourceRecords": [{"Value": "3 1 1 <hex-of-cert-hash>"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "SSHFP",
"TTL": 3600,
"ResourceRecords": [{"Value": "4 2 d6f8..."}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "HINFO",
"TTL": 3600,
"ResourceRecords": [{"Value": "\"INTEL\" \"Linux\""}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "LOC",
"TTL": 3600,
"ResourceRecords": [{"Value": "37.7749N 122.4194W 30m"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "admin.example.com.",
"Type": "RP",
"TTL": 3600,
"ResourceRecords": [{"Value": "admin.example.com Responsible person for the domain"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "_sip._tcp.example.com.",
"Type": "NAPTR",
"TTL": 3600,
"ResourceRecords": [{"Value": "100 10 U SIP+D2U "" _sip._udp.example.com"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "DS",
"TTL": 3600,
"ResourceRecords": [{"Value": "12345 8 2 <hex-digest>"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "DNSKEY",
"TTL": 3600,
"ResourceRecords": [{"Value": "256 3 8 <base64-key>"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "RRSIG",
"TTL": 3600,
"ResourceRecords": [{"Value": "A 8 1 3600 1700000000 1690000000 12345 example.com <base64-signature>"}]
}
},
{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "example.com.",
"Type": "NSEC",
"TTL": 3600,
"ResourceRecords": [{"Value": "example.net A AAAA MX TXT NS"}]
}
}
]
}
Full support for all record types: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA, TLSA, SSHFP, HINFO, LOC, RP, NAPTR, DS, DNSKEY, RRSIG, NSEC. TTL and priorities are already set and can be adapted as needed. Uses ResourceRecords for each record, as required by AWS.
Direct import via AWS CLI with the command:
aws route53 change-resource-record-sets --hosted-zone-id ZONE_ID --change-batch file://dns_records.json
DNS es un sistema poderoso y flexible, y el conocimiento de él es críticamente importante para cualquiera que gestione proyectos web, sistemas de correo o infraestructura de red. Esta guía cubre todos los aspectos — desde registros A simples hasta mecanismos de seguridad complejos como DNSSEC y DANE.
Conclusiones clave:
- Planifique cambios: Siempre reduzca el TTL antes de la migración.
- Pruebe: Use
dig,nslookupy herramientas en línea para verificar cada configuración. - Seguridad primero: Configure SPF, DKIM, DMARC para correo. Habilite CAA para controlar certificados. Considere usar DNSSEC para dominios críticos.
- Documente: Mantenga listas de verificación y guarde copias de seguridad de zonas.
Este material está diseñado para ser su referencia universal. Guárdelo, y le ayudará a resolver cualquier tarea relacionada con DNS.