Sistemas

DNS: cambios masivos en las zonas con WHM/Cpanel

Uno de los handicaps de WHM/CPanel es que no provee de mecanismos adecuados para los cambios masivos (bulk update DNS) en las zonas DNS salvo los relativos a los tiempos de vida. Algunas veces necesitamos cambiar de forma masiva todos los dominios a un nuevos nameservers, añadir algunas cuestiones, etc, y muchos lo hacen con scripts, pero sin modificar el Serial Number de la zona.

Número de Serie en zonas DNS

El serial number es en el archivo de zona, es el que indica al servidor si debe recargar o mejor dicho comprobar, la zona respecto a los datos que ya tiene, por si este se hubiera actualizado. Por tanto, la recomendación técnica, es que los administradores de sistemas, deben actualizar dicho número en cada cambio efectuado en una zona.

Como norma general este número es el timestamp en formato ISO al que se añaden dos dígitos de incremento o serie

2017011801  #18 de Enero de 2017. Primer cambio del día

Escenario: Cambiar los servidores de nombre de todos los dominios

En este ejemplo práctico, muy habitual, queremos cambiar los nameservers de todos los dominios de nuestra máquina

Hacer una copia de seguridad

cp -rpf /var/named /var/named.backup

Actualizar los nameserver en toda los ficheros de zona

Usaremos la herramienta replace de mysql, que se incluye en todos los servidores que tienen MySQL (o forks como MariaDB), que es sencilla y eficaz para este propósito.

replace "oldprimary.nameserver.net" "newprimary.nameserever.com" -- /var/named/*.db

Actualizar el número de serie en todas las zonas

ATENCION: es importante que trate de comprender cada uno de los comandos que se ejecutan, y por supuestos que halla realizado la copia de seguridad. Ejecútelo bajo su responsabilidad

grep "Serial Number" /var/named/*.db | sed "s/://g"| cut -d/ -f4|awk {'system("replace "$2" "strftime("%Y%m%d")"00 -- "$1)'}

Algunos ficheros de Zona antiguos, pueden diferir, y la linea del serial a buscar sería «serial, todays»  en lugar de «Serial number»

Usando la API de WHM/Cpanel

Me hubiera gustado usar la API de WHM, ciertamente el tiempo dedicado a crear un script haciendo uso de una API por lo complejo de su uso, pero te dejo unas lineas de actuación

Primero obtener los datos cada zona

Documentación Cpanel listzones

whmapi0 listzones --output=json

Después de cada zona obtener el dump

Esto es necesario porque el comando de edición de la api, están interesante que requiere que le pasemos la linea a modificar. Todo un lujo para una api. Dumpzone API Command

whmapi0 dumpzone domain=example.com

Después editar la zona

Aqui, como la api no permite la edición del Serial Number (un olvido muy feo) deberemos hacer un truco, como editar alguna valor y luego devolverlo, o bien hacer un cambio mínimo como cambiar el TTL de una registro por un valor proximo y valido

En nuestro ejemplo, la linea 15 es el valor obtenido del json para ese dominio, que contiene una clase IN, con un TYPE A, y un TTL 1200 que vamos a cambiar a 1201

whmapi0 editzonerecord domain=example.com line=15 name=example.com  class=IN ttl=1201 type=A

NOTA: Con toda probabilidad, en un tiempo no muy lejano a la publicación de este artículo, los enlaces a la API de WHM/Cpanel, dejen de funcionar, algo a lo que nos tiene habituados Cpanel, con sus numerosas actualizaciones de software para documentación de sus api, y de sus software, cuyo resultado es decenas de miles de enlaces erróneos en los buscadores.

 

 

Comparte este artículo

Artículo Antiguo
Este artículo tiene más de 2 años. Es muy probable que su contenido este anticuado, aunque pueda ser de utilidad, es conveniente que revises otras informaciones al respecto. Si lo encuentras útil o crees que puede ser actualizado, deja tu comentario con la actualización para poder editarlo y que pueda ser útil a los demás.

Comparte este articulo en

Abkrim

Yo solo se que no se nada, y que me paso la vida aprendiendo

Entradas recientes

Fatal error: Allowed memory size of 268435456 bytes exhausted en WordPress. Otro post más… pero diferente

No es la primera vez que me encuentro con el agotamiento de la memoria en…

5 meses hace

Problemas de Acceso con Centos 7, Almalinux 8, Ubuntu 20.04, y Debian 10/11: Un Enigma Firewall CSF

Descubre cómo solucionar problemas de acceso a servidores con Centos 7, Almalinux 8, Ubuntu 20.04…

9 meses hace

MySQL no inicia debido a errores en la base de datos interna de MySQL

Uno de los mensajes más alarmantes que puedes encontrarte es aquel que indica que tu…

11 meses hace

Actualización de seguridad 6.2.1 para WordPress y la importancia de los backups confiables

La seguridad de nuestro sitio web es de vital importancia en el mundo digital actual.…

12 meses hace

El mito de los ficheros SVG inseguros en las subidas de ficheros

Los ficheros SVG son archivos gráficos vectoriales escalables ampliamente utilizados en diseño web. Aunque no…

12 meses hace

Solución de problemas de errores 500 en Castris Hosting: una guía para usuarios de cPanel

En este artículo, te guiamos en la solución de problemas de errores 500 en Castris…

12 meses hace