Installazione software · 9 min read · Oct 01, 2025

Come installare PowerDNS e Poweradmin su CentOS 7

PowerDNS (pdns) è un server DNS open source scritto in C++ e rilasciato sotto licenza GPL. È diventato una buona alternativa al tradizionale server DNS Bind, progettato con migliori prestazioni e requisiti di memoria ridotti. PowerDNS fornisce due prodotti, il server Autorevole e il Ricorsore. Il server Autorevole di PowerDNS può essere configurato attraverso i diversi backend, inclusi i file di zona Bind semplici, RDBMS come MySQL, PostgreSQL, SQLite3 o LDAP.

In questo tutorial, ti mostrerò come installare e configurare un server Autorevole PowerDNS con il server di database MariaDB come Backend e utilizzare Poweradmin per una facile gestione DNS.

Prerequisiti

  • Server CentOS 7
  • Privilegi di root

Cosa faremo:

  1. Installare i repository EPEL e Remi
  2. Installare e configurare MariaDB
  3. Installare PowerDNS
  4. Installare Poweradmin
  5. Post-installazione di Poweradmin
  6. Creare una zona di esempio

Passo 1 - Installare i repository EPEL e Remi

Prima di tutto, dobbiamo installare le dipendenze per l’installazione di PowerDNS. Installeremo il repository EPEL e il REMI per l’installazione di PHP 7.2.

Installa il repository EPEL e il repository Remi per PHP utilizzando i seguenti comandi.

yum -y install epel-release  
 yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

Una volta aggiunti questi repository al sistema, installa il pacchetto ‘yum-utils’.

yum -y install yum-utils

E abilita il repository Remi per PHP 7.2 utilizzando il seguente comando.

yum-config-manager --enable remi-php72

Passo 2 - Installare e configurare MariaDB

Il server Autorevole di PowerDNS supporta un diverso backend, incluso il server di database MySQL/MariaDB. Il termine ‘backend’ è un datastore che il server consulterà e che contiene record DNS (e alcuni metadati). E per questa guida, utilizzeremo MariaDB come backend.

Installa MariaDB utilizzando il seguente comando yum.

yum -y install mariadb mariadb-server

Una volta completata l’installazione, avvia il servizio MariaDB e aggiungilo all’avvio automatico.

systemctl start mariadb  
 systemctl enable mariadb

Successivamente, configureremo la password di root per MariaDB utilizzando lo strumento interattivo chiamato ‘mysql_secure_installation’.

Esegui il comando qui sotto.

mysql_secure_installation

E ti verrà chiesto di configurare la password di root del server di database. Digita ‘Y’ per impostare la password di root e digita una password sicura.

Set root password? [Y/n] Y  
New password:   
Re-enter new password: 

Per gli altri, digita semplicemente ‘Y’ per sì.

Remove anonymous users? [Y/n] Y  
Disallow root login remotely? [Y/n] Y  
Remove test database and access to it? [Y/n] Y  
Reload privilege tables now? [Y/n] Y

Di conseguenza, hai installato il server di database MariaDB e impostato la password di root per l’autenticazione.

Successivamente, creeremo un nuovo database e un utente per l’installazione di PowerDNS. Accedi alla shell MySQL con l’utente root e la tua password.

Esegui il comando MySQL qui sotto.

mysql -u root -p  
 PASSWORD

Ora crea un nuovo database chiamato ‘powerdns’ e concedi tutti i privilegi del database a un nuovo utente chiamato ‘pdns’ con password ‘pdnspassword2018’.

create database powerdns;  
 grant all privileges on powerdns.* to pdns@localhost identified by 'pdnspassword2018';  
 flush privileges;

Installa il database PowerDNS

Dopo di che, crea le strutture delle tabelle per il database PowerDNS eseguendo le seguenti query MySQL.

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                    BIGINT 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);  
   
 quit;

Di conseguenza, il database MySQL/MariaDB e un utente per l’installazione di PowerDNS sono stati creati.

Passo 3 - Installare PowerDNS

Installa PowerDNS e tutti i pacchetti necessari utilizzando il seguente comando.

yum -y install pdns pdns-backend-mysql bind-utils

Dopo aver installato i pacchetti PowerDNS, vai alla directory ‘/etc/pdns/‘ ed edita il file di configurazione ‘pdns.conf’ utilizzando l’editor vim.

cd /etc/pdns/  
 vim pdns.conf

Per impostazione predefinita, PowerDNS utilizza ‘bind’ come backend. Quindi, digita il commento ‘#’ davanti alla configurazione ‘launch=bind’ e incolla la configurazione del backend MySQL come segue.

#launch=bind  
  
launch=gmysql  
gmysql-host=localhost  
gmysql-user=pdns  
gmysql-password=pdnspassword2018  
gmysql-dbname=powerdns

Salva e chiudi.

Installa PowerDNS

Ora avvia il servizio pdns e aggiungilo all’avvio automatico.

systemctl start pdns  
 systemctl enable pdns

Dopo di che, aggiungi il servizio DNS al firewall.

firewall-cmd --add-service=dns --permanent  
 firewall-cmd --reload

Configura il Firewall

E il servizio PowerDNS è attivo e funzionante, controlla utilizzando il seguente comando.

netstat -tap | grep pdns  
 netstat -tulpn | grep 53  
 dig @10.9.9.10

Di conseguenza, otterrai che il servizio pdns è attivo e funzionante sulla porta 53 e riceverai una risposta dal server PowerDNS.

Controlla lo stato di PowerDNS

Passo 4 - Installare Poweradmin

In questo passo, installeremo la gestione DNS per PowerDNS chiamata ‘Poweradmin’. È un’applicazione web basata su PHP, quindi dobbiamo installare PHP e un server web per eseguire l’applicazione.

Installa un server web httpd e i pacchetti PHP utilizzando il seguente comando.

yum -y install httpd php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext

Dopo l’installazione, dobbiamo installare pacchetti PHP Pear aggiuntivi. Esegui il seguente comando.

yum -y install php-pear-DB php-pear-MDB2-Driver-mysqli

Una volta completata l’installazione di httpd e PHP, avvia il servizio httpd e aggiungilo all’avvio automatico.

systemctl start httpd  
 systemctl enable httpd

Successivamente, vai alla directory ‘/var/www/html’ e scarica il codice sorgente di poweradmin.

cd /var/www/html/  
 wget http://downloads.sourceforge.net/project/poweradmin/poweradmin-2.1.7.tgz

Estrai il file compresso di poweradmin e rinominalo.

tar xvf poweradmin-2.1.7.tgz  
 mv poweradmin-2.1.7/ poweradmin/

Dopo di che, aggiungi i protocolli HTTP e HTTPS al firewall.

firewall-cmd --add-service={http,https} --permanent  
 firewall-cmd --reload

E siamo pronti per la post-installazione di poweradmin.

Passo 5 - Post-Installazione di Poweradmin

Apri il tuo browser web e digita l’indirizzo IP del server più il percorso URL /poweradmin/install/ per l’installazione. Il mio è:

http://10.9.9.10/poweradmin/install/

Scegli la tua lingua preferita e fai clic sul pulsante ‘Vai al Passo 2’.

Ora fai semplicemente clic sul pulsante ‘Vai al Passo 3’.

E ti verrà mostrata la configurazione del database. Digita i dettagli del database PowerDNS che abbiamo creato e la password di amministrazione per PowerDNS.

Impostazione del database PowerAdmin

Fai clic sul pulsante ‘Vai al Passo 4’.

Dopo di che, dovrai creare un nuovo utente con privilegi limitati. Digita i dettagli come segue e cambia l’utente, la password, ecc. con i tuoi.

Ora fai clic sul pulsante ‘Vai al Passo 5’.

E ti verrà mostrata la pagina qui sotto.

Apri di nuovo il tuo terminale server, accedi con l’utente root e la password. Quindi esegui le query MySQL come nella pagina.

mysql -u root -p  
 PASSWORD  
   
 GRANT SELECT, INSERT, UPDATE, DELETE  
 ON powerdns.*  
 TO 'hakase'@'localhost'  
 IDENTIFIED BY 'hakase-labs123';

Comandi Mysql

Ora torna al browser web e fai clic sul pulsante ‘Vai al Passo 6’.

E ti verrà mostrata la pagina qui sotto.

Passo di installazione 6

L’installer non è riuscito a creare una nuova configurazione ‘../inc/config.inc.php’. Quindi, dobbiamo crearla manualmente.

Torna al terminale server, vai alla directory ‘/var/www/html/poweradmin’ e crea un nuovo file di configurazione ‘inc/config.inc.php’.

cd /var/www/html/poweradmin  
 vim inc/config.inc.php

Ora incolla lo script PHP nella pagina in esso.

Salva e chiudi, poi torna al browser e fai clic sul pulsante.

File di configurazione del database

E l’installazione è completa.

Opzionalmente:

Se desideri supportare gli URL utilizzati da altri fornitori dinamici, copia il file htaccess.

cd /var/www/html/poweradmin  
 cp install/htaccess.dist .htaccess

Dopo di che, DEVI rimuovere la directory ‘install’.

rm -rf /var/www/html/poweradmin/install

Torna di nuovo al tuo browser web e accedi al dashboard di Poweradmin utilizzando l’URL qui sotto.

http://10.9.9.10/poweradmin/

Accedi con l’utente predefinito ‘admin’ e la password, fai clic sul pulsante ‘Vai’.

E come risultato, ti verrà mostrato il dashboard di Poweradmin e l’installazione è terminata.

Passo 6 - Creare una zona di esempio e record DNS

A questo punto, testeremo l’installazione di PowerDNS e Poweradmin creando una nuova zona DNS per un dominio chiamato ‘emma.io’.

Nel dashboard di Poweradmin, fai clic sul menu ‘Aggiungi zona master’.

Imposta il nome della zona con il nome di dominio ‘emaa.io’ e fai clic sul pulsante ‘Aggiungi zona’.

Fai clic sul menu ‘Elenca zone’ per ottenere tutte le zone disponibili. E fai clic sul pulsante ‘modifica’ per la zona ‘emma.io’.

Fai clic sul menu ‘Elenca zone’ per ottenere tutte le zone disponibili. E fai clic sul pulsante ‘modifica’ per la zona ‘emma.io’.

Elenca zone

Ora fai clic sul pulsante ‘Aggiungi record’ e abbiamo aggiunto con successo la zona DNS e il record DNS per il dominio chiamato ‘emma.io’.

Successivamente, testeremo il dominio ‘emma.io’ utilizzando un comando utility DNS ‘dig’.

Controlla il nameserver o il record ns del dominio ‘emma.io’.

dig NS emma.io @10.9.9.10

Controlla la zona con il comando dig

Controlla il record DNS A del dominio ‘emma.io’.

dig A emma.io @10.9.9.10

Risultato del comando dig

E ti verrà mostrato che il dominio ‘emma.io’ ha un nameserver dal nostro server DNS ‘ns1.hakase-labs.io’, e l’’A’ di quel nome di dominio corrisponde alla nostra configurazione in cima con l’indirizzo IP del server ‘10.9.9.11’.

Infine, l’installazione e la configurazione di PowerDNS e Poweradmin su CentOS 7 sono state completate con successo.

Riferimenti

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.