Tema
Diagnóstico y errores
"No abre la página", "no me llegan los correos", "me sale un error 522". Tarde o temprano un cliente te escribirá eso a las 11 de la noche. La diferencia entre un principiante y un profesional no es saberse todos los errores de memoria, sino tener un método: hacer las preguntas correctas en el orden correcto y comprobar con herramientas en lugar de adivinar.
En esta lección aprenderás ese método, los comandos para cada pregunta, cómo limpiar cachés y una tabla grande de errores con su causa y solución.
Concepto: el método de las tres preguntas
Piensa en una carta que no llegó. ¿El problema es la dirección del sobre, la oficina postal que la reparte o el destinatario que no abre la puerta? Con un dominio es igual: hay tres capas y se revisan de arriba hacia abajo.
txt
┌─────────────────────────────────────────────────────────────────────────┐
│ 1. ¿QUÉ NAMESERVERS ESTÁN ACTIVOS? (¿quién manda en el dominio?) │
│ Registrador → TLD (.com / .mx) → ¿Cloudflare? ¿hosting? ¿registrador? │
│ Si esto está mal, todo lo demás da igual. │
├─────────────────────────────────────────────────────────────────────────┤
│ 2. ¿QUÉ DICE LA ZONA? (¿los registros son correctos?) │
│ A / CNAME / MX / TXT... preguntando DIRECTO al nameserver activo. │
│ ¿Naranja o gris? ¿TTL? ¿falta algo? │
├─────────────────────────────────────────────────────────────────────────┤
│ 3. ¿QUÉ RESPONDE EL SERVIDOR? (¿el destino funciona?) │
│ Cloudflare → origen 203.0.113.10: HTTP, certificado, correo (SMTP). │
│ Códigos de estado, cabeceras, logs. │
└─────────────────────────────────────────────────────────────────────────┘
+ Capa 0 (siempre al final): CACHÉS
navegador, sistema operativo, router, proveedor, Cloudflare.Regla de oro: cambia una sola cosa, verifica, y anota. Si cambias cinco cosas a la vez y se arregla, no sabrás cuál fue (ni cuál rompiste).
Pregunta 1: ¿qué nameservers están activos?
bash
# Lo que responde el resolver (puede venir de caché)
dig +short NS mitienda.com
# Lo que dice el registro del TLD .com (la delegación "oficial", sin caché intermedia)
dig NS mitienda.com @a.gtld-servers.net
# Para un .mx, primero averigua los servidores del TLD y pregunta a uno
dig +short NS mx
dig NS mitienda.mx @a.mx-ns.mx
# El camino completo desde la raíz (muy didáctico)
dig +trace mitienda.com
# El registro WHOIS: nameservers, fechas y ESTADO del dominio
whois mitienda.compowershell
# Windows
Resolve-DnsName mitienda.com -Type NS -Server 1.1.1.1
nslookup -type=NS mitienda.com 8.8.8.8Qué buscar:
- Que aparezcan solo
ana.ns.cloudflare.comybob.ns.cloudflare.com(o los que deban ser). - En
whois: la fecha de expiración (Registry Expiry Date) y el estado.clientTransferProhibitedes normal (candado contra robos).clientHoldoserverHoldsignifican que el dominio está suspendido: no resuelve aunque todo lo demás esté perfecto (pasa con dominios vencidos o cuando el titular no verificó su correo tras el registro).
Pregunta 2: ¿qué dice la zona?
Pregunta directamente al nameserver autoritativo. Así eliminas cualquier caché y ves la verdad actual:
bash
dig mitienda.com A @ana.ns.cloudflare.com +short
dig www.mitienda.com @ana.ns.cloudflare.com +short
dig mitienda.com AAAA @ana.ns.cloudflare.com +short # ¡revisa IPv6! (ver "sitio viejo")
dig mitienda.com MX @ana.ns.cloudflare.com +short
dig mitienda.com TXT @ana.ns.cloudflare.com +short
dig _dmarc.mitienda.com TXT @ana.ns.cloudflare.com +short
dig default._domainkey.mitienda.com TXT @ana.ns.cloudflare.com +short
dig mail.mitienda.com A @ana.ns.cloudflare.com +shortpowershell
Resolve-DnsName mitienda.com -Type A -Server ana.ns.cloudflare.com
Resolve-DnsName mitienda.com -Type MX -Server ana.ns.cloudflare.com
Resolve-DnsName mitienda.com -Type TXT -Server ana.ns.cloudflare.com
Resolve-DnsName _dmarc.mitienda.com -Type TXT -Server ana.ns.cloudflare.com
# Ignorar el archivo hosts y la caché local
Resolve-DnsName mitienda.com -Type A -DnsOnly -NoHostsFiletxt
nslookup clásico (Windows, Mac y Linux):
nslookup -type=MX mitienda.com 1.1.1.1
nslookup -type=TXT _dmarc.mitienda.com 1.1.1.1Cómo interpretar la respuesta de dig mitienda.com A:
| Respuesta | Interpretación |
|---|---|
104.21.x.x / 172.67.x.x | Registro en naranja (IPs de Cloudflare). Normal para la web. |
203.0.113.10 | Registro en gris o sin Cloudflare: es la IP real. |
Vacío, status: NOERROR | El nombre existe pero no tiene registro de ese tipo. |
status: NXDOMAIN | El nombre no existe en la zona (o el dominio no existe). |
status: SERVFAIL | El servidor no pudo responder: DNSSEC roto, nameservers que no responden o mal delegados. |
Herramienta interactiva: puedes hacer estas mismas consultas desde el navegador en el consultor DNS en vivo.
Pregunta 3: ¿qué responde el servidor?
curl -I: las cabeceras lo cuentan todo
bash
curl -sI https://mitienda.comtxt
HTTP/2 200
date: Mon, 02 Nov 2026 18:20:11 GMT
content-type: text/html; charset=UTF-8
server: cloudflare ← pasó por Cloudflare (naranja)
cf-ray: 8d1f2a3b4c5d6e7f-QRO ← ID de la petición + centro de datos (QRO = Querétaro)
cf-cache-status: DYNAMIC ← no cacheado (HTML)bash
# Seguir toda la cadena de redirecciones (detecta bucles y saltos raros)
curl -sIL http://www.mitienda.com | grep -iE "^HTTP|^location"
# Saltarte Cloudflare y preguntarle DIRECTO al origen, conservando el nombre del dominio
curl -sI --resolve mitienda.com:443:203.0.113.10 https://mitienda.com
curl -sI --resolve mitienda.com:80:203.0.113.10 http://mitienda.com
# Ver el certificado y la negociación TLS en detalle
curl -vI https://mitienda.com 2>&1 | grep -iE "subject|issuer|expire|SSL connection"curl en Windows PowerShell
En Windows PowerShell 5.1, curl es un alias de Invoke-WebRequest y los parámetros no funcionan igual. Escribe curl.exe (viene incluido en Windows 10/11): curl.exe -sI https://mitienda.com.
¿El servidor de correo responde?
bash
# ¿Están abiertos los puertos de correo? (Linux/Mac)
nc -vz mail.mitienda.com 25
nc -vz mail.mitienda.com 587
nc -vz mail.mitienda.com 993powershell
Test-NetConnection mail.mitienda.com -Port 587
Test-NetConnection mail.mitienda.com -Port 993Si fallan y mail.mitienda.com resuelve a una IP de Cloudflare, ya encontraste el problema: está en naranja. (Ojo: muchos proveedores de internet domésticos bloquean el puerto 25 de salida; prueba el 587 y el 993.)
Limpiar cachés
Cuando la zona ya está bien pero "en mi compu sigue igual", es caché. Límpiala de adentro hacia afuera:
| Dónde | Cómo |
|---|---|
| Windows | ipconfig /flushdns (o en PowerShell Clear-DnsClientCache). Ver lo cacheado: ipconfig /displaydns. |
| Mac | sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder |
| Linux (systemd) | resolvectl flush-caches |
| Chrome / Edge | Abre chrome://net-internals/#dns → Clear host cache; luego chrome://net-internals/#sockets → Flush socket pools. En Edge: edge://net-internals/#dns. |
| Firefox | about:networking#dns → Clear DNS Cache. |
| Celular | Activa y desactiva el modo avión, o cambia de WiFi a datos. |
| Router / proveedor de internet | No se pueden limpiar: espera el TTL o cambia temporalmente el DNS de tu equipo a 1.1.1.1 u 8.8.8.8. |
| Archivo hosts | Revisa que no quedaron líneas de pruebas: Windows C:\Windows\System32\drivers\etc\hosts, Mac/Linux /etc/hosts. |
| Cloudflare | Caching → Configuration → Purge Cache (para archivos, no para DNS). |
| Navegador (archivos) | Ventana de incógnito o Ctrl + Shift + R (recarga sin caché). |
Buena práctica: prueba primero en incógnito y con datos móviles
Si en incógnito y desde el celular con datos móviles el sitio funciona, el problema está en tu equipo o red, no en el dominio. Te ahorra horas.
Herramientas en línea
| Herramienta | Para qué |
|---|---|
| whatsmydns.net | Ver qué responde un registro desde decenas de países. Ideal para "¿ya propagó?". |
| dnschecker.org | Similar, con más tipos de registro y herramientas extra (consulta DKIM, SPF). |
| MXToolbox (mxtoolbox.com) | MX, SPF, DKIM, DMARC, listas negras (Blacklist Check), prueba SMTP y análisis de cabeceras de correo. |
| mail-tester.com | Te da una dirección; le mandas un correo y te califica de 0 a 10 explicando qué falla (SPF, DKIM, DMARC, contenido, listas negras). |
| Google Admin Toolbox (toolbox.googleapps.com) | CheckMX: revisa la configuración de correo de un dominio de Google Workspace. Messageheader: analiza cabeceras. Dig: consultas DNS. |
| SSL Labs (ssllabs.com/ssltest) | Califica el HTTPS (A+ a F), cadena del certificado, protocolos. Con Cloudflare, califica el tramo visitante↔Cloudflare. |
| intoDNS (intodns.com) | Revisión general de salud del DNS: nameservers, SOA, MX, consistencia. |
| DNSViz (dnsviz.net) | Diagnóstico visual de DNSSEC (para los SERVFAIL misteriosos). |
| Consultor DNS de Academia Web | /dominios/herramientas: consultas en vivo y generador de SPF/DMARC. |
Tabla de errores del navegador y DNS
| Error | Qué significa | Causas típicas | Solución |
|---|---|---|---|
| DNS_PROBE_FINISHED_NXDOMAIN | El DNS dice que el nombre no existe | Dominio vencido o suspendido (clientHold); nameservers equivocados; falta el registro (www o el subdominio); error de dedo; zona en Cloudflare aún Pending con NS cambiados a medias | whois (estado y vencimiento), dig NS, dig directo al autoritativo; crea el registro faltante; renueva el dominio |
| ERR_NAME_NOT_RESOLVED | No se pudo resolver el nombre | Igual que NXDOMAIN, o el resolver falló (SERVFAIL por DNSSEC roto tras cambiar NS), caché negativa, problema de red local | dig mitienda.com (mira el status), revisa DS en el registrador con DNSViz; limpia caché; prueba con 1.1.1.1 |
| DNS_PROBE_FINISHED_NO_INTERNET | Tu equipo no tiene conexión | Red local | Revisa tu conexión, no el dominio |
| ERR_CONNECTION_REFUSED | Hay IP, pero nadie atiende el puerto | Registro en gris a un servidor sin web en 80/443; servidor apagado | Revisa la IP del registro A; estado del servidor |
| ERR_CONNECTION_TIMED_OUT | La IP no responde | IP equivocada (hosting viejo), firewall | dig + curl --resolve; corrige la IP |
| ERR_TOO_MANY_REDIRECTS | Bucle de redirecciones | SSL Flexible + HTTPS forzado; .htaccess y Redirect Rules en sentidos opuestos (www ↔ sin www) | Full (strict); curl -sIL para ver la cadena; deja una sola regla canónica |
| "No es seguro" / NET::ERR_CERT_... | Problema de certificado o contenido mixto | Registro en gris sin certificado, certificado vencido, nombre no cubierto, recursos http:// | Ver SSL sin pagar: naranja, AutoSSL, contenido mixto |
| El sitio muestra el sitio viejo | Algo apunta al servidor anterior | Ver sección dedicada abajo | Ver sección dedicada abajo |
Tabla de errores de Cloudflare
Las páginas de error de Cloudflare muestran un diagrama "Navegador — Cloudflare — Servidor" marcando en rojo dónde está la falla. Léelo: si el rojo está en "Host" (tu servidor), el problema no es Cloudflare.
| Código | Nombre | Qué pasó | Causas típicas | Solución |
|---|---|---|---|---|
| 520 | Web server returns an unknown error | El origen respondió algo vacío o inválido | PHP que se cae (fatal error), cabeceras demasiado grandes (cookies enormes), conexión cortada por el servidor | Revisa logs de error (cPanel → Errores), prueba con curl --resolve, reduce cookies |
| 521 | Web server is down | El origen rechazó la conexión | Apache/Nginx caído; el firewall del hosting (CSF, ModSecurity, fail2ban) bloquea las IPs de Cloudflare | Levanta el servicio; pide al hosting que permita los rangos de cloudflare.com/ips |
| 522 | Connection timed out | No se completó la conexión TCP con el origen | IP equivocada en el registro A, firewall que descarta paquetes, servidor saturado | Verifica la IP en DNS; curl --resolve; revisa carga del servidor |
| 523 | Origin is unreachable | Cloudflare no encuentra ruta hacia el origen | IP inexistente, privada (192.168.x.x) o mal escrita | Corrige el registro A/AAAA |
| 524 | A timeout occurred | Conectó, pero el origen tardó más de 100 segundos en responder | Reporte o importación pesada, consulta lenta a la BD | Optimiza o haz el proceso en segundo plano (cola); para tareas largas usa un subdominio en gris |
| 525 | SSL handshake failed | No se pudo negociar TLS con el origen (Full/Full strict) | Sin certificado en el 443, puerto 443 sin HTTPS, configuración SSL rota | Instala AutoSSL u Origin Certificate; openssl s_client a la IP de origen |
| 526 | Invalid SSL certificate | En Full (strict), el certificado del origen no es válido | Vencido, autofirmado, sin el nombre (www), cadena incompleta | AutoSSL / Let's Encrypt / Origin Certificate que cubra los nombres |
| 1000 | DNS points to prohibited IP | El registro apunta a una IP de Cloudflare | Alguien copió la IP que salía en dig (de Cloudflare) como si fuera la del hosting | Pon la IP real del origen (cPanel → panel derecho "IP compartida/dedicada") |
| 1001 | DNS resolution error | Cloudflare no sabe qué hacer con ese nombre | Dominio recién agregado (no Active); CNAME hacia un dominio en Cloudflare que no está configurado para recibirlo | Espera Active; revisa el CNAME o configura el dominio destino (ej. Custom Hostnames) |
| 1016 | Origin DNS error | El destino de un CNAME no resuelve | CNAME www → mitienda.com.mx mal escrito; CNAME a una app/servicio que ya no existe | Corrige el CNAME; verifica con dig que el destino resuelva |
| 1020 | Access denied | Te bloqueó una regla WAF | Regla de país, IP o ruta demasiado agresiva | Security → Events, busca el Ray ID y ajusta la regla |
El Ray ID es tu mejor pista
Toda página de error de Cloudflare muestra un Ray ID (como el cf-ray de las cabeceras). Búscalo en Security → Events para ver exactamente qué regla o qué problema lo causó. Si escribes a soporte del hosting, incluye el código de error, el Ray ID y la hora.
Correo: los problemas más comunes
Correos que no llegan (no recibes)
txt
1. dig MX mitienda.com +short → ¿apunta al proveedor correcto? ¿hay MX viejos mezclados?
2. dig A mail.mitienda.com +short → ¿IP real (gris)? Si sale 104.21.x.x / 172.67.x.x: está en NARANJA.
3. Test-NetConnection mail.mitienda.com -Port 25 (desde un servidor, no desde casa)
4. cPanel → Email Routing → "Local" si el correo vive en cPanel, "Remote" si es Google/Zoho/M365.
5. ¿Buzón lleno? cPanel → Cuentas de correo → cuota.
6. Pide al remitente el mensaje de rebote completo.Correos que caen en spam
- Envía un correo a mail-tester.com y lee el informe.
- En Gmail abre el mensaje → menú ⋮ → Mostrar original. Arriba verás:
txt
SPF: PASS with IP 203.0.113.10
DKIM: 'PASS' with domain mitienda.com
DMARC: 'PASS'Si alguno dice FAIL, NEUTRAL, SOFTFAIL o no aparece, ahí está el problema:
| Resultado | Causa probable | Lección |
|---|---|---|
| SPF fail/softfail | La IP que envía no está en el SPF; +a con nube naranja; dos registros SPF | SPF |
| DKIM ausente o fail | No se publicó el TXT del selector; clave del servidor viejo tras migrar; registro cortado | DKIM |
| DMARC fail | Ni SPF ni DKIM alineados con el dominio del remitente | DMARC |
| Todo PASS pero spam | IP en lista negra (MXToolbox Blacklist), contenido tipo spam, dominio nuevo sin reputación, envíos masivos sin baja | Calienta el envío; usa un servicio transaccional |
Correos rebotados
| Mensaje de rebote (fragmento) | Significado | Solución |
|---|---|---|
550 5.7.1 ... SPF fail / Sender policy framework | El receptor revisó tu SPF y la IP no está autorizada | Agrega la IP o el include: del proveedor que envía |
550-5.7.26 ... unauthenticated (Gmail) | Falla SPF/DKIM/DMARC; Gmail exige autenticación | Configura SPF + DKIM + DMARC alineados |
550 5.7.1 ... DMARC policy | Tu propio DMARC (p=reject) pidió rechazarlo | Arregla SPF/DKIM antes de endurecer DMARC |
550 5.1.1 User unknown / No such user | El buzón no existe | Revisa la dirección o crea la cuenta |
552 5.2.2 Mailbox full | Buzón lleno | Libera espacio o sube la cuota |
554 ... listed in / blocked using (Spamhaus, etc.) | La IP de envío está en lista negra | MXToolbox Blacklist; pide al hosting cambiar la IP de salida o solicita la baja |
421 ... try again later | Rechazo temporal (limitación de velocidad) | El servidor reintentará; si persiste, revisa reputación |
"El sitio muestra el sitio viejo"
Uno de los reportes más frecuentes después de una migración. Revisa en este orden:
txt
□ ¿Los NS ya son los de Cloudflare? dig NS mitienda.com @a.gtld-servers.net
(si sigue Pending, la zona VIEJA del hosting responde en parte del mundo)
□ ¿El registro A apunta a la IP nueva? dig A mitienda.com @ana.ns.cloudflare.com
□ ¿Hay un AAAA (IPv6) que apunta al servidor viejo? ← la causa escondida más común
dig AAAA mitienda.com @ana.ns.cloudflare.com
(los equipos con IPv6 prefieren AAAA: a unos les sale el sitio nuevo y a otros el viejo)
□ ¿Quedó una línea en el archivo hosts?
□ ¿Caché de Cloudflare? (cf-cache-status: HIT) → Purge Cache
□ ¿Caché del navegador o de un plugin de caché de WordPress? → incógnito / vaciar caché del plugin
□ ¿El hosting nuevo tiene el dominio agregado? (si no, muestra la página por defecto del servidor)
□ Registro gris con TTL alto → esperar el TTL o haberlo bajado antesCaso real: de "no funciona" a resuelto en 10 minutos
"Moví mi dominio a Cloudflare y ahora la página dice demasiados redireccionamientos y no me llegan correos."
bash
# 1) ¿Quién manda?
dig +short NS mitienda.com
# ana.ns.cloudflare.com. bob.ns.cloudflare.com. → Cloudflare. Bien.
# 2) ¿Qué dice la zona?
dig +short mitienda.com @ana.ns.cloudflare.com # 104.21.45.12 (naranja) → bien
dig +short MX mitienda.com @ana.ns.cloudflare.com # 0 mail.mitienda.com. → bien
dig +short mail.mitienda.com @ana.ns.cloudflare.com # 172.67.180.3 → ¡MAL! mail está en naranja
# 3) ¿Qué responde el servidor?
curl -sIL https://mitienda.com | grep -iE "^HTTP|^location"
# HTTP/2 301 location: https://mitienda.com/
# HTTP/2 301 location: https://mitienda.com/ ... (bucle)
curl -sI --resolve mitienda.com:443:203.0.113.10 https://mitienda.com
# HTTP/1.1 200 OK → el origen sí tiene HTTPS válidoDiagnóstico: SSL en Flexible (bucle) y mail en naranja (correo). Solución: SSL/TLS → Full (strict); DNS → mail en gris. Dos clics, y ahora sabes por qué.
Ejercicios
- Escribe los comandos (Linux/Mac y Windows) para comprobar: qué NS tiene
mitienda.comsegún el TLD, y qué registro MX responde directamenteana.ns.cloudflare.com. - Un cliente ve error 522 en todo el sitio desde ayer. El hosting dice "no hicimos nada". ¿Qué tres cosas compruebas?
- Después de migrar, en tu laptop ves el sitio nuevo, pero el cliente (con internet de fibra con IPv6) ve el viejo. ¿Cuál es la causa más probable y con qué comando la confirmas?
- Un correo de
ventas@mitienda.coma Gmail rebota con550-5.7.26. El SPF esv=spf1 +a +mx ~ally@está en naranja. Explica y corrige. - Te llega un error 1000 en un subdominio nuevo
promo.mitienda.com. El registro esA promo 104.21.45.12. ¿Qué pasó?
Ver solución
bash
dig NS mitienda.com @a.gtld-servers.net
dig MX mitienda.com @ana.ns.cloudflare.com +shortpowershell
Resolve-DnsName mitienda.com -Type NS -Server a.gtld-servers.net
Resolve-DnsName mitienda.com -Type MX -Server ana.ns.cloudflare.com- (1) Que el registro A en Cloudflare tenga la IP correcta del hosting (
digal autoritativo y compararla con la de cPanel; quizá el hosting cambió la IP del servidor). (2) Que el origen responda directo:curl -sI --resolve mitienda.com:443:203.0.113.10 https://mitienda.com. (3) Que el firewall del hosting no esté bloqueando o descartando las IPs de Cloudflare, y que el servidor no esté saturado. - Un registro AAAA que sigue apuntando al servidor viejo. Confirmar:
dig AAAA mitienda.com @ana.ns.cloudflare.com +short. Solución: borrarlo o actualizarlo. +aautoriza las IPs del registro A demitienda.com, que con nube naranja son de Cloudflare; el correo sale de203.0.113.10, así que SPF falla y, sin DKIM, Gmail lo rechaza. Corrección:v=spf1 ip4:203.0.113.10 mx ~all, publicar el DKIM de cPanel y un DMARCp=nonepara empezar.104.21.45.12es una IP de Cloudflare (alguien copió lo que devolvíadig mitienda.com). Cloudflare no puede usarse a sí mismo como origen. Pon la IP real:A promo 203.0.113.10.
Resumen
- Método: 1) nameservers activos → 2) zona → 3) servidor, y al final las cachés.
dig/Resolve-DnsName/nslookuppreguntando directo al autoritativo dicen la verdad sin caché.curl -sIrevela si pasas por Cloudflare;curl --resolveprueba el origen saltándote Cloudflare. En Windows usacurl.exe.- Limpia cachés:
ipconfig /flushdns,chrome://net-internals/#dns, archivo hosts, Purge Cache. - 52x = problema entre Cloudflare y tu servidor; 10xx = configuración DNS/reglas en Cloudflare.
- Correo: revisa MX,
mailen gris, Email Routing en cPanel, ySPF/DKIM/DMARC = PASSen "Mostrar original". - "Sitio viejo": NS pendientes, A o AAAA viejos, hosts, cachés.
- Siguiente: Proyecto: cliente completo.