Instalación · 5 min read · Oct 01, 2025

Instalación de PowerDNS (Con Backend MySQL) Y Poweradmin En Debian Etch

Instalación de PowerDNS (Con Backend MySQL) Y Poweradmin En Debian Etch

Versión 1.0
Autor: Falko Timme

Este artículo muestra cómo puedes instalar el servidor de nombres PowerDNS (con backend MySQL) y el panel de control Poweradmin para PowerDNS en un sistema Debian Etch. PowerDNS es un servidor de nombres autoritativo de alto rendimiento; en la configuración descrita aquí, leerá los registros DNS de una base de datos MySQL (similar a MyDNS), aunque también se admiten otros backends como PostgreSQL. Poweradmin es un panel de control basado en la web para PowerDNS.

¡No emito ninguna garantía de que esto funcione para ti!

1 Nota Preliminar

En este ejemplo estoy usando un host Debian Etch con el nombre de host server1.example.com y la dirección IP 192.168.0.100, configurado de acuerdo con los primeros 5 capítulos de este tutorial: La Configuración Perfecta - Debian Etch (Debian 4.0).

Configuraré solo un servidor PowerDNS en este ejemplo (un maestro); agregar esclavos de PowerDNS se puede lograr fácilmente utilizando la replicación de base de datos MySQL del maestro a los esclavos, por lo que no se necesitan transferencias de zona (esto nuevamente es similar a MyDNS). La replicación de base de datos MySQL se puede configurar de acuerdo con este tutorial: Cómo Configurar la Replicación de Base de Datos En MySQL (PowerDNS también admite transferencias de zona nativas (para escenarios donde no puedes usar la replicación MySQL) - ver http://downloads.powerdns.com/documentation/html/replication.html).

2 Instalación de MySQL

Para instalar MySQL, ejecutamos

apt-get install mysql-server mysql-client

Queremos que MySQL escuche en todas las interfaces (¡esto es importante para la replicación de base de datos MySQL!), no solo en localhost, por lo que editamos /etc/mysql/my.cnf y comentamos la línea bind-address = 127.0.0.1:

vi /etc/mysql/my.cnf

| [...] #bind-address = 127.0.0.1 [...] |

Luego reiniciamos MySQL:

/etc/init.d/mysql restart

Ahora verifica que la red esté habilitada. Ejecuta

netstat -tap | grep mysql

La salida debería verse así:

server1:~# netstat -tap | grep mysql
tcp 0 0 :mysql :* LISTEN 3031/mysqld
server1:~#

Ejecuta

mysqladmin -u root password yourrootsqlpassword
mysqladmin -h server1.example.com -u root password yourrootsqlpassword

para establecer una contraseña para el usuario root (¡de lo contrario, cualquiera puede acceder a tu base de datos MySQL!) (reemplaza yourrootsqlpassword con una contraseña de tu elección).

3 Instalación de PowerDNS

Para instalar PowerDNS, ejecutamos

apt-get install pdns-server pdns-backend-mysql

La configuración de PowerDNS se encuentra en el directorio /etc/powerdns - llegaré a eso en un momento.

Ahora nos conectamos a MySQL:

mysql -u root -p

Escribe tu contraseña de root de MySQL, y deberías estar en el shell de MySQL. En el shell de MySQL, creamos una base de datos para PowerDNS:

CREATE DATABASE powerdns;

A continuación, creamos un usuario de base de datos (powerdns) para PowerDNS:

GRANT ALL ON powerdns. TO ‘power_admin’@’localhost’ IDENTIFIED BY ‘power_admin_password’;
GRANT ALL ON powerdns.
TO ‘power_admin’@’localhost.localdomain’ IDENTIFIED BY ‘power_admin_password’;
FLUSH PRIVILEGES;

(Reemplaza power_admin_password con una contraseña de tu elección.)

Ahora creamos las tablas necesarias para PowerDNS…

USE powerdns;

CREATE TABLE domains (
id INT auto_increment,
name VARCHAR(255) NOT NULL,
master VARCHAR(128) DEFAULT NULL,
last_check INT DEFAULT NULL,
type VARCHAR(6) NOT NULL,
notified_serial INT DEFAULT NULL,
account VARCHAR(40) DEFAULT NULL,
primary key (id)
);

CREATE UNIQUE INDEX name_index ON domains(name);

CREATE TABLE records (
id INT auto_increment,
domain_id INT DEFAULT NULL,
name VARCHAR(255) DEFAULT NULL,
type VARCHAR(6) DEFAULT NULL,
content VARCHAR(255) DEFAULT NULL,
ttl INT DEFAULT NULL,
prio INT DEFAULT NULL,
change_date INT DEFAULT NULL,
primary key(id)
);

CREATE INDEX rec_name_index ON records(name);
CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);

CREATE TABLE supermasters (
ip VARCHAR(25) NOT NULL,
nameserver VARCHAR(255) NOT NULL,
account VARCHAR(40) DEFAULT NULL
);

… y finalmente salimos del shell de MySQL:

quit;

Ahora debemos configurar PowerDNS para que use el backend MySQL:

vi /etc/powerdns/pdns.conf

Agrega la línea launch=gmysql a pdns.conf:

| [...] ################################# # launch Qué backends lanzar y el orden para consultarlos # # launch= launch=gmysql [...] |

Luego abre /etc/powerdns/pdns.d/pdns.local y haz que se vea como sigue:

vi /etc/powerdns/pdns.d/pdns.local    

| # Aquí vienen los cambios locales que el usuario hizo, como la configuración de # los varios backends que existen. gmysql-host=127.0.0.1 gmysql-user=power_admin gmysql-password=power_admin_password gmysql-dbname=powerdns |

Luego reinicia pdns:

/etc/init.d/pdns restart

Eso es todo, PowerDNS ahora está listo para ser utilizado. Para aprender más sobre él, consulta su documentación: http://downloads.powerdns.com/documentation/html/index.html

4 Instalación de Poweradmin

Ahora instalemos Poweradmin, un panel de control basado en la web para PowerDNS. Poweradmin está escrito en PHP, por lo que debemos instalar un servidor web (estoy usando Apache2 en este ejemplo) y PHP:

apt-get install apache2 libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php-pear php5-imap php5-mcrypt php5-mhash php5-ming php5-mysql php5-xmlrpc gettext 

¿Continuar instalando libc-client sin soporte para Maildir? <– Sí

Poweradmin también requiere los siguientes dos paquetes PEAR:

pear install DB
pear install pear/MDB2#mysql

Ahora todos los requisitos previos para Poweradmin están instalados, y podemos comenzar con la instalación de Poweradmin (lo instalaré en un subdirectorio de /var/www - /var/www es la raíz del documento del sitio web predeterminado de Apache en Debian; si has creado un vhost con una raíz de documento diferente, ajusta las rutas).

Ve a https://www.poweradmin.org/trac/wiki/GettingPoweradmin y descarga el último paquete de Poweradmin, por ejemplo, de la siguiente manera:

cd /tmp
wget https://www.poweradmin.org/download/poweradmin-2.1.2.tgz

Luego instálalo en el directorio /var/www/poweradmin de la siguiente manera:

tar xvfz poweradmin-2.1.2.tgz
mv poweradmin-2.1.2 /var/www/poweradmin
touch /var/www/poweradmin/inc/config.inc.php
chown -R www-data:www-data /var/www/poweradmin/

Ahora abre un navegador y lanza el instalador basado en la web de Poweradmin (http://server1.example.com/poweradmin/install o http://192.168.0.100/poweradmin/install).

Selecciona tu idioma (inglés o neerlandés):

Haz clic en el botón Ir al paso 3 para continuar:

Ahora completa los detalles de tu base de datos. Es importante que completes los detalles para el usuario root de MySQL, ¡no el usuario de MySQL powerdns que creamos anteriormente! También proporciona una contraseña para el usuario administrador de la interfaz web de Poweradmin (esa es la contraseña que el usuario admin utilizará para iniciar sesión en Poweradmin más tarde):

En la siguiente página, completa los detalles para el usuario MySQL power_admin que creamos en el capítulo 3. También completa los dos servidores de nombres predeterminados que se utilizarán en tus zonas a menos que proporciones servidores de nombres diferentes cuando crees una zona (típicamente estos son los nombres del sistema actual y del servidor esclavo (para el cual puedes configurar la replicación MySQL, consulta mis notas preliminares en el capítulo 1)):

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.