Tutorial

Rollover de la KSK raíz de DNSSEC: revise su resolver

Seguridad y monitorización12 min de lectura14 pasos

Desde el 11 de octubre de 2026, la zona raíz del DNS está firmada por una nueva clave, KSK-2024, con key tag 38696. Un resolver validador que no conoce esta clave ya no puede construir la cadena de confianza DNSSEC: responde SERVFAIL, incluso para nombres que funcionan en otros sitios, y la avería parece un corte de red. Esta guía muestra cómo comprobar en diez minutos el ancla de confianza de Unbound, BIND, Knot Resolver, systemd-resolved y dnsmasq, demostrarlo con `dig` y `delv`, y después corregirlo.

Contenido· Qué cambió el 11 de octubre de 20261/12
  1. 01Qué cambió el 11 de octubre de 2026
  2. 02Lo que hay que recordar
  3. 03Propietario de dominio o administrador de servidor: quién debe actuar
  4. 04Requisitos previos del diagnóstico
  5. 05Diagnosticar su resolver en siete pasos
  6. 06Dónde vive el ancla de confianza, resolver por resolver
  7. 07Corregir según su resolver
  8. 08Después de la corrección: qué vigilar
  9. 09No desactive la validación para silenciar el error
  10. 10Solución de problemas: los mensajes que verá
  11. 11Mensajes de error y soluciones
  12. 12En resumen

Qué cambió el 11 de octubre de 2026

DNSSEC se apoya en una única raíz de confianza: la clave de firma de claves (KSK) de la zona raíz. Cada resolver validador guarda una copia local, llamada ancla de confianza, y verifica todo lo demás a partir de ella. Según IANA, KSK-2024 (key tag 38696) se publicó en la zona raíz el 11 de enero de 2025 y empezó a firmar la raíz el 11 de octubre de 2026, en lugar de KSK-2017 (key tag 20326).

El 15 de octubre de 2026, ICANN anunció que el cambio de clave había concluido según lo previsto. El anuncio menciona informes que afectan a un número limitado de sistemas y precisa que ICANN aún evalúa si están relacionados con el cambio: no da ni cifra ni causa, y esta guía tampoco las sugiere. El calendario no ha terminado: IANA prevé revocar KSK-2017 el 11 de enero de 2027 y retirarla de la zona el 22 de marzo de 2027.

Lo que hay que recordar

  • La clave que buscar — KSK-2024, key tag 38696, algoritmo 8 (RSA/SHA-256). La anterior, KSK-2017, tiene el key tag 20326.
  • El síntoma — un resolver que solo confía en 20326 ya no puede validar la raíz. Verisign e ICANN advierten que entonces deja de resolver, esté firmado o no el nombre solicitado.
  • El mecanismo normal — el RFC 5011 permite a un resolver adoptar por sí solo una nueva clave tras observarla 30 días, siempre que esté en marcha y pueda escribir su archivo de ancla.
  • Los casos de riesgo — una imagen de sistema o una instantánea más antigua que la clave, un archivo de ancla de solo lectura, un ancla estática en dnsmasq o en BIND.
  • Lo que no cambia — el registro DS de su dominio en el registro: el cambio afecta a la clave de la raíz, no a la de su zona.
  • Lo que viene — revocación de KSK-2017 prevista para el 11 de enero de 2027, retirada el 22 de marzo de 2027. Un resolver que ya confía en 38696 valida la raíz firmada con esa clave.

Propietario de dominio o administrador de servidor: quién debe actuar

Dos funciones se confunden a menudo en los tickets. El propietario de un dominio firmado publica un registro DS en el registro, que designa la clave de SU zona. Ese DS no depende de la clave de la raíz: no hay nada que cambiar por este rollover, ni en la zona de example.com ni en su registrador. Si solo gestiona sus registros (consulte añadir un registro DNS), no le afecta.

Al administrador de un servidor que ejecuta un resolver validador, sí. Unbound detrás de un servidor de correo, BIND en un servidor de supervisión, Knot Resolver en un contenedor, systemd-resolved con DNSSEC activado, dnsmasq o Pi-hole con la validación activada: cada uno lleva su propia ancla. En un VPS con acceso root, ese administrador es usted. Un servidor que simplemente reenvía sus consultas a un resolver público sin validar depende del ancla de ese resolver, no de la suya.

Requisitos previos del diagnóstico

