bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Configuración de PowerDNS con Poweradmin

calendar_month Aug 23, 2026 schedule 18 min de lectura visibility 18 vistas
Настройка PowerDNS с Poweradmin на VPS: создание собственного авторитативного DNS-сервера
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Configuración de PowerDNS con Poweradmin en un VPS: creación de su propio servidor DNS autoritativo

TL;DR

En esta guía detallada, configuraremos paso a paso nuestro propio servidor DNS autoritativo, utilizando PowerDNS Authoritative Server y la interfaz web Poweradmin, sobre el sistema operativo Ubuntu Server 24.04 LTS. Aprenderá cómo preparar un VPS, instalar y configurar todos los componentes necesarios, incluyendo la base de datos MariaDB, el servidor web Nginx y PHP-FPM, así como garantizar la seguridad y la redundancia de su infraestructura DNS.

  • Instalación y configuración de PowerDNS Authoritative Server para la gestión de zonas de dominio.
  • Despliegue de Poweradmin – una interfaz web conveniente para la gestión de registros DNS.
  • Uso de MariaDB como backend para almacenar datos DNS.
  • Protección del servidor con el firewall UFW, Fail2ban y certificados TLS de Let's Encrypt.
  • Recomendaciones para elegir la configuración óptima del VPS, copias de seguridad y solución de problemas.

¿Qué configuramos y por qué?

Diagrama: ¿Qué configuramos y por qué?
Diagrama: ¿Qué configuramos y por qué?

Hoy nos dedicaremos al despliegue de nuestro propio servidor DNS autoritativo. Un servidor DNS autoritativo es un servidor que almacena los registros oficiales para uno o varios nombres de dominio (por ejemplo, example.com) y responde a las consultas sobre ellos. A diferencia de los servidores DNS recursivos (que simplemente reenvían consultas y almacenan en caché las respuestas), un servidor autoritativo es la "fuente de la verdad" para sus dominios.

Como base, utilizaremos PowerDNS Authoritative Server – un servidor DNS de alto rendimiento y flexible que soporta varios backends para el almacenamiento de datos, incluyendo bases de datos. Para una gestión conveniente de las zonas de dominio y los registros, instalaremos Poweradmin – una interfaz web que simplifica significativamente el trabajo con PowerDNS a través del navegador, eliminando la necesidad de editar manualmente los archivos de zona.

Al final, obtendrá un servidor DNS completamente funcional, tolerante a fallos y fácil de gestionar, donde podrá alojar zonas de dominio para sus sitios web, servicios o proyectos. Esto le permite controlar completamente sus registros DNS, realizar cambios rápidamente, integrar DNS con otros sistemas y no depender de proveedores de DNS de terceros, lo cual es críticamente importante para muchos desarrolladores, startups y entusiastas.

Existen alternativas, como los servicios DNS en la nube (Cloudflare DNS, AWS Route 53, Google Cloud DNS) o los servidores DNS integrados en el panel de control del hosting. Los servicios en la nube ofrecen alta disponibilidad y rendimiento, pero a menudo tienen limitaciones de personalización y pueden ser costosos para un gran número de zonas o solicitudes específicas. El alojamiento propio de DNS en un VPS le brinda control total sobre la configuración, los datos y la seguridad, y también puede ser más económico a largo plazo para proyectos con requisitos específicos de privacidad o integración. Al elegir una solución autoalojada, obtiene flexibilidad y soberanía sobre su infraestructura DNS.

¿Qué configuración de VPS se necesita para esta tarea?

Diagrama: ¿Qué configuración de VPS se necesita para esta tarea?
Diagrama: ¿Qué configuración de VPS se necesita para esta tarea?

Para un servidor DNS autoritativo, especialmente si no atiende un número muy grande de zonas (hasta varios cientos) y no está sujeto a ataques DDoS, los requisitos de recursos son bastante modestos. PowerDNS es muy eficiente.

