Instalación PowerDNS · 8 min read · Oct 01, 2025
Instalación de PowerDNS (Con Backend MySQL) Y Poweradmin En Debian Lenny
Instalación de PowerDNS (Con Backend MySQL) Y Poweradmin En Debian Lenny
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 Lenny. 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 Lenny 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 Lenny (Debian 5.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 tanto, 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
aptitude 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 tarde:
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 tanto, 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 3031/mysqld
server1:~#3 Instalación de PowerDNS
Para instalar PowerDNS, ejecutamos
aptitude 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 en que 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 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:
aptitude 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 gettextPoweradmin también requiere los siguientes dos paquetes PEAR:
pear install DB
pear install pear/MDB2#mysqlAhora 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.4.tgzLuego instálalo en el directorio /var/www/poweradmin de la siguiente manera:
tar xvfz poweradmin-2.1.4.tgz
mv poweradmin-2.1.4 /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/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 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 admin para 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, 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 GRANT declaraciones) así que estamos listos. Haz clic en Ir al paso 6:

Haz clic en Ir al paso 7:

La instalación ahora está terminada...

... pero por razones de seguridad debemos eliminar el directorio de instalación:
rm -fr /var/www/poweradmin/install/
Ahora puedes ir a http://server1.example.com/poweradmin o http://192.168.0.100/poweradmin e iniciar sesión con el nombre de usuario admin y la contraseña que creaste durante la instalación:

Así es como se ve la interfaz web de Poweradmin:

Para crear una zona, ve a Agregar zona maestra y completa el nombre de dominio (por ejemplo, example.com). Ya puedes completar las direcciones IP para el registro A www ("servidor web") y el registro MX ("servidor de correo") para esa zona. Si dejas la casilla Crear zona sin aplicar plantilla de registros desmarcada, Poweradmin creará automáticamente algunos registros NS, A (por ejemplo, www) y MX para esa zona:

Ve a Listar zonas después. Ahora deberías ver la nueva zona allí, y ya tiene ocho registros. Haz clic en el ícono de editar para ver estos ocho registros:

Estos son los registros que se crean automáticamente a menos que marques la casilla Crear zona sin aplicar plantilla de registros al crear una zona. Ahora puedes editarlos o agregar y eliminar registros:

Por supuesto, también puedes crear todos los registros uno por uno manualmente; simplemente deja los campos de dirección IP vacíos y marca la casilla Crear zona sin aplicar plantilla de registros en la página Agregar zona maestra:

En la página Listar zonas verás que la nueva zona tiene solo un registro (el registro SOA). Haz clic en el ícono de editar...

... y luego en Agregar registro para agregar más registros, ...

..., por ejemplo, registros NS...

... y registros A (por ejemplo, para mydomain.com (¡deja el campo Nombre vacío!) y www.mydomain.com)...


... y registros MX:

Para crear registros PTR, ve a la página Agregar zona maestra y crea una zona llamada in-addr.arpa (deja los campos de dirección IP vacíos y marca la casilla Crear zona sin aplicar plantilla de registros):

Para crear un registro PTR que apunte desde la IP 1.2.3.4 a server1.example.com, crea un registro en Listar zonas y completa 4.3.2.1 en el campo Nombre (esa es la IP en orden inverso) y server1.example.com en el campo Contenido:

Después de haber creado tus registros, puedes verificarlos con el comando dig (ver
man dig
para más detalles), por ejemplo, de la siguiente manera:
dig @localhost mx example.com
server1:~# dig @localhost mx example.com
; <> DiG 9.3.4 <> @localhost mx example.com
; (1 servidor encontrado)
;; opciones globales: printcmd
;; Recibido:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37939
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; SECCIÓN DE PREGUNTAS:
;example.com. IN MX
;; SECCIÓN DE RESPUESTA:
example.com. 86400 IN MX 10 mail.example.com.
;; SECCIÓN ADICIONAL:
mail.example.com. 86400 IN A 1.2.3.4
;; Tiempo de consulta: 9 mseg
;; SERVIDOR: 127.0.0.1#53(127.0.0.1)
;; CUANDO: Lun Ene 12 19:56:46 2009
;; TAMAÑO MSG recibido: 66
server1:~#
### 5 Enlaces
- PowerDNS: http://www.powerdns.com/
- Documentación de PowerDNS: http://downloads.powerdns.com/documentation/html/index.html
- Poweradmin: http://www.poweradmin.org/
- Debian: http://www.debian.org/Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.