Reserve diez minutos y acceso root o sudo al servidor. Bastan dos herramientas: dig y delv, incluidas en Debian y Ubuntu en el paquete bind9-dnsutils (sudo apt install bind9-dnsutils), y en AlmaLinux o Rocky Linux en bind-utils. No se necesitan recursos particulares: las consultas pesan unos pocos kilobytes.

Anote la dirección de escucha de su resolver, normalmente 127.0.0.1, o 127.0.0.53 para systemd-resolved, y tenga a mano la dirección de un resolver público validador para comparar, por ejemplo 9.9.9.9. Las salidas descritas a continuación son ejemplos de forma, no mediciones de su servidor: solo cuentan los campos nombrados. Las pruebas apuntan a la raíz y a com., dos zonas firmadas, así que no dependen de ningún dominio concreto.

Diagnosticar su resolver en siete pasos

  1. Identificar el resolver que responde

    cat /etc/resolv.conf muestra la dirección que consulta el sistema, resolvectl status indica si systemd-resolved se interpone, y sudo ss -lunp 'sport = :53' nombra el proceso que escucha en el puerto 53: unbound, named, kresd, dnsmasq o pihole-FTL. Ese es el proceso que va a examinar.

  2. Consultar la raíz con dig +dnssec

    Ejecute dig +dnssec . SOA @127.0.0.1 y después dig +dnssec com. SOA @127.0.0.1. Fíjese en dos campos de la cabecera: status: y flags:. Un status: NOERROR con la bandera ad significa que la respuesta se ha validado. Un status: SERVFAIL en la propia raíz es la señal más clara de un ancla obsoleta.

  3. Aislar la validación con +cd

    dig +dnssec +cd com. SOA @127.0.0.1 pide al resolver que responda sin validar (checking disabled). Si esta consulta devuelve NOERROR mientras la anterior falla con SERVFAIL, la red y los servidores superiores funcionan: lo que bloquea es la validación DNSSEC, es decir, el ancla o el reloj.

  4. Comparar con un resolver público validador

    dig +dnssec com. SOA @9.9.9.9 debe responder NOERROR con ad. Si el resolver público valida y el suyo no, el problema es local. Compruebe de paso la hora del servidor con timedatectl: un reloj desfasado también hace fallar la verificación de las firmas y produce el mismo SERVFAIL.

  5. Ver qué clave firma la raíz

    dig +dnssec +multi . DNSKEY @9.9.9.9 muestra las claves publicadas. Las de flag 257 son las KSK; con +multi, dig añade su key id como comentario. En la fase actual, KSK-2017 sigue publicada, pero la firma (RRSIG) del conjunto de claves lleva el key tag 38696: esa es la clave que su ancla debe conocer.

  6. Leer el ancla realmente cargada

    Unbound: sudo grep 'id = 38696' /var/lib/unbound/root.key (ruta de Debian; en otros sistemas, unbound-checkconf -o auto-trust-anchor-file da la suya) debe devolver una línea marcada VALID. BIND: sudo rndc secroots - debe listar ./RSASHA256/38696 ; managed, y sudo rndc managed-keys status una entrada keyid: 38696 seguida de trusted since. Knot Resolver: llame a trust_anchors.summary() desde su consola de control. dnsmasq: busque una línea trust-anchor=.,38696,8,2,… en la configuración cargada.

  7. Confirmar con delv

    delv @127.0.0.1 com. SOA valida la respuesta por sí mismo y muestra ; fully validated cuando la cadena está completa. Atención: delv usa el ancla compilada en su propio binario, no la de su resolver. Un delv antiguo puede, por tanto, fallar por su cuenta: actualice el paquete antes de sacar conclusiones sobre el resolver.

Dónde vive el ancla de confianza, resolver por resolver

Desplace la tabla

ResolverDónde mirarActualización de la clave
UnboundDirectiva `auto-trust-anchor-file` (Debian: `/var/lib/unbound/root.key`)RFC 5011 si el archivo y su directorio admiten escritura; si no, `unbound-anchor`
BIND`rndc secroots -` y `managed-keys.bind`; ancla integrada con `dnssec-validation auto`RFC 5011 con `auto`, `initial-key` o `initial-ds`; ninguna con `static-key`
Knot Resolver`trust_anchors.add_file()` en v5, `dnssec/trust-anchors-files` en v6RFC 5011, salvo si el archivo se declara de solo lectura
systemd-resolvedAncla integrada en el binario; archivos `*.positive` de `/etc/dnssec-trust-anchors.d/`Ninguna por DNS: hace falta un paquete systemd actualizado
dnsmasqLíneas `trust-anchor=` de la configuración cargadaNinguna: línea estática que se edita a mano
Pi-hole v6`/etc/pihole/dnsmasq.conf`, generado por FTLReescrito por FTL, que inscribe las claves 20326 y 38696
delv (herramienta)Ancla compilada en el binarioActualización del paquete que lo proporciona

