Tema
Configurar el DNS a mano, campo por campo
Ya sabes qué es cada registro. Ahora vas a hacer lo que hace un profesional: sentarte frente al panel de Cloudflare con la zona vacía y llenarla tú solo, sabiendo en cada campo qué escribir, por qué, y qué se rompe si te equivocas.
Al final de esta lección tendrás la zona completa de mitienda.com hecha por ti, y una hoja que puedes reutilizar con cualquier cliente.
Antes de tocar nada: junta los datos
El 90% de los errores de DNS vienen de no tener los datos correctos antes de empezar. Un registro DNS es una pregunta y una respuesta: la pregunta la decides tú (el nombre), pero la respuesta te la da otra empresa (tu hosting, tu proveedor de correo, Vercel...). Nunca la inventes.
Hoja de datos (cópiala y llénala)
txt
DOMINIO: mitienda.com
NAMESERVERS ACTIVOS: ana.ns.cloudflare.com / bob.ns.cloudflare.com (compruébalo con nslookup -type=ns)
SITIO WEB
¿Dónde está? [x] cPanel [ ] VPS [ ] Vercel/Netlify [ ] Otro: ____
IP del servidor: 203.0.113.10 (IPv6: 2001:db8::10, si tiene)
Versión principal: [x] sin www (mitienda.com) [ ] con www
SUBDOMINIOS
blog → mismo cPanel api → VPS 198.51.100.20
CORREO
Proveedor: [x] cPanel [ ] Google Workspace [ ] Microsoft 365 [ ] Zoho [ ] Cloudflare Email Routing
MX que me dio: mail.mitienda.com (prioridad 0)
SPF que me dio: v=spf1 +a +mx ~all (lo ajustamos abajo)
DKIM (nombre/valor): default._domainkey / v=DKIM1; k=rsa; p=MIIBIjANBg...
Envío desde la web: [x] SMTP del hosting [ ] Brevo [ ] otro: ____
VERIFICACIONES
Google Search Console: google-site-verification=AbC123...¿De dónde saco cada dato?
| Dato | Dónde encontrarlo |
|---|---|
| IP del hosting cPanel | cPanel → barra lateral derecha Información general → Dirección IP compartida (o "Shared IP Address"). También en el correo de bienvenida del hosting. |
| IP de un VPS | Panel del proveedor (DigitalOcean, Hostinger VPS, Contabo...) o en el servidor: curl -4 ifconfig.me |
| MX, SPF y DKIM de cPanel | cPanel → Entregabilidad del correo (Email Deliverability) → Administrar en tu dominio: muestra los valores "sugeridos" exactos |
| MX/SPF/DKIM de Google Workspace | admin.google.com → Apps → Google Workspace → Gmail → Autenticar correo (DKIM). MX y SPF están en su guía de configuración |
| Registros de Vercel / Netlify | En su panel, al agregar el dominio te muestran el registro exacto |
| Verificación de Search Console | search.google.com/search-console → Agregar propiedad → Dominio → te da el TXT |
Antes de cambiar una zona que ya funciona
En Cloudflare: DNS → Records → Import and Export → Export. Descargas un archivo con todos los registros actuales. Si algo sale mal, lo puedes volver a importar. Hazlo siempre antes de editar la zona de un cliente.
El formulario de Cloudflare, campo por campo
En DNS → Records → Add record aparece este formulario. Los campos cambian un poco según el tipo:
txt
┌──────────┬─────────────────┬─────────────────────────┬──────────────┬────────┐
│ Type │ Name (required) │ IPv4 address (required) │ Proxy status │ TTL │
│ [A ▾] │ [blog ] │ [203.0.113.10 ] │ [● Proxied ] │ [Auto] │
└──────────┴─────────────────┴─────────────────────────┴──────────────┴────────┘
Comment: [Blog del cliente en cPanel - creado 2026-11-02] [Save]1. Type (tipo): ¿qué clase de respuesta es?
Elige según qué te dieron como respuesta:
| Te dieron... | Usa |
|---|---|
Una IPv4 (203.0.113.10) | A |
Una IPv6 (2001:db8::10) | AAAA |
Un nombre de otra empresa (cname.vercel-dns.com) | CNAME |
| "Servidor de correo" con prioridad | MX |
Un texto (v=spf1..., google-site-verification=..., una llave DKIM) | TXT (salvo que te digan CNAME, como hace Microsoft con DKIM) |
| Servicio + protocolo + puerto | SRV |
| Autoridades de certificados permitidas | CAA |
2. Name (nombre): ¿por quién preguntan?
Es la parte izquierda del nombre, sin el dominio. Cloudflare le pega .mitienda.com automáticamente (debajo del campo te muestra el nombre completo resultante: revísalo).
| Quieres configurar | Escribe en Name | Resultado |
|---|---|---|
| El dominio "pelón" | @ | mitienda.com |
| www | www | www.mitienda.com |
| Un subdominio | blog | blog.mitienda.com |
| Dos niveles | admin.blog | admin.blog.mitienda.com |
| Todos los no definidos | * | *.mitienda.com |
| DMARC | _dmarc | _dmarc.mitienda.com |
| DKIM | default._domainkey | default._domainkey.mitienda.com |
El error del nombre duplicado
En otros paneles (GoDaddy, algunos cPanel), si escribes el nombre completo blog.mitienda.com en el campo Host, el panel le vuelve a pegar el dominio y crea blog.mitienda.com.mitienda.com. Cloudflare lo corrige solo, pero acostúmbrate a escribir solo la parte izquierda (blog) y a leer la vista previa del nombre completo antes de guardar.
3. El valor: ¿qué respondemos?
Según el tipo, el campo se llama IPv4 address, Target, Mail server o Content. En otros paneles: Value, Points to, Destino, Valor, Data. Es lo mismo: la respuesta.
Reglas del valor:
- A/AAAA: solo la IP. Nada de
http://, ni/, ni:3000. - CNAME / MX: solo un nombre de host (
cname.vercel-dns.com), sinhttps://ni rutas. En Cloudflare el punto final es opcional. - TXT: pega el texto tal cual. Cloudflare pone las comillas: no las agregues tú (si pegas
"v=spf1..."con comillas, pueden quedar duplicadas). Cuidado con las comillas "curvas" de Word o WhatsApp.
4. Proxy status: ¿naranja o gris?
| 🟠 Proxied | ⚪ DNS only | |
|---|---|---|
| Qué responde el DNS | IPs de Cloudflare | Tu IP real |
| Tráfico | Pasa por Cloudflare (caché, SSL, protección) | Va directo a tu servidor |
| Úsalo para | Tu sitio web y subdominios web (@, www, blog, api) | Correo (mail), FTP, SSH, juegos, cualquier cosa que no sea web, y lo que pidan Vercel/Shopify |
Solo los tipos A, AAAA y CNAME tienen nube. MX y TXT nunca la tienen. Explicación completa en Cloudflare desde cero.
5. TTL: ¿cuánto tiempo pueden recordar la respuesta?
- Con 🟠 Proxied el TTL queda fijo en Auto (300 s). No lo puedes cambiar ni lo necesitas: la IP pública es de Cloudflare.
- Con ⚪ DNS only elige Auto (300 s) normalmente. Si es un registro que nunca cambia (MX), puedes usar 1 hora.
- Antes de una migración, baja el TTL a 1–5 minutos un día antes, para que el cambio se vea rápido. Ver Cómo funciona el DNS.
6. Priority (prioridad, solo MX y SRV)
Número menor = se usa primero. Con un solo servidor de correo da igual el número (pon el que te dé el proveedor). Con varios, copia exactamente sus prioridades: el proveedor ya las calculó.
7. Comment: documenta para tu yo del futuro
Escribe para qué es el registro y quién lo pidió: "DKIM de cPanel", "Verificación Search Console - nov 2026", "App de reservas en VPS". Dentro de un año no vas a recordar por qué existe ese TXT raro, y borrarlo podría romper algo.
Manos a la obra: la zona de mitienda.com paso a paso
Escenario: sitio y correo en el mismo hosting cPanel (203.0.113.10), un blog en el mismo cPanel, una API en un VPS (198.51.100.20) y verificación de Google. Hacemos un registro a la vez, y para cada uno: qué poner, por qué, y qué pasa si te equivocas.
Registro 1: el sitio principal
| Type | Name | IPv4 address | Proxy | TTL |
|---|---|---|---|---|
| A | @ | 203.0.113.10 | 🟠 Proxied | Auto |
- Por qué A: el hosting nos dio una IP, y la raíz del dominio no puede ser un CNAME clásico.
- Por qué
@: es el dominio sin nada delante, lo que la gente escribe más. - Por qué naranja: queremos SSL gratis de Cloudflare, caché, ocultar la IP y protección.
- Si te equivocas (IP vieja o mal escrita): el sitio no carga (error 521/522) o muestra el sitio de otro cliente del hosting.
Registro 2: www
| Type | Name | Target | Proxy | TTL |
|---|---|---|---|---|
| CNAME | www | mitienda.com | 🟠 Proxied | Auto |
- Por qué CNAME y no otra A:
wwwdebe ir siempre al mismo lugar que la raíz. Con CNAME, si un día cambias la IP, la cambias una sola vez (en el registro 1) ywwwla sigue solo. - Además necesitas que una de las dos versiones redirija a la otra (lo hacemos con una Redirect Rule, ver Cloudflare a fondo), para que Google no vea dos sitios duplicados.
- Si lo olvidas:
www.mitienda.comda NXDOMAIN, y mucha gente escribe www por costumbre.
Registro 3: el blog (mismo hosting)
| Type | Name | Target | Proxy | TTL |
|---|---|---|---|---|
| CNAME | blog | mitienda.com | 🟠 Proxied | Auto |
- Por qué: el blog vive en el mismo servidor, así que reusa la IP del principal (igual que www). Una
A blog 203.0.113.10también funciona; el CNAME te ahorra actualizarlo si cambia la IP. - Falta la otra mitad: crear
blog.mitienda.comen cPanel → Dominios. Sin eso verás el sitio principal o la página por defecto (Subdominios y puertos).
Registro 4: la API en otro servidor
| Type | Name | IPv4 address | Proxy | TTL |
|---|---|---|---|---|
| A | api | 198.51.100.20 | 🟠 Proxied | Auto |
- Por qué A y no CNAME: está en otro servidor con su propia IP.
- El puerto no va aquí: aunque la app corra en el 3000, el DNS solo lleva la IP. En el VPS, Nginx escucha en 443 y reenvía a 3000.
Registro 5: el servidor de correo
| Type | Name | IPv4 address | Proxy | TTL |
|---|---|---|---|---|
| A | mail | 203.0.113.10 | ⚪ DNS only | Auto |
- Por qué existe: el MX (siguiente registro) debe apuntar a un nombre, y ese nombre necesita su A. Además, lo usas para configurar el correo en el celular (
mail.mitienda.com). - Por qué GRIS (obligatorio): el correo usa puertos 25, 465, 587 y 993, que el proxy de Cloudflare no deja pasar. Con naranja, el correo deja de llegar y de enviarse.
- Por qué no usamos el CNAME a
mitienda.com: porquemitienda.comestá en naranja; un CNAME hacia un nombre proxied también devolvería IPs de Cloudflare.
Registro 6: MX (dónde se entrega el correo)
| Type | Name | Mail server | Priority | TTL |
|---|---|---|---|---|
| MX | @ | mail.mitienda.com | 0 | Auto |
- Por qué
@: queremos recibir correos para@mitienda.com. (Si fueraventas@tienda.mitienda.com, el MX iría entienda). - Por qué un nombre y no una IP: el estándar lo exige. Un MX con IP o apuntando a un CNAME es inválido y muchos servidores lo rechazan.
- Si lo borras o te equivocas: los correos que te envíen rebotan o se pierden. Este es el registro que más se olvida al pasar un dominio a Cloudflare.
Registro 7: SPF (quién puede enviar)
| Type | Name | Content | TTL |
|---|---|---|---|
| TXT | @ | v=spf1 a mx ~all | Auto |
Por qué: le dice a Gmail, Outlook, etc. qué servidores tienen permiso de enviar como
@mitienda.com. Sin SPF, tus correos van a spam.Por qué
a mxaquí:mxautoriza amail.mitienda.com(el correo del cPanel).aautoriza a la IP de la raíz para los formularios del sitio... pero ojo: con la raíz en naranja,aresuelve a IPs de Cloudflare, no a tu servidor. Por eso es más correcto usar la IP real:txtv=spf1 mx ip4:203.0.113.10 ~allUno solo: si ya existe un TXT que empieza con
v=spf1, edítalo; no crees otro. Dos SPF = SPF inválido. Detalle en SPF y el generador.
Registro 8: DKIM (la firma)
| Type | Name | Content | TTL |
|---|---|---|---|
| TXT | default._domainkey | v=DKIM1; k=rsa; p=MIIBIjANBgkqhki... (completo) | Auto |
- De dónde: cPanel → Entregabilidad del correo → Administrar → copia nombre y valor exactos.
- Copia la llave completa: es muy larga. Si se corta un solo carácter, la firma falla. Ver DKIM.
Registro 9: DMARC (la política)
| Type | Name | Content | TTL |
|---|---|---|---|
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:dmarc@mitienda.com | Auto |
- Por qué
p=noneprimero: empiezas observando. Cuando los reportes confirmen que tu correo legítimo pasa SPF/DKIM, subes aquarantiney luego areject(DMARC).
Registro 10: verificación de Google Search Console
| Type | Name | Content | TTL |
|---|---|---|---|
| TXT | @ | google-site-verification=AbC123... | Auto |
- Pueden existir varios TXT en
@(SPF + verificaciones): es normal y correcto. Lo único que no puede repetirse es el SPF. - No lo borres después de verificar: Google lo revisa de vez en cuando.
La zona terminada
txt
Type Name Contenido Proxy Prioridad
A @ 203.0.113.10 🟠
CNAME www mitienda.com 🟠
CNAME blog mitienda.com 🟠
A api 198.51.100.20 🟠
A mail 203.0.113.10 ⚪
MX @ mail.mitienda.com - 0
TXT @ v=spf1 mx ip4:203.0.113.10 ~all -
TXT default._domainkey v=DKIM1; k=rsa; p=MIIBIjANBgkq... -
TXT _dmarc v=DMARC1; p=none; rua=mailto:dmarc@... -
TXT @ google-site-verification=AbC123... -Diez registros y cada uno tiene una razón. Si no puedes explicar por qué existe un registro, no lo crees (y si lo encuentras en la zona de un cliente, investiga antes de borrarlo).
Variante: el correo en Google Workspace
El sitio queda igual (registros 1 a 4). El correo cambia por completo:
| Type | Name | Contenido | Prioridad | Por qué |
|---|---|---|---|---|
| MX | @ | smtp.google.com | 1 | El correo se entrega en Google, no en tu hosting |
| TXT | @ | v=spf1 include:_spf.google.com ~all | - | Autoriza a Google a enviar (agrega ip4:203.0.113.10 si tu web también envía) |
| TXT | google._domainkey | (la llave de admin.google.com) | - | Firma de Google |
| TXT | _dmarc | v=DMARC1; p=none; rua=mailto:dmarc@mitienda.com | - | Igual que antes |
Y borras el A mail y el MX viejo de cPanel (si los dejas, parte del correo podría ir al hosting). En cPanel → Enrutamiento de correo (Email Routing), marca Intercambiador de correo remoto, para que los formularios del sitio no entreguen localmente los correos de @mitienda.com. Ver Correo con tu dominio.
Comprueba cada registro (no te quedes con la duda)
Después de guardar cada registro, pregúntale directamente a un resolver público. Con Cloudflare los cambios se ven en segundos:
powershell
nslookup mitienda.com 1.1.1.1
nslookup -type=cname www.mitienda.com 1.1.1.1
nslookup -type=mx mitienda.com 1.1.1.1
nslookup -type=txt mitienda.com 1.1.1.1
nslookup -type=txt _dmarc.mitienda.com 1.1.1.1
nslookup -type=txt default._domainkey.mitienda.com 1.1.1.1bash
dig +short mitienda.com @1.1.1.1
dig +short CNAME www.mitienda.com @1.1.1.1
dig +short MX mitienda.com @1.1.1.1
dig +short TXT mitienda.com @1.1.1.1
dig +short TXT _dmarc.mitienda.com @1.1.1.1
dig +short TXT default._domainkey.mitienda.com @1.1.1.1Qué esperar:
mitienda.com→ IPs de Cloudflare (104.21.x.x,172.67.x.x), no la tuya. Es correcto: está en naranja.mail.mitienda.com→ tu IP203.0.113.10. Si sale una de Cloudflare, está en naranja por error.- Finalmente, pasa tu dominio por el analizador de Herramientas DNS: te marca lo que falta.
Editar y borrar sin romper nada
- Editar (clic en Edit del registro) es mejor que borrar y volver a crear: no hay un momento en que el nombre no exista.
- "A record with that host already exists" o error de conflicto: un CNAME no puede convivir con otro registro del mismo nombre. Si
blogya tiene un A, bórralo antes de crearCNAME blog(o edita el existente). - Antes de borrar un registro desconocido, búscalo:
google-site-verification(Google),MS=(Microsoft 365),_acme-challenge(certificados),facebook-domain-verification(Meta). Si no sabes qué es, déjalo y pregunta. - Cambios masivos: exporta, edita el archivo en un editor de texto, impórtalo. Cuidado: importar agrega, no reemplaza.
Errores típicos al escribir registros
| Error | Ejemplo incorrecto | Correcto |
|---|---|---|
| Esquema o ruta en el valor | CNAME www https://mitienda.com/ | CNAME www mitienda.com |
| Puerto en una IP | A api 198.51.100.20:3000 | A api 198.51.100.20 + Nginx al 3000 |
| Nombre duplicado | blog.mitienda.com.mitienda.com | Name: blog |
| Comillas de más o curvas | ""v=spf1 ..."" o “v=spf1” | v=spf1 mx ~all |
| Dos SPF | dos TXT v=spf1... en @ | Uno solo, combinado |
| MX a una IP | MX @ 203.0.113.10 | MX @ mail.mitienda.com + A mail |
| Correo en naranja | A mail ... 🟠 | ⚪ DNS only |
| Espacios al copiar | 203.0.113.10 | Sin espacios |
| DKIM incompleto | la llave cortada | Cópiala entera desde el panel |
| Editar la zona equivocada | Editar en el cPanel con NS de Cloudflare | Editar solo donde apuntan los nameservers |
Ejercicios
- Un cliente tiene el sitio en Vercel (te da
A @ 76.76.21.21yCNAME www cname.vercel-dns.com) y el correo en Zoho (MXmx.zoho.com10,mx2.zoho.com20,mx3.zoho.com50; SPFinclude:zohomail.com; DKIM con selectorzmail). Escribe la zona completa, con el estado del proxy de cada registro. - Ves esta zona en un cliente. Encuentra los 4 errores:txt
A @ 203.0.113.10 🟠 A www 203.0.113.10 🟠 A mail 203.0.113.10 🟠 MX @ 203.0.113.10 10 TXT @ v=spf1 mx ~all TXT @ v=spf1 include:_spf.google.com ~all - ¿Por qué en el SPF de la zona de este capítulo usamos
ip4:203.0.113.10en lugar dea? - El cliente quiere
tienda.mitienda.comen Shopify. ¿Qué registro creas, en qué color, y qué más tienes que hacer?
Ver solución
- Zona:txtAgrega el dominio también en el panel de Vercel y verifica el dominio en Zoho.
A @ 76.76.21.21 ⚪ (Vercel emite su SSL) CNAME www cname.vercel-dns.com ⚪ MX @ mx.zoho.com 10 MX @ mx2.zoho.com 20 MX @ mx3.zoho.com 50 TXT @ v=spf1 include:zohomail.com ~all TXT zmail._domainkey v=DKIM1; k=rsa; p=... (de Zoho) TXT _dmarc v=DMARC1; p=none; rua=mailto:dmarc@mitienda.com TXT @ zoho-verification=zb12345.zmverify.zoho.com (si Zoho lo pide) - (a)
mailestá en naranja: el correo no funcionará → gris. (b) El MX apunta a una IP → debe sermail.mitienda.com. (c) Hay dos SPF → combinar en uno solo (y decidir qué proveedor de correo se usa en verdad). (d)wwwduplica la IP con un A: no está mal en sí, pero lo correcto esCNAME www mitienda.compara no tener que cambiar dos registros. (Bonus: no hay DMARC ni DKIM.) - Porque
@está en naranja: el mecanismoabusca el registro A de la raíz y obtiene IPs de Cloudflare, que no envían tu correo. La IP real del servidor es la que envía los correos del formulario. CNAME tienda shops.myshopify.comen gris (Shopify emite su certificado y lo recomienda así). Además, en Shopify → Configuración → Dominios → Conectar dominio existente contienda.mitienda.com: es la "segunda mitad" (el servidor tiene que saber que ese nombre es tuyo).
Resumen
Antes de empezar, junta los datos con la hoja: los valores te los da tu hosting o proveedor, nunca se inventan. Exporta la zona antes de editar.
Cada campo responde una pregunta: Type = qué clase de respuesta, Name = por quién preguntan (sin el dominio), valor = la respuesta, Proxy = si pasa por Cloudflare, TTL = cuánto se recuerda, Priority = orden (MX).
Web en 🟠 naranja; correo, FTP, SSH y lo que pidan Vercel/Shopify en ⚪ gris.
El valor nunca lleva
http://, rutas ni puertos.wwwy los subdominios del mismo servidor van mejor como CNAME a la raíz.MX apunta a un nombre con su propio A en gris. Un solo SPF. DKIM completo. DMARC empezando en
none.Comprueba cada registro con
nslookup/digcontra1.1.1.1y con el analizador.Usa el campo Comment para documentar el porqué de cada registro.
Siguiente: SSL gratis: deja de pagar.