Guías

Cómo agregar DNS secundario al panel de hosting DirectAdmin

Por qué su servidor DirectAdmin necesita un DNS secundario

Servidor DNS secundario para DirectAdmin — servicio DNS secundario via REST API

DirectAdmin generalmente utiliza BIND (named) o PowerDNS como servidor DNS. Por defecto, todos los dominios dependen de un único servidor de nombres. Si este falla — por mantenimiento, fallo de hardware o ataque DDoS — cada dominio se vuelve inaccesible.

Un servidor DNS secundario mantiene una copia sincronizada de todas las zonas via AXFR. Cuando el primario no está disponible, el secundario sigue respondiendo consultas DNS. Sus sitios web, correo y servicios permanecen en línea.

La mayoría de los registradores requieren al menos dos servidores de nombres, y el RFC 2182 recomienda tres para producción.

¿Aún no tiene un servidor de nombres secundario? SecondDNS le ofrece uno en una prueba gratuita de 3 meses, sin tarjeta de crédito — empiece aquí y luego siga los pasos de abajo.

Cómo funciona el DNS en DirectAdmin

DirectAdmin soporta dos backends DNS: BIND (named) y PowerDNS.

BIND (named): Las zonas se almacenan como archivos de zona en /etc/named/ o /var/named/. Las transferencias se configuran en named.conf: allow-transfer otorga al secundario permiso para descargar la zona, y also-notify hace que BIND envíe un NOTIFY para que el secundario se actualice de inmediato.

PowerDNS: Los datos DNS se almacenan en base de datos. Las transferencias se controlan via allow-axfr-ips en pdns.conf. El instalador de SecondDNS detecta automáticamente el backend y configura las directivas correctas.

En ambos casos, DirectAdmin gestiona DNS a través de scripts hook en /usr/local/directadmin/scripts/custom/. La integración SecondDNS instala sus propios hooks ahí para registro automático de zonas.

Cómo funciona la integración de DNS secundario

La integración SecondDNS usa scripts hook que DirectAdmin llama automáticamente:

1. Al crear un dominio o domain pointer — el hook registra la zona en SecondDNS via API 2. SecondDNS descarga una copia completa via AXFR 3. Al eliminar un dominio — el hook lo elimina de SecondDNS

Todos los cambios se propagan automáticamente via NOTIFY. Sin pasos manuales ni cron jobs.

Requisitos de DNS secundario para DirectAdmin

Antes de comenzar, asegúrese de tener:

- DirectAdmin 1.6 o posterior con BIND/named o PowerDNS - Acceso root (sudo) al servidor - Una clave API de SecondDNS (en seconddns.com/dashboard/api-key) - La IP de su servidor de nombres SecondDNS (en el panel bajo Settings > Nameservers) - Puerto TCP 53 abierto para conexiones provenientes de la IP del servidor SecondDNS

El protocolo de transferencia de zonas AXFR usa el puerto TCP 53, no UDP. Muchas configuraciones de firewall solo abren UDP 53 para consultas DNS regulares. Si TCP 53 está bloqueado, las transferencias de zona fallan sin dar error aunque la resolución DNS normal funcione.

Abrir el puerto TCP 53 para transferencias de zona DNS

Antes de ejecutar el instalador, abra el puerto TCP 53 para el servidor SecondDNS. Encuentre la IP en el panel bajo Settings > Nameservers y reemplace SECONDARY_IP en los comandos.

Si usa UFW:

ufw allow from SECONDARY_IP to any port 53 proto tcp
ufw reload

Si usa iptables:

iptables -I INPUT -s SECONDARY_IP -p tcp --dport 53 -j ACCEPT

Si usa nftables:

nft add rule inet filter input ip saddr SECONDARY_IP tcp dport 53 accept

Para verificar que el puerto TCP 53 es accesible desde el exterior:

nmap -p 53 -sT YOUR_SERVER_IP

El instalador configura automáticamente allow-transfer (BIND) o allow-axfr-ips (PowerDNS) con su IP de SecondDNS al proporcionar la clave API.

Instalar DNS secundario en DirectAdmin

Ejecute como root:

curl -sL https://raw.githubusercontent.com/seconddns/dns_integrations/main/hosting-panels/directadmin/install.sh | bash -s -- --api-key=YOUR_API_KEY

El instalador: - Verifica su clave API contra la API de SecondDNS - Detecta la IP del servidor (IPv4 e IPv6) - Pregunta qué protocolo usar si ambos están disponibles - Detecta el backend DNS (BIND o PowerDNS) - Configura las transferencias automáticamente (allow-transfer otorga el permiso y also-notify activa NOTIFY para BIND; allow-axfr-ips para PowerDNS) - Instala scripts hook en /usr/local/directadmin/scripts/custom/ - Ofrece sincronizar dominios existentes

Reemplace YOUR_API_KEY con la clave de su panel SecondDNS. El instalador termina con un código de salida distinto de cero si algún paso falla.

Configurar servidores de nombres en DirectAdmin

Tras la instalación, registre el servidor de nombres secundario en DirectAdmin.

Opción 1: Desde el panel DirectAdmin (recomendado) Inicie sesión como Admin → Server Manager → Name Servers. Configure NS2 con el hostname de su servidor de nombres SecondDNS (en el panel bajo Settings > Nameservers). Con el complemento Personalized NS use su hostname de marca (ej. ns2.yourdomain.com). Esta configuración se aplica automáticamente a todos los nuevos dominios.

Opción 2: Editar la plantilla DNS directamente

vi /usr/local/directadmin/data/templates/custom/dns_zone.conf

Si el directorio no existe, créelo:

mkdir -p /usr/local/directadmin/data/templates/custom
cp /usr/local/directadmin/data/templates/dns_zone.conf /usr/local/directadmin/data/templates/custom/

Agregue un registro NS apuntando al hostname de su servidor de nombres SecondDNS. Para dominios existentes use la gestión DNS de DirectAdmin o la función de actualización masiva.

Sincronizar dominios existentes con DNS secundario

Si tenía dominios en DirectAdmin antes de la instalación, sincronícelos con el secundario:

seconddns sync

Esto compara sus zonas locales con SecondDNS y agrega las faltantes. Los dominios eliminados localmente se eliminan del secundario. El comando es idempotente — puede ejecutarse varias veces sin generar duplicados.

Para verificar una zona específica:

seconddns status example.com

Para listar todas las zonas en el servidor secundario:

seconddns list

Verificar la configuración de DNS secundario en DirectAdmin

Cree un dominio de prueba en DirectAdmin y observe el log de hooks:

tail -f /var/log/seconddns.log

Debería ver:

Zone created: testdomain.com (caller=create:domain, user=admin)
[+] Zone testdomain.com added to SecondDNS

Luego consulte ambos servidores de nombres. Reemplace SECONDARY_IP con la IP de su servidor de nombres del panel:

dig @YOUR_SERVER_IP testdomain.com SOA +short
dig @SECONDARY_IP testdomain.com SOA +short

Ambos deben devolver el mismo serial SOA en formato YYYYMMDDNN. Si el secundario muestra un serial menor o devuelve SERVFAIL, verifique el acceso al puerto TCP 53 y el log de hooks.

Tipos de dominio soportados

La integración maneja todos los tipos de dominio de DirectAdmin:

- Dominios principales (create:domain) - Zonas DNS (create:zone) - Domain pointers (create:pointer)

Cada tipo activa el hook automáticamente al crearse o eliminarse desde el panel o la API de DirectAdmin. El hook recibe el nombre de dominio, nombre de usuario y tipo de caller de DirectAdmin y los pasa a SecondDNS.

Solución de problemas de DNS secundario en DirectAdmin

La zona no aparece en el secundario Revise el log de hooks /var/log/seconddns.log. Verifique que los hooks estén instalados y sean ejecutables:

ls -la /usr/local/directadmin/scripts/custom/dns_*_post.sh

Si faltan los archivos, ejecute el instalador nuevamente. Si existen pero no son ejecutables:

chmod +x /usr/local/directadmin/scripts/custom/dns_*_post.sh

AXFR rechazado (BIND) Verifique named.conf para allow-transfer con su IP de SecondDNS:

grep -A3 'allow-transfer' /etc/named.conf

Un cambio en allow-transfer es un cambio de configuración; aplíquelo con reconfig (rndc reload solo relee los datos de zona):

rndc reconfig

AXFR rechazado (PowerDNS) Verifique allow-axfr-ips en pdns.conf:

grep allow-axfr-ips /etc/pdns/pdns.conf

Después de cambios, reinicie PowerDNS:

systemctl restart pdns

Puerto TCP 53 bloqueado Ejecute el test nmap de la sección de firewall. Usuarios CSF: verifique que la IP de SecondDNS esté en /etc/csf/csf.allow.

Probar el hook manualmente:

domain=example.com username=admin caller=create:domain /usr/local/directadmin/scripts/custom/dns_create_post.sh

Hook no se activa Verifique que el sistema de hooks de DirectAdmin esté habilitado. Versiones antiguas pueden requerir que active explícitamente el directorio de scripts personalizados.

Desinstalación

Para eliminar la integración:

curl -sL https://raw.githubusercontent.com/seconddns/dns_integrations/main/hosting-panels/directadmin/uninstall.sh | bash

Esto elimina los scripts hook y el archivo de configuración. Las zonas en el DNS secundario no se eliminan automáticamente — elimínelas desde el panel SecondDNS o ejecute:

seconddns remove-all

antes de desinstalar si desea limpiar el servidor secundario.