Requisitos mínimos:

  • CPU: 1 núcleo (arquitectura x64). Los procesadores modernos con una frecuencia de reloj de 2 GHz o más son más que suficientes.
  • RAM: 1 GB. Esto será suficiente para el sistema operativo, PowerDNS, MariaDB, Nginx y PHP-FPM. Si se planean muchas zonas (miles) o una carga alta, se pueden considerar 2 GB.
  • Disco: 20-30 GB SSD. PowerDNS y la base de datos ocupan poco espacio. El volumen principal es necesario para el sistema operativo, los registros y las copias de seguridad. El SSD es crítico para el rápido funcionamiento de la base de datos.
  • Red: 100 Mbps o 1 Gbps. Para las consultas DNS, el ancho de banda no es un cuello de botella, ya que las consultas son muy ligeras. Lo principal es la estabilidad de la conexión y la baja latencia.

Plan de VPS específico para la tarea:

Para la mayoría de los escenarios, incluyendo desarrolladores, fundadores individuales y equipos pequeños, un VPS con las siguientes características será óptimo:

  • 2 vCPU
  • 2 GB RAM
  • 50 GB SSD
  • Interfaz de red de 1 Gbps
  • Dirección IPv4 dedicada (mínimo 2, si desea ejecutar dos servidores NS en diferentes IP)

Esta configuración garantizará un trabajo cómodo, suficiente margen de rendimiento y espacio para el crecimiento. Puede considerar un VPS con las características indicadas de un proveedor confiable.

Cuándo se necesita un dedicado, no un VPS:

Un servidor dedicado puede ser necesario en los siguientes casos:

  • Carga muy alta: Si planea atender cientos de miles o millones de consultas DNS por segundo, o gestionar decenas de miles de zonas de dominio.
  • Aplicaciones críticas: Para infraestructuras donde cualquier retraso o problema potencial con los "vecinos" en un VPS es inaceptable.
  • Requisitos de seguridad y aislamiento: Aislamiento físico completo de otros clientes.
  • Requisitos de hardware específicos: Por ejemplo, para el uso de módulos de seguridad de hardware (HSM) o una gran cantidad de RAM/discos NVMe rápidos.

Para la mayoría de las tareas de un servidor DNS autoritativo, especialmente en la etapa inicial, un VPS es una solución más que suficiente y económicamente ventajosa.

Ubicación: en qué influye

La elección de la ubicación del VPS para un servidor DNS es importante por dos razones:

  1. Latencia: Cuanto más cerca físicamente esté su servidor DNS de la audiencia principal de sus dominios, menor será la latencia al resolver los nombres de dominio. Esto afecta la velocidad de carga de los sitios web y la capacidad de respuesta de los servicios.
  2. Jurisdicción: En algunos casos, la ubicación del servidor puede ser importante desde el punto de vista legislativo y legal para el almacenamiento de datos.

Idealmente, se deben tener al menos dos servidores DNS autoritativos (uno primario, uno secundario) en diferentes ubicaciones geográficas y con diferentes proveedores para una máxima tolerancia a fallos.

Preparación del servidor

Diagrama: Preparación del servidor
Diagrama: Preparación del servidor

Antes de proceder con la instalación de PowerDNS, es necesario realizar una preparación básica del servidor. Utilizaremos Ubuntu Server 24.04 LTS, ya que es una versión actual y estable para el año 2026.

1. Conexión por SSH

Conéctese a su nuevo VPS como usuario root o el usuario proporcionado por el proveedor:


ssh root@ВАШ_IP_АДРЕС_VPS

2. Actualización del sistema

Siempre comience actualizando el gestor de paquetes y los paquetes instalados a las últimas versiones:


sudo apt update && sudo apt upgrade -y

Actualiza la lista de paquetes e instala todas las actualizaciones disponibles.

3. Creación de un nuevo usuario con permisos sudo

Trabajar como root no es seguro. Crearemos un nuevo usuario y le daremos permisos sudo:


sudo adduser username # Reemplace 'username' con el nombre de usuario deseado

Añade un nuevo usuario al sistema. Siga las instrucciones para crear la contraseña y la información del usuario.


sudo usermod -aG sudo username

Añade el nuevo usuario al grupo sudo, otorgándole permisos de administrador.


su - username

Cambia al nuevo usuario. Ahora todos los comandos se ejecutarán en su nombre.

4. Configuración de claves SSH (recomendado)

Para mejorar la seguridad, se recomienda usar claves SSH en lugar de contraseñas. Genere las claves en su máquina local (si aún no lo ha hecho):


ssh-keygen -t ed25519 -C "[email protected]"

Copie la clave pública al servidor:


ssh-copy-id username@ВАШ_IP_АДРЕС_VPS

Deshabilite el inicio de sesión con contraseña para root y el nuevo usuario en el archivo /etc/ssh/sshd_config. Busque las líneas:


#PermitRootLogin prohibit-password
#PasswordAuthentication yes

Y cámbielas a:


PermitRootLogin no
PasswordAuthentication no

Reinicie el servicio SSH:


sudo systemctl restart sshd

5. Instalación y configuración del firewall (UFW)

El firewall es necesario para restringir el acceso al servidor. Permitiremos solo los puertos SSH, HTTP, HTTPS y DNS.


sudo apt install ufw -y

Instala Uncomplicated Firewall (UFW).


sudo ufw allow ssh # Permitir SSH (puerto 22 por defecto)
sudo ufw allow http # Permitir HTTP (puerto 80) para Poweradmin y Let's Encrypt
sudo ufw allow https # Permitir HTTPS (puerto 443) para Poweradmin
sudo ufw allow 53/tcp # Permitir tráfico TCP para DNS
sudo ufw allow 53/udp # Permitir tráfico UDP para DNS
sudo ufw enable

Habilita el firewall y aplica las reglas. Confirme la acción introduciendo y.


sudo ufw status verbose

Verifica el estado actual y las reglas de UFW.

6. Instalación de Fail2ban

Fail2ban protege el servidor contra ataques de fuerza bruta, bloqueando las direcciones IP desde las cuales se detectaron intentos fallidos de inicio de sesión.


sudo apt install fail2ban -y

Instala Fail2ban.


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Crea un archivo de configuración local que no será sobrescrito durante la actualización del paquete.

Edite /etc/fail2ban/jail.local para reforzar la protección. Por ejemplo, cambie bantime (tiempo de bloqueo) y maxretry (número de intentos).


sudo nano /etc/fail2ban/jail.local

Busque la sección [DEFAULT] y cambie los valores:


[DEFAULT]
bantime  = 1h # Bloquear durante 1 hora
findtime = 10m # Escanear los últimos 10 minutos
maxretry = 3 # Bloquear después de 3 intentos fallidos

Reinicie Fail2ban para aplicar los cambios:


sudo systemctl restart fail2ban

Su servidor ahora está preparado y protegido de forma básica.

Instalación de software — paso a paso

Esquema: Instalación de software — paso a paso
Esquema: Instalación de software — paso a paso

Ahora que el servidor está preparado, procederemos con la instalación de los componentes principales: MariaDB, PowerDNS Authoritative Server, Nginx y PHP-FPM, así como Poweradmin.

1. Instalación de MariaDB Server (versión 11.x)

MariaDB se utilizará como backend para PowerDNS y Poweradmin. Ubuntu 24.04 LTS viene con MariaDB Server 11.x.


sudo apt install mariadb-server -y # Instala el servidor MariaDB

Ejecute el script de instalación segura de MariaDB:


sudo mysql_secure_installation # Script para mejorar la seguridad de la instalación de MariaDB

Siga las instrucciones: establezca una contraseña para el usuario root de la base de datos, elimine los usuarios anónimos, prohíba el inicio de sesión remoto de root y elimine la base de datos de prueba.

Cree una base de datos y un usuario para PowerDNS:


sudo mysql -u root -p # Conectarse a MariaDB como root

Ingrese la contraseña que estableció anteriormente. Dentro de la consola de MariaDB, ejecute:


CREATE DATABASE powerdns; # Crea la base de datos 'powerdns'
CREATE USER 'pdns_user'@'localhost' IDENTIFIED BY 'YOUR_STRONG_PASSWORD'; # Crea el usuario 'pdns_user'
GRANT ALL PRIVILEGES ON powerdns. TO 'pdns_user'@'localhost'; # Otorga todos los privilegios sobre la base de datos 'powerdns' al usuario 'pdns_user'
FLUSH PRIVILEGES; # Actualiza los privilegios
EXIT; # Salir de la consola de MariaDB

Reemplace YOUR_STRONG_PASSWORD con una contraseña segura.

2. Instalación de PowerDNS Authoritative Server (versión ~4.8-4.9)

Instalaremos PowerDNS y las dependencias necesarias para el backend de MariaDB.


sudo apt install pdns-server pdns-backend-mysql -y # Instala PowerDNS Authoritative Server y el backend para MySQL/MariaDB

Importe el esquema de la base de datos de PowerDNS. El esquema se encuentra en la documentación de PowerDNS o en el paquete.


sudo mysql -u pdns_user -p powerdns < /usr/share/doc/pdns-backend-mysql/schema.mysql.sql # Importa el esquema de la base de datos de PowerDNS

Ingrese la contraseña para pdns_user.

3. Configuración de PowerDNS

Edite el archivo de configuración principal de PowerDNS /etc/powerdns/pdns.conf.


sudo nano /etc/powerdns/pdns.conf # Abre el archivo de configuración de PowerDNS

Encuentre o agregue las siguientes líneas, asegurándose de que coincidan con su configuración:


# /etc/powerdns/pdns.conf
launch=gmysql
gmysql-host=127.0.0.1
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=pdns_user
gmysql-password=YOUR_STRONG_PASSWORD
default-soa-name=ns1.yourdomain.com # Reemplace con el nombre de su servidor NS
allow-recursion=0.0.0.0/0 # O restrinja a IPs específicas si no desea recursión
allow-axfr-ips=127.0.0.1 # Direcciones IP a las que se permite AXFR (transferencia de zona)
setuid=pdns
setgid=pdns
log-level=4
daemon=yes
local-address=SU_DIRECCIÓN_IP_VPS # Dirección IP en la que PowerDNS escuchará las solicitudes

Reemplace YOUR_STRONG_PASSWORD con la contraseña del usuario de la base de datos de PowerDNS, y ns1.yourdomain.com y SU_DIRECCIÓN_IP_VPS con sus propios valores.


sudo systemctl enable pdns # Habilita el inicio automático de PowerDNS al arrancar el sistema
sudo systemctl start pdns # Inicia el servicio PowerDNS
sudo systemctl status pdns # Comprueba el estado de PowerDNS

4. Instalación de Nginx y PHP-FPM (versiones ~1.28 y ~8.3)

Nginx será el servidor web para Poweradmin, y PHP-FPM procesará los scripts PHP.


sudo apt install nginx php8.3-fpm php8.3-mysql php8.3-gd php8.3-curl php8.3-xml php8.3-mbstring php8.3-intl -y # Instala Nginx, PHP-FPM y los módulos PHP necesarios

sudo systemctl enable nginx php8.3-fpm # Habilita el inicio automático de Nginx y PHP-FPM
sudo systemctl start nginx php8.3-fpm # Inicia los servicios Nginx y PHP-FPM
sudo systemctl status nginx php8.3-fpm # Comprueba el estado de los servicios

5. Instalación de Poweradmin (versión ~3.0)

Descargaremos Poweradmin desde el repositorio oficial de GitHub. Para 2026, nos centraremos en la versión estable 3.0.


cd /var/www/ # Cambia al directorio para sitios web
sudo git clone https://github.com/PowerDNS/poweradmin.git html # Clona el repositorio de Poweradmin en la carpeta 'html'
sudo chown -R www-data:www-data /var/www/html # Establece el propietario para los archivos de Poweradmin
sudo find /var/www/html -type d -exec chmod 755 {} \; # Establece permisos para directorios
sudo find /var/www/html -type f -exec chmod 644 {} \; # Establece permisos para archivos

Vaya al directorio de Poweradmin y copie el archivo de configuración:


cd /var/www/html
sudo cp config-dist.inc.php config.inc.php # Copia la plantilla de configuración

Ahora necesita editar config.inc.php. Especifique los datos de conexión a la base de datos que creamos anteriormente:


sudo nano config.inc.php # Abre el archivo de configuración de Poweradmin

Encuentre las secciones relacionadas con la base de datos y modifíquelas:


// config.inc.php (fragmento)
$db_host = 'localhost';
$db_user = 'pdns_user';
$db_pass = 'YOUR_STRONG_PASSWORD'; // Contraseña del usuario de PowerDNS en MariaDB
$db_name = 'powerdns';
$db_type = 'mysql'; // O 'pgsql' para PostgreSQL

Especifique también los dominios para los servidores NS:


// config.inc.php (fragmento)
$primary_ns = 'ns1.yourdomain.com'; // Reemplace con el nombre de su primer NS
$secondary_ns = 'ns2.yourdomain.com'; // Reemplace con el nombre de su segundo NS (si existe)

Cree un usuario administrador de Poweradmin. Vaya en su navegador a http://SU_DIRECCIÓN_IP_VPS/install/. Siga las instrucciones del asistente de instalación: cree un administrador, elimine el directorio install.


sudo rm -rf /var/www/html/install # Elimina el directorio de instalación después de finalizar

Ahora Poweradmin está listo para usar.

Configuración

Esquema: Configuración
Esquema: Configuración

Después de instalar los componentes, es necesario realizar su configuración final, especialmente para Nginx, para que sirva correctamente a Poweradmin, y configurar TLS/HTTPS.

1. Configuración de Nginx para Poweradmin

Cree un nuevo archivo de configuración de Nginx para Poweradmin. Elimine la configuración predeterminada de Nginx si existe, o simplemente cree una nueva.


sudo nano /etc/nginx/sites-available/poweradmin.conf # Crea un nuevo archivo de configuración de Nginx

Pegue el siguiente contenido:


# /etc/nginx/sites-available/poweradmin.conf
server {
    listen 80;
    server_name your_poweradmin_domain.com SU_DIRECCIÓN_IP_VPS; # Reemplace con su dominio o IP
    root /var/www/html;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock; # Asegúrese de que esto coincida con su versión de PHP-FPM
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

Cree un enlace simbólico a este archivo en sites-enabled y verifique la configuración de Nginx:


sudo ln -s /etc/nginx/sites-available/poweradmin.conf /etc/nginx/sites-enabled/ # Crea un enlace simbólico
sudo nginx -t # Comprueba la sintaxis de la configuración de Nginx

Si la prueba es exitosa, reinicie Nginx:


sudo systemctl restart nginx # Reinicia Nginx

Ahora podrá acceder a Poweradmin a través de la dirección IP de su VPS o por el nombre de dominio, si ya lo ha configurado (por ejemplo, http://poweradmin.yourdomain.com).

2. Configuración de TLS/HTTPS a través de Certbot (Let's Encrypt)

Es crucial proteger la interfaz web de Poweradmin con HTTPS. Usaremos Certbot para obtener certificados SSL/TLS gratuitos de Let's Encrypt.


sudo apt install certbot python3-certbot-nginx -y # Instala Certbot y el plugin para Nginx

Ejecute Certbot. Detectará automáticamente su dominio (especificado en server_name de Nginx) y configurará Nginx.


sudo certbot --nginx -d your_poweradmin_domain.com # Obtiene e instala el certificado para su dominio

Siga las instrucciones de Certbot: ingrese su dirección de correo electrónico, acepte los términos. Certbot le ofrecerá redirigir el tráfico HTTP a HTTPS, lo cual es recomendable.

Verificación de la renovación automática de certificados:


sudo certbot renew --dry-run # Comprueba la posibilidad de renovar certificados sin una renovación real

Si todo es exitoso, su Poweradmin ahora está disponible a través de HTTPS.

3. Verificación del funcionamiento de PowerDNS

Después de todas las configuraciones, nos aseguraremos de que PowerDNS funcione correctamente y responda a las solicitudes.


sudo systemctl status pdns # Asegúrese de que PowerDNS esté en ejecución

Utilice la utilidad dig para verificar las consultas DNS. Primero, agregue una zona de prueba a través de Poweradmin. Por ejemplo, cree una zona test.com con un registro A para www.test.com, apuntando a la dirección IP 192.0.2.1.


dig @SU_DIRECCIÓN_IP_VPS www.test.com A # Envía una consulta DNS a su servidor PowerDNS

En la respuesta, debería ver la dirección IP 192.0.2.1. Si PowerDNS responde, significa que está funcionando correctamente.

Verifique que Poweradmin sea accesible a través de HTTPS:


curl -v https://your_poweradmin_domain.com # Comprueba la disponibilidad de Poweradmin a través de HTTPS y muestra información del certificado

Debería ver una conexión exitosa y los detalles del certificado SSL.

4. Configuración del secreto para Poweradmin

En el archivo config.inc.php de Poweradmin, hay una variable $session_key. Se utiliza para cifrar sesiones. Genere una cadena aleatoria y colóquela allí. Nunca deje el valor predeterminado.


head /dev/urandom | tr -dc A-Za-z0-9_ | head -c 32 ; echo # Genera una cadena aleatoria de 32 caracteres

Edite config.inc.php:


sudo nano /var/www/html/config.inc.php

E inserte la cadena generada:


// config.inc.php (fragmento)
$session_key = 'SU_CADENA_ALEATORIA_DE_32_CARACTERES';

Copias de seguridad y mantenimiento

Esquema: Copias de seguridad y mantenimiento
Esquema: Copias de seguridad y mantenimiento

Las copias de seguridad regulares y el mantenimiento oportuno son críticos para cualquier servidor de producción, incluido DNS. La pérdida de registros DNS puede provocar la inaccesibilidad de todos sus servicios.

Qué respaldar

  1. Base de datos de PowerDNS (MariaDB): Este es el componente más importante, que contiene todas sus zonas de dominio y registros.
  2. Archivos de configuración de PowerDNS: /etc/powerdns/pdns.conf y cualquier otra configuración personalizada.
  3. Archivos de configuración de Nginx: /etc/nginx/sites-available/poweradmin.conf, /etc/nginx/nginx.conf.
  4. Archivos de configuración de Poweradmin: /var/www/html/config.inc.php.
  5. Certificados Let's Encrypt: Aunque pueden ser reemitidos, mantener una copia de seguridad acelerará la recuperación. Se almacenan en /etc/letsencrypt/.

Script simple de copia de seguridad automática

Crearemos un script simple para la copia de seguridad diaria de la base de datos y los archivos de configuración clave. Usaremos mysqldump para la base de datos y tar para los archivos. Para el almacenamiento, se puede utilizar un servicio externo compatible con S3.


sudo mkdir -p /opt/backup/pdns # Creamos el directorio para las copias de seguridad
sudo nano /opt/backup/pdns/backup_pdns.sh # Creamos el script de copia de seguridad

Contenido de /opt/backup/pdns/backup_pdns.sh:


#!/bin/bash

# Configuración de la base de datos
DB_USER="pdns_user"
DB_PASS="YOUR_STRONG_PASSWORD" # Use una variable de entorno o un archivo .my.cnf para producción
DB_NAME="powerdns"

# Directorio para las copias de seguridad
BACKUP_DIR="/opt/backup/pdns"
DATE=$(date +%Y%m%d%H%M%S)

# Creación del volcado de la base de datos
echo "Dumping MariaDB database..."
mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$BACKUP_DIR/powerdns_db_$DATE.sql"
if [ $? -eq 0 ]; then
    echo "Database dump created successfully: $BACKUP_DIR/powerdns_db_$DATE.sql"
else
    echo "Error creating database dump."
    exit 1
fi

# Archivando archivos de configuración
echo "Archiving configuration files..."
tar -czvf "$BACKUP_DIR/pdns_configs_$DATE.tar.gz" \
    /etc/powerdns/pdns.conf \
    /etc/nginx/sites-available/poweradmin.conf \
    /etc/nginx/nginx.conf \
    /var/www/html/config.inc.php \
    /etc/letsencrypt/live/your_poweradmin_domain.com/ # Especifique su dominio
if [ $? -eq 0 ]; then
    echo "Configuration files archived successfully: $BACKUP_DIR/pdns_configs_$DATE.tar.gz"
else
    echo "Error archiving configuration files."
    exit 1
fi

# Eliminación de copias de seguridad antiguas (guardamos 7 días)
echo "Cleaning up old backups..."
find "$BACKUP_DIR" -type f -name "*.sql" -mtime +7 -delete
find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +7 -delete
echo "Backup process completed."

Reemplace YOUR_STRONG_PASSWORD y your_poweradmin_domain.com con los valores actuales. Establezca los permisos de ejecución:


sudo chmod +x /opt/backup/pdns/backup_pdns.sh # Hace que el script sea ejecutable

Agregue el script a cron para su ejecución diaria (por ejemplo, a las 3 de la mañana):


sudo crontab -e # Abre crontab para editar

Agregue la siguiente línea al final del archivo:


0 3 * * * /opt/backup/pdns/backup_pdns.sh >> /var/log/pdns_backup.log 2>&1

Esto ejecutará el script todos los días a las 03:00 y registrará la salida en un archivo de log.

Dónde almacenar

¡Nunca almacene las copias de seguridad en el mismo servidor! Si el servidor falla, perderá tanto los datos como las copias de seguridad. Lugares de almacenamiento recomendados:

  • Almacenamiento de objetos externo compatible con S3: AWS S3, DigitalOcean Spaces, Backblaze B2, Yandex Object Storage. Esta es una solución fiable y escalable. Para la carga automática, puede usar utilidades como s3cmd o rclone.
  • VPS separado: Un VPS económico en otra ubicación, utilizado exclusivamente para almacenar copias de seguridad. Se puede sincronizar mediante rsync o scp.
  • NAS/servidor local: Si tiene su propia infraestructura.

Actualizaciones: rolling vs maintenance window

La actualización del software es una parte importante del mantenimiento. Para un servidor DNS, que debe estar lo más disponible posible, esto es especialmente relevante.

  • Rolling updates (actualizaciones continuas): Si tiene dos (o más) servidores DNS (NS primario y secundario) configurados en diferentes ubicaciones, puede actualizarlos uno por uno. Actualice un servidor, asegúrese de que funciona correctamente y luego actualice el siguiente. Esto garantiza una disponibilidad continua.
  • Maintenance window (ventana de mantenimiento): Si solo tiene un servidor DNS, o desea minimizar los riesgos, planifique las actualizaciones para períodos de baja carga (por ejemplo, a altas horas de la noche). Asegúrese de advertir a los usuarios sobre una posible interrupción breve del servicio.

Siempre haga una copia de seguridad antes de actualizar y pruebe las actualizaciones en un servidor de prueba, si es posible. Para actualizar el sistema y los paquetes, use:


sudo apt update && sudo apt upgrade -y # Actualización de todos los paquetes

Después de grandes actualizaciones del kernel o de las bibliotecas del sistema, puede ser necesario reiniciar el servidor:


sudo reboot # Reinicio del servidor

Troubleshooting + FAQ

Esta sección recopila problemas comunes y respuestas a preguntas frecuentes que pueden surgir al configurar y operar PowerDNS con Poweradmin.

PowerDNS no se inicia o no responde a las solicitudes. ¿Qué hacer?

Primero, verifique el estado del servicio PowerDNS: sudo systemctl status pdns. Si no se inicia o muestra errores, revise los logs: sudo journalctl -u pdns --since "5 minutes ago". Las causas frecuentes son: configuración incorrecta en /etc/powerdns/pdns.conf (errores en gmysql-host, gmysql-user, gmysql-password), problemas de conexión a MariaDB o conflictos de puertos. Asegúrese de que MariaDB esté en ejecución y accesible, y que el usuario pdns_user tenga la contraseña y los privilegios correctos para la base de datos powerdns. Verifique local-address, si está especificado, que sea la dirección IP de su servidor.

Poweradmin no carga o muestra un error 500/404.

Verifique la configuración de Nginx: sudo nginx -t y reinícielo: sudo systemctl restart nginx. Asegúrese de que Nginx esté escuchando en el puerto 80/443 y que el directorio root (/var/www/html) y fastcgi_pass para PHP-FPM (unix:/run/php/php8.3-fpm.sock) estén configurados correctamente. Revise los logs de Nginx (/var/log/nginx/error.log) y PHP-FPM (/var/log/php8.3-fpm.log). Los errores 500 a menudo indican problemas con PHP, por ejemplo, configuraciones incorrectas de la base de datos en /var/www/html/config.inc.php o módulos PHP faltantes (php8.3-mysql).

Los registros DNS agregados a través de Poweradmin no se resuelven.

Asegúrese de haber configurado correctamente los registros NS para su dominio en su registrador de nombres de dominio, apuntando a la dirección IP de su VPS. Después de cambiar los registros NS, puede tardar hasta 48 horas para que los cambios se propaguen completamente por Internet (DNS propagation). Verifique que la zona se haya agregado en Poweradmin y que contenga los registros correctos (SOA, NS, A, AAAA, etc.). Use dig @SU_DIRECCIÓN_IP_VPS example.com para verificar directamente su servidor DNS.

¿Qué configuración mínima de VPS es adecuada para PowerDNS?

Para una pequeña cantidad de dominios y una carga moderada, un VPS mínimo con 1 vCPU, 1 GB de RAM y 20-30 GB de SSD será suficiente. PowerDNS es muy eficiente. Sin embargo, para una mayor estabilidad, un margen de rendimiento y la posibilidad de ejecutar otros servicios pequeños en el mismo VPS, se recomienda 2 vCPU, 2 GB de RAM y 50 GB de SSD. Un disco SSD es clave para un buen rendimiento de la base de datos.

¿Qué elegir: VPS o dedicado para esta tarea?

Para la mayoría de los usuarios, incluidos desarrolladores, fundadores individuales y pequeñas empresas, un VPS es la opción óptima debido a su economía, flexibilidad y rendimiento suficiente. Los servidores dedicados solo se justifican con una carga muy alta (cientos de miles de solicitudes por segundo), requisitos estrictos de aislamiento de recursos o la necesidad de utilizar hardware específico. Comience con un VPS, y si la carga crece a un nivel crítico, siempre podrá migrar a un dedicado.

¿Qué otras medidas de seguridad se pueden tomar?

Además de las claves SSH, Fail2ban y UFW, considere los siguientes pasos: actualizaciones regulares del sistema, uso de contraseñas complejas y únicas, restricción del acceso a MariaDB solo desde localhost, auditoría regular de logs, uso de autenticación de dos factores para Poweradmin (si está disponible a través de módulos de terceros o soluciones alternativas), y configuración de un segundo servidor DNS (NS secundario) en otra ubicación para la tolerancia a fallos y la protección contra ataques DDoS.

¿Cómo funciona el número de serie SOA y por qué es importante?

El registro SOA (Start of Authority) contiene información importante sobre la zona, incluido el número de serie (serial). El número de serie es un número que aumenta con cada cambio de zona. Los servidores DNS secundarios utilizan este número para determinar si necesitan solicitar actualizaciones de zona (AXFR/IXFR) al servidor primario. Si el número de serie en el servidor primario es mayor que en el secundario, el servidor secundario inicia la transferencia de zona. Poweradmin aumenta automáticamente el número de serie con cada cambio de registro, asegurando una sincronización correcta.

Conclusiones y próximos pasos

Esquema: Conclusiones y próximos pasos
Esquema: Conclusiones y próximos pasos

¡Felicidades! Ha configurado y lanzado con éxito su propio servidor DNS autoritativo con PowerDNS y la interfaz web Poweradmin en su VPS. Ahora tiene control total sobre sus nombres de dominio, puede realizar cambios rápidamente y garantizar una resolución DNS fiable para sus proyectos. Esta es una herramienta poderosa que le brinda independencia y flexibilidad.

Aquí hay algunos próximos pasos que puede tomar para seguir desarrollando su infraestructura DNS:

  1. Configuración de un servidor DNS secundario: Para una máxima tolerancia a fallos y rendimiento, implemente un segundo servidor PowerDNS en otro VPS (preferiblemente en una ubicación geográfica diferente y con otro proveedor) y configúrelo como servidor NS secundario (slave).
  2. Monitoreo: Implemente un sistema de monitoreo (por ejemplo, Prometheus, Zabbix, Grafana) para rastrear el estado de PowerDNS, MariaDB, Nginx y la carga general del servidor.
  3. Optimización del rendimiento: Para cargas muy altas, explore las capacidades de caché de PowerDNS, la optimización de consultas de MariaDB y el ajuste fino de Nginx/PHP-FPM.

¿Te fue útil esta guía?

Tus comentarios nos ayudan a mejorar nuestras guías.

Compartir esta publicación:

Envía esta guía a alguien a quien pueda resultarle útil.

Telegram VKVK WhatsApp Facebook LinkedIn XX

Configuración PowerDNS con Poweradmin en VPS: creación de tu propio servidor DNS autor
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.