En este tutorial, le mostraremos cómo instalar y configurar PowerDNS en el servidor CentOS 7. Para aquellos de ustedes que no lo sabían, PowerDNS es un servidor DNS basado en MySQL, escrito en C++ y con licencia GPL. PowerDNS se puede administrar a través de una interfaz web (PowerAdmin). A diferencia de Bind, PowerDNS se puede configurar usando una multitud de backends como Bind Zone Files o varias bases de datos.
Este artículo asume que tiene al menos conocimientos básicos de Linux, sabe cómo usar el shell y, lo que es más importante, aloja su sitio en su propio VPS. La instalación es bastante simple y asume que se están ejecutando en la cuenta raíz, si no, es posible que deba agregar 'sudo
' a los comandos para obtener privilegios de root. Le mostraré la instalación paso a paso de PowerDNS en un servidor CentOS 7.
Requisitos previos
- Un servidor que ejecute uno de los siguientes sistemas operativos:CentOS 7.
- Se recomienda que utilice una instalación de sistema operativo nueva para evitar posibles problemas.
- Acceso SSH al servidor (o simplemente abra Terminal si está en una computadora de escritorio).
- Un
non-root sudo user
o acceder alroot user
. Recomendamos actuar como unnon-root sudo user
, sin embargo, puede dañar su sistema si no tiene cuidado al actuar como root.
Instalar PowerDNS en CentOS 7
Paso 1. Primero, comencemos asegurándonos de que su sistema esté actualizado.
yum clean all yum -y update
Paso 2. Instalación de PowerDNS y backend.
Primero, debe habilitar el repositorio EPEL y todos los paquetes necesarios en su sistema:
yum install epel-release yum install bind-utils pdns pdns-recursor pdns-backend-mysql mariadb mariadb-server
Habilite PowerDNS en el arranque e inicie el servidor PowerDNS:
systemctl enable mariadb systemctl enable pdns systemctl enable pdns-recursor
Paso 3. Configuración de MariaDB.
De forma predeterminada, MariaDB no está reforzado. Puede proteger MariaDB utilizando mysql_secure_installation
texto. debe leer y debajo de cada paso cuidadosamente que establecerá una contraseña de root, eliminará usuarios anónimos, no permitirá el inicio de sesión de root remoto y eliminará la base de datos de prueba y accederá a MariaDB segura.
mysql_secure_installation
Paso 4. Cree una base de datos y un usuario de PowerDNS en MariaDB.
Inicie sesión como raíz de MariaDB y cree una nueva base de datos y tablas:
$ mysql -uroot -p create user 'powerdns'@'localhost' identified by 'password'; grant all privileges on powerdns.* to 'powerdns'@'localhost'; flush privileges; 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) ) Engine=InnoDB; 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(10) DEFAULT NULL, content VARCHAR(64000) DEFAULT NULL, ttl INT DEFAULT NULL, prio INT DEFAULT NULL, change_date INT DEFAULT NULL, disabled TINYINT(1) DEFAULT 0, ordername VARCHAR(255) BINARY DEFAULT NULL, auth TINYINT(1) DEFAULT 1, PRIMARY KEY (id) ) Engine=InnoDB; CREATE INDEX nametype_index ON records(name,type); CREATE INDEX domain_id ON records(domain_id); CREATE INDEX recordorder ON records (domain_id, ordername); CREATE TABLE supermasters ( ip VARCHAR(64) NOT NULL, nameserver VARCHAR(255) NOT NULL, account VARCHAR(40) NOT NULL, PRIMARY KEY (ip, nameserver) ) Engine=InnoDB; CREATE TABLE comments ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, name VARCHAR(255) NOT NULL, type VARCHAR(10) NOT NULL, modified_at INT NOT NULL, account VARCHAR(40) NOT NULL, comment VARCHAR(64000) NOT NULL, PRIMARY KEY (id) ) Engine=InnoDB; CREATE INDEX comments_domain_id_idx ON comments (domain_id); CREATE INDEX comments_name_type_idx ON comments (name, type); CREATE INDEX comments_order_idx ON comments (domain_id, modified_at); CREATE TABLE domainmetadata ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, kind VARCHAR(32), content TEXT, PRIMARY KEY (id) ) Engine=InnoDB; CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind); CREATE TABLE cryptokeys ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, flags INT NOT NULL, active BOOL, content TEXT, PRIMARY KEY(id) ) Engine=InnoDB; CREATE INDEX domainidindex ON cryptokeys(domain_id); CREATE TABLE tsigkeys ( id INT AUTO_INCREMENT, name VARCHAR(255), algorithm VARCHAR(50), secret VARCHAR(255), PRIMARY KEY (id) ) Engine=InnoDB; CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
Paso 5. Configurar PowerDNS.
Abra `/etc/pdns/pdns.conf
` archivo y agregue las siguientes líneas:
allow-axfr-ips=<IPs allowed axfr> allow-recursion=<IPs allowed recursion> launch=gmysql gmysql-host=127.0.0.1 gmysql-user=<yourdbuser> gmysql-password=<yourdbpassword> gmysql-dbname=powerdns local-address=<yourserverIPs> local-port=53 master=yes recursor=127.0.0.1:5353 setgid=pdns setuid=pdns webserver=yes webserver-address=<bindipaddress> webserver-password=<yourpassword> webserver-port=8081
Finalmente, reinicie el servicio Power DNS:
systemctl restart pdns.service systemctl enable pdns.service
Paso 6. Configurar Recursor.
Abra `/etc/pdns-recursor/recursor.conf
` archivo y agregue las siguientes líneas:
setuid=pdns-recursor setgid=pdns-recursor allow-from=127.0.0.0/8 local-address=127.0.0.1 local-port=5353
Iniciar el servicio Recursor:
systemctl restart pdns-recursor
Recurso de prueba:
host ping.idroot.us 127.0.0.1 Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: ping.idroot.us has address 194.109.46.8 ping.idroot.us has IPv6 address 2001:888:0:25:169:109:21:66
¡Felicitaciones! Ha instalado PowerDNS con éxito. Gracias por usar este tutorial para instalar PowerDNS en el sistema CentOS 7. Para obtener ayuda adicional o información útil, le recomendamos que visite el sitio web oficial de PowerDNS.