Instalación de Software · 5 min read · Oct 01, 2025
Instalación de PowerDNS (con backend MySQL) y Poweradmin en Debian Squeeze
Instalación de PowerDNS (con backend MySQL) y Poweradmin en Debian Squeeze
Versión 1.0
Autor: Falko Timme
Sígueme en Twitter
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 Squeeze. 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 web para PowerDNS.
¡No ofrezco ninguna garantía de que esto funcione para ti!
1 Nota Preliminar
En este ejemplo estoy usando un host Debian Squeeze con el nombre de host server1.example.com y la dirección IP 192.168.0.100, configurado de acuerdo con los primeros seis capítulos de este tutorial: El Servidor Perfecto - Debian Squeeze (Debian 6.0) [ISPConfig 2].
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 de 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-clientSe te pedirá que proporciones una contraseña para el usuario root de MySQL; esta contraseña es válida para el usuario root@localhost así como para [email protected], por lo que no tenemos que especificar una contraseña de root de MySQL manualmente más adelante:
Nueva contraseña para el usuario “root” de MySQL: <– tucontraseñarootsql
Repetir contraseña para el usuario “root” de MySQL: <– tucontraseñarootsql
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 restartAhora verifica que la red esté habilitada. Ejecuta
netstat -tap | grep mysqlLa salida debería verse así:
server1:~# netstat -tap | grep mysql
tcp 0 0 :mysql :* LISTEN 2453/mysqld
server1:~#
3 Instalación de PowerDNS
Para instalar PowerDNS, ejecutamos
apt-get install pdns-server pdns-backend-mysqlLa 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 -pEscribe 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.confAgrega 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 restartEso 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 web para PowerDNS. Poweradmin está escrito en PHP, así 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-ming php5-mysql php5-xmlrpc gettext php-db php-mdb2 php-mdb2-driver-mysqlReinicia Apache después:
/etc/init.d/apache2 restart 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.5.tgz
Luego instálalo en el directorio /var/www/poweradmin de la siguiente manera:
tar xvfz poweradmin-2.1.5.tgz
mv poweradmin-2.1.5 /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 web de Poweradmin (http://server1.example.com/poweradmin/install/index.php o http://192.168.0.100/poweradmin/install/index.php).
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 llenes los detalles para el usuario root de MySQL, ¡no el usuario 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 adelante):

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 al crear una zona (típicamente estos son los nombres del sistema actual y del servidor esclavo (para el cual puedes configurar la replicación de MySQL, consulta mis notas preliminares en el capítulo 1)):

En la siguiente pantalla, el instalador te pide que ejecutes una consulta MySQL. No tenemos que hacer eso porque ya hemos hecho algo similar en el capítulo 3 (las dos declaraciones GRANT), así que estamos listos. Haz clic en Ir al paso 6:

Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.