Corregir según su resolver

  1. Unbound: refrescar el ancla

    Actualice primero el sistema (sudo apt update && sudo apt upgrade). En Debian, el paquete dns-root-data proporciona /usr/share/dns/root.key, y el script de arranque de Unbound copia ese archivo a /var/lib/unbound/root.key cuando es más reciente; la versión 2024071801~deb12u1 publicada para Debian 12 ya contiene KSK-2024. Después fuerce la comprobación con sudo -u unbound unbound-anchor -a /var/lib/unbound/root.key -v y sudo systemctl restart unbound. La clave integrada en unbound-anchor incluye KSK-2024 desde Unbound 1.21.0.

  2. Unbound: hacer posible el RFC 5011

    Si la clave sigue faltando, compruebe que el usuario unbound puede escribir el archivo Y su directorio: la documentación lo exige para crear un archivo temporal. ls -ld /var/lib/unbound /var/lib/unbound/root.key basta para verlo. Un archivo montado en solo lectura en un contenedor bloquea la actualización automática sin ningún error visible para el cliente.

  3. BIND: auto o ancla declarada

    Con dnssec-validation auto;, BIND parte del ancla incluida en el software y la mantiene al día mediante el RFC 5011 en managed-keys.bind. Actualice el paquete, compruebe que named puede escribir en managed-keys-directory y ejecute sudo rndc managed-keys refresh. Con dnssec-validation yes; y un ancla declarada a mano, añada al bloque trust-anchors la línea . initial-ds 38696 8 2 "683D2D0ACB8C9B712A1948B27F741219298D0A450D612C483AF444A4C0FB2B16"; y retire cualquier ancla static-key que solo conozca 20326.

  4. Knot Resolver: revisar el archivo de ancla

    Actualice el paquete y mire cómo se declara el archivo de ancla. Si es de solo lectura (segundo argumento true de trust_anchors.add_file() en v5, read-only: true en v6), el resolver nunca lo modifica: es el paquete de su distribución el que debe aportar la clave. Si no, compruebe que kresd puede escribir el archivo. La documentación indica que, si el archivo no existe, el resolver intenta inicializar por sí mismo el ancla de la raíz.

  5. systemd-resolved: actualizar systemd

    systemd-resolved no actualiza su ancla por DNS: solo una actualización del paquete aporta la nueva clave. El código original la integra, en particular desde systemd 256.12 y 257.4, y el paquete systemd-resolved actual de Debian 12 también la contiene. Revise /etc/dnssec-trust-anchors.d/: un archivo *.positive que declara una clave raíz desactiva el ancla integrada. Elimínelo o añádale la clave 38696, y después ejecute sudo systemctl restart systemd-resolved y resolvectl flush-caches.

  6. dnsmasq: añadir la línea estática

    dnsmasq no aplica el RFC 5011: el ancla es una línea fija. Añada trust-anchor=.,38696,8,2,683D2D0ACB8C9B712A1948B27F741219298D0A450D612C483AF444A4C0FB2B16 junto a la línea 20326 y reinicie el servicio. En Debian 12, el archivo /usr/share/dnsmasq-base/trust-anchors.conf del paquete dnsmasq-base 2.90-4~deb12u2 solo contiene la clave 20326, mientras que el de Debian 13 contiene las dos: compruebe qué archivo carga realmente su configuración. Pi-hole v6 escribe él mismo las dos líneas en /etc/pihole/dnsmasq.conf cuando la validación DNSSEC está activada.

  7. Automatizar para la próxima vez

    Un ancla solo caduca en un servidor que ha dejado de actualizarse. Active las actualizaciones automáticas de seguridad de los paquetes de resolver (consulte actualizaciones automáticas en Debian y Ubuntu) y añada a su supervisión una sonda dig +dnssec com. SOA @127.0.0.1 que alerte ante un SERVFAIL. Si su DNS local pasa por Pi-hole, la guía Pi-hole v6 en un VPS muestra cómo colocar Unbound por encima.

Después de la corrección: qué vigilar

Una vez que la bandera ad vuelve a las respuestas, tres puntos merecen una comprobación.

Primero, las imágenes y las instantáneas. Una máquina restaurada desde una copia de seguridad antigua arranca con el archivo de ancla de entonces. Si ese archivo solo conoce 20326, el RFC 5011 ya no puede ponerlo al día: solo acepta una nueva clave si el conjunto de claves está firmado por una clave ya aprobada, y la raíz ya no está firmada por 20326. Hay que refrescar el ancla a mano, como se indica más arriba.

Después, las imágenes de contenedores. Una imagen construida con un ancla estática la conserva en cada redespliegue: reconstrúyala a partir de una base actualizada.

Por último, la revocación. El 11 de enero de 2027 está previsto publicar KSK-2017 con el bit de revocación. Un resolver que sigue el RFC 5011 la marcará como revocada: en el archivo de Unbound, la línea 20326 pasará al estado REVOKED. Es el estado esperado, no una avería.

No desactive la validación para silenciar el error

Pasar a dnssec-validation no, val-permissive-mode: yes o DNSSEC=no hace desaparecer el SERVFAIL, pero también elimina toda protección contra respuestas falsificadas. Corrija el ancla y después pruebe. No pegue nunca una clave encontrada en un foro: la fuente de referencia es https://data.iana.org/root-anchors/root-anchors.xml, cuya firma se verifica con root-anchors.p7s e icannbundle.pem, publicados en el mismo lugar por IANA. El resumen SHA-256 de KSK-2024 figura allí: 683D2D0ACB8C9B712A1948B27F741219298D0A450D612C483AF444A4C0FB2B16.

Solución de problemas: los mensajes que verá

Los mensajes siguientes proceden del código fuente o de la documentación de los programas afectados. Permiten distinguir un ancla obsoleta de un problema de red, de un reloj desfasado o de una herramienta de diagnóstico demasiado antigua. En Unbound, aumente primero el detalle de los registros con val-log-level: 2 en la sección server: y reinicie: cada consulta rechazada quedará registrada con su motivo y el servidor que proporcionó el dato erróneo.

Mensajes de error y soluciones

  • failed to prime trust anchor -- DNSKEY rrset is not secure (registro de Unbound, seguido de . DNSKEY IN) — Unbound obtuvo las claves de la raíz pero no pudo validarlas con su ancla: ancla obsoleta o reloj incorrecto. Refresque root.key.
  • failed to prime trust anchor -- could not fetch DNSKEY rrset — Unbound ni siquiera obtiene las claves de la raíz: red, cortafuegos o fragmentación UDP, no el ancla. Pruebe dig +dnssec . DNSKEY contra el servidor superior.
  • status: SERVFAIL con +dnssec, NOERROR con +cd — la firma de un fallo de validación. Con ede: yes en Unbound, el cliente recibe además un código de error extendido (RFC 8914).
  • resolution failed: broken trust chain o no valid RRSIG (delv) — delv no pudo remontar hasta un ancla válida. Compruebe primero que delv está actualizado.
  • ; initializing managed en rndc secroots - — BIND conoce la clave pero nunca la confirmó con una consulta de actualización. Ejecute rndc managed-keys refresh y revise los permisos de managed-keys-directory.
  • unbound-anchor termina con el código 0 sin cambiar nada — según su página de manual, 0 significa tanto «no hacía falta actualizar» como «error». Vuelva a ejecutarlo con -v y relea el archivo.

En resumen

El cambio de clave de la raíz no exige nada a los propietarios de dominios, ni a los servidores cuyos paquetes siguen las actualizaciones. Penaliza a los resolvers congelados: una imagen antigua, un archivo de ancla sin permiso de escritura, un ancla estática en dnsmasq o BIND. Tres acciones bastan para decidir: dig +dnssec com. SOA contra su resolver, la misma consulta con +cd y la lectura del ancla cargada. Tenga presente la fecha del 11 de enero de 2027: la revocación de KSK-2017 aparecerá en sus archivos de ancla, y es un estado esperado. En un servidor con acceso root, esta comprobación lleva diez minutos y se programa de una vez por todas en su supervisión.

Su resolver, su ancla de confianza

En un VPS ServOrbit.com, usted dispone de acceso root: elige su sistema, actualiza sus paquetes de resolver cuando lo decide y lee usted mismo los registros de validación. Si prefiere no ocuparse de ello, existe la opción de administración del VPS.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva