Guías

Cómo añadir DNS secundario al panel de hosting Plesk

Por qué su servidor Plesk necesita un DNS secundario

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

Plesk usa BIND como servidor de DNS. De forma predeterminada, todos sus dominios dependen de un único servidor de nombres. Si ese servidor deja de funcionar, ya sea por mantenimiento, una avería de hardware o un ataque DDoS, todos los dominios dejan de estar accesibles. Los visitantes reciben errores de DNS, el correo deja de entregarse y los servicios agotan el tiempo de espera.

Un servidor DNS secundario mantiene una copia sincronizada de todas sus zonas mediante AXFR (transferencia de zona autoritativa). Cuando el primario no está disponible, el secundario sigue respondiendo las consultas de DNS de sus dominios. Sus sitios web, su correo y sus servicios siguen en línea.

La mayoría de los registradores de dominios exigen al menos dos servidores de nombres, y el RFC 2182 recomienda tres para entornos de producción. Añadir un DNS secundario no es solo una buena práctica: es imprescindible para la fiabilidad en 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 de Plesk

Plesk ejecuta BIND (named) y gestiona su configuración mediante sus propias plantillas de DNS. Esto es lo fundamental que conviene entender: usted no edita named.conf a mano en un servidor Plesk, porque Plesk regenera ese archivo cada vez que reconstruye la configuración de DNS. Cualquier cambio manual en named.conf puede sobrescribirse la siguiente vez que Plesk modifique una zona.

Hay dos capas que importan:

1. Las plantillas de DNS (Tools & Settings > DNS Settings) controlan qué registros recibe cada zona nueva, incluidos los servidores de nombres que figuran en los registros NS. 2. La Transfer Restrictions Template y los Server-wide Settings de DNS contienen opciones personalizadas de BIND (como allow-transfer y also-notify) que sobreviven a la regeneración de la configuración, porque Plesk las vuelve a integrar cada vez.

Cuando configura el DNS secundario para Plesk, trabaja con ambas capas: la plantilla, para que las zonas nuevas incluyan su servidor de nombres de SecondDNS, y los ajustes de transferencia y server-wide, para que las transferencias AXFR sigan funcionando después de que Plesk reescriba named.conf. El Installer de SecondDNS se encarga de ambas, pero el Paso 2 más abajo le muestra cómo hacer permanentes los ajustes de AXFR por su cuenta.

Cómo funciona la integración de DNS secundario

La integración de SecondDNS para Plesk usa event handlers que Plesk llama automáticamente después de los eventos de DNS:

1. Cuando crea un dominio, una suscripción o un alias de dominio, el handler registra la zona en SecondDNS mediante la API 2. SecondDNS obtiene una copia completa de la zona desde su servidor mediante AXFR 3. Cuando elimina un dominio o un alias, el handler lo elimina de SecondDNS

En Plesk, cada dominio, dominio adicional y alias de dominio tiene su propia zona de DNS, de modo que cada uno se registra por separado. Todos los cambios de zona se propagan automáticamente a través del mecanismo NOTIFY de BIND. Sin pasos manuales, sin cron jobs y sin registros obsoletos.

Requisitos de DNS secundario para Plesk

Antes de empezar, asegúrese de tener:

- Plesk Obsidian (18.x o posterior) con el servidor DNS BIND - Acceso root (sudo) al servidor - Una clave de API de SecondDNS (obtenga una en seconddns.com/dashboard/api-key) - La IP de su servidor de nombres de SecondDNS (la encuentra en el dashboard, en Settings > Nameservers) - El puerto TCP 53 abierto para tráfico entrante desde la IP del servidor de SecondDNS

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

Abrir el puerto TCP 53 para transferencias de zona DNS

Antes de ejecutar el Installer, abra el puerto TCP 53 para el servidor de SecondDNS. Busque la IP de su servidor de nombres en el dashboard, en Settings > Nameservers, y luego sustituya SECONDARY_IP en los comandos de abajo.

Si usa la extensión Plesk Firewall, añada una regla en Tools & Settings > Firewall que permita el tráfico TCP entrante en el puerto 53 desde SECONDARY_IP.

Si gestiona el firewall directamente con firewalld:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="SECONDARY_IP" port port="53" protocol="tcp" accept'
firewall-cmd --reload

O con iptables:

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

Para verificar que el puerto TCP 53 está accesible desde el exterior:

nmap -p 53 -sT YOUR_SERVER_IP

Instalar DNS secundario en Plesk

Ejecute el comando de una sola línea como root:

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

El Installer hará lo siguiente: - Verificará su clave de API contra la API de SecondDNS - Detectará la dirección IP de su servidor (IPv4 e IPv6) - Le preguntará qué dirección IP usar si hay varias disponibles - Instalará los scripts de event handler - Registrará 12 event handlers de Plesk para los eventos de creación, renombrado y eliminación de dominios - Reemplazará el ns2.<domain> predeterminado por su servidor de nombres de SecondDNS en la plantilla de DNS - Configurará BIND para AXFR (allow-transfer, also-notify) - Le ofrecerá sincronizar los dominios existentes

Después de la instalación, verifique la plantilla de DNS manualmente, ya que el reemplazo automático no siempre se realiza correctamente:

Zone Records Template: Vaya a Tools & Settings > DNS Settings > Zone Records Template y confirme que el segundo registro NS (ns2.<domain>.) se haya reemplazado por el servidor de nombres de SecondDNS que aparece en su dashboard.

Zone Settings Template: Vaya a Tools & Settings > DNS Settings > Zone Settings Template y busque Primary Name Server. Es un menú desplegable que se rellena a partir de los registros NS de la plantilla; cámbielo de (Autoselect) a la entrada del servidor de nombres de su servidor Plesk (ns1.<domain>). Así se asegura de que las zonas nuevas usen su servidor Plesk como primario autoritativo, y no el secundario.

Hacer permanentes los ajustes de transferencia de zona

El Installer configura BIND directamente, pero Plesk puede sobrescribir named.conf durante la regeneración de la configuración. Para que los ajustes de AXFR sobrevivan, defínalos a través de los propios ajustes de DNS de Plesk, que Plesk vuelve a integrar cada vez que reconstruye la configuración. Hay dos partes: el permiso de transferencia y el destino de NOTIFY.

Permitir la transferencia (la forma nativa de Plesk). Use la Transfer Restrictions Template, que está concebida precisamente para conceder AXFR a un secundario en todas las zonas y la valida Plesk:

1. Vaya a Tools & Settings > DNS Settings > Transfer Restrictions Template 2. Añada la IP de su servidor de nombres de SecondDNS (la encuentra en el dashboard, en Settings > Nameservers) a la lista de direcciones permitidas 3. Haga clic en OK / Apply

Enviar NOTIFY al cambiar. Añada also-notify a los Server-wide Settings:

1. Vaya a Tools & Settings > DNS Settings > Server-wide Settings 2. En el campo Additional DNS settings, añada lo siguiente (sustituya SECONDARY_IP por la IP de su servidor de nombres):

also-notify { SECONDARY_IP; };

3. Haga clic en Apply.

La Transfer Restrictions Template concede al servidor de SecondDNS permiso para obtener la zona (allow-transfer), y also-notify le indica a BIND que envíe un NOTIFY para que el secundario se actualice de inmediato tras un cambio. Como ambos residen en los ajustes de Plesk y no en named.conf, las transferencias de zona siguen funcionando incluso después de que Plesk regenere su configuración de DNS.

Sincronizar dominios existentes con DNS secundario

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

seconddns sync

Esto compara sus zonas locales con SecondDNS y añade las que falten. Los dominios eliminados localmente se eliminan del secundario. El comando es idempotente: se puede ejecutar varias veces sin problema.

Para comprobar una zona concreta o listar todo lo que hay en el secundario:

seconddns status example.com
seconddns list

Verificar la configuración de DNS secundario en Plesk

Cree un dominio de prueba en Plesk y observe el log del handler:

tail -f /var/log/seconddns.log

Debería ver:

Zone created: testdomain.com (plesk event handler)
[+] Zone testdomain.com added to SecondDNS

Luego consulte ambos servidores de nombres. Sustituya SECONDARY_IP por la IP de su servidor de nombres tomada del dashboard:

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

Ambos deberían devolver el mismo número de serie SOA en formato YYYYMMDDNN. Si el secundario muestra un número de serie inferior o devuelve SERVFAIL, revise el acceso al puerto TCP 53 y el log del handler.

Tipos de dominio compatibles

La integración gestiona todos los tipos de dominio de Plesk:

- Dominios predeterminados (el primer dominio de una suscripción) - Dominios adicionales - Alias de dominio (tanto para los predeterminados como para los adicionales)

Cada tipo tiene su propia zona de DNS en Plesk y activa el event handler automáticamente cuando se crea o se elimina a través del panel de control de Plesk o de la CLI.

Compatibilidad con IPv4 e IPv6

El Installer detecta automáticamente qué protocolos admite su servidor y cuáles están disponibles en el lado de SecondDNS. Si hay IPv4 e IPv6 disponibles, puede elegir cuál usar para las transferencias de zona.

La configuración de AXFR (allow-transfer y also-notify) se establece con la dirección IP correcta para el protocolo que haya elegido. Si usa ambos, añada cada dirección a los bloques allow-transfer y also-notify en los Server-wide Settings.

Solución de problemas de DNS secundario en Plesk

La zona no aparece en el secundario Revise el log en /var/log/seconddns.log. Verifique que los event handlers estén registrados:

plesk bin event_handler --list | grep seconddns

Debería ver 12 handlers (4 para la creación, 4 para el renombrado y 4 para la eliminación). Si faltan, vuelva a ejecutar el Installer.

AXFR rechazado Asegúrese de que la IP de su SecondDNS esté en la Transfer Restrictions Template (Tools & Settings > DNS Settings > Transfer Restrictions Template). Ese es el ajuste que sobrevive a la regeneración de la configuración de Plesk: si las transferencias funcionan al principio y dejan de funcionar más tarde, es que la IP falta en la plantilla y solo existía en named.conf.

Tiempo de espera de conexión agotado Verifique que el puerto TCP 53 esté abierto entre su servidor y SecondDNS. AXFR usa TCP, no UDP. La causa más frecuente de las transferencias fallidas es tener el TCP 53 bloqueado en el firewall mientras el UDP 53 está abierto.

Los ajustes se revierten al cabo de un tiempo Esto significa que las directivas de AXFR se añadieron solo a named.conf y no a través de los ajustes de Plesk. Añada la IP a la Transfer Restrictions Template y also-notify a los Server-wide Settings, tal como se muestra en el Paso 2.

Probar un handler manualmente

NEW_DOMAIN_NAME=example.com bash -c /usr/local/bin/seconddns-plesk-domain_create.sh

Desinstalación

Para eliminar la integración:

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

Esto elimina los event handlers, los scripts y el archivo de configuración. Sus zonas en el DNS secundario no se eliminan automáticamente: elimínelas a través del dashboard de SecondDNS o ejecute:

seconddns remove-all

antes de desinstalar si quiere borrarlas del secundario.

Nota: la IP de SecondDNS en la Transfer Restrictions Template y la línea also-notify en los Server-wide Settings (Paso 2) no las elimina el desinstalador. Bórrelas manualmente desde Tools & Settings > DNS Settings si ya no las necesita.