PowerDNS Installazione · 7 min read · Oct 01, 2025

Installazione di PowerDNS (con backend MySQL) e Poweradmin su Debian Lenny

Installazione di PowerDNS (con backend MySQL) e Poweradmin su Debian Lenny

Versione 1.0
Autore: Falko Timme
Seguimi su Twitter

Questo articolo mostra come puoi installare il nameserver PowerDNS (con backend MySQL) e il pannello di controllo Poweradmin per PowerDNS su un sistema Debian Lenny. PowerDNS è un nameserver ad alte prestazioni, solo autoritativo - nella configurazione descritta qui leggerà i record DNS da un database MySQL (simile a MyDNS), anche se sono supportati altri backend come PostgreSQL. Poweradmin è un pannello di controllo basato sul web per PowerDNS.

Non rilascio alcuna garanzia che questo funzionerà per te!

1 Nota preliminare

In questo esempio sto usando un host Debian Lenny con il nome host server1.example.com e l’indirizzo IP 192.168.0.100, configurato secondo i primi sei capitoli di questo tutorial: Il Server Perfetto - Debian Lenny (Debian 5.0) [ISPConfig 2].

Configurerò solo un server PowerDNS in questo esempio (un master); aggiungere slave di PowerDNS può essere facilmente realizzato utilizzando la replica del database MySQL dal master agli slave, quindi non sono necessari trasferimenti di zona (questo è di nuovo simile a MyDNS). La replica del database MySQL può essere configurata secondo questo tutorial: Come configurare la replica del database in MySQL (PowerDNS supporta anche trasferimenti di zona nativi (per scenari in cui non puoi utilizzare la replica MySQL) - vedi http://downloads.powerdns.com/documentation/html/replication.html).

2 Installazione di MySQL

Per installare MySQL, eseguiamo

aptitude install mysql-server mysql-client

Ti verrà chiesto di fornire una password per l’utente root di MySQL - questa password è valida per l’utente root@localhost così come per [email protected], quindi non dobbiamo specificare manualmente una password root di MySQL in seguito:

Nuova password per l’utente MySQL “root”: <– yourrootsqlpassword
Ripeti la password per l’utente MySQL “root”: <– yourrootsqlpassword

Vogliamo che MySQL ascolti su tutte le interfacce (questo è importante per la replica del database MySQL!), non solo su localhost, quindi modifichiamo /etc/mysql/my.cnf e commentiamo la riga bind-address = 127.0.0.1:

vi /etc/mysql/my.cnf

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

Poi riavviamo MySQL:

/etc/init.d/mysql restart

Ora controlla che la rete sia abilitata. Esegui

netstat -tap | grep mysql

L’output dovrebbe apparire così:

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

3 Installazione di PowerDNS

Per installare PowerDNS, eseguiamo

aptitude install pdns-server pdns-backend-mysql

La configurazione di PowerDNS si trova nella directory /etc/powerdns - ci arriverò tra un momento.

Ora ci connettiamo a MySQL:

mysql -u root -p

Digita la tua password root di MySQL e dovresti essere sulla shell di MySQL. Sulla shell di MySQL, creiamo un database per PowerDNS:

CREATE DATABASE powerdns;

Successivamente creiamo un utente del database (powerdns) per 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;

(Sostituisci power_admin_password con una password a tua scelta.)

Ora creiamo le tabelle necessarie per 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  
);

… e infine lascia la shell di MySQL:

quit;

Ora dobbiamo configurare PowerDNS in modo che utilizzi il backend MySQL:

vi /etc/powerdns/pdns.conf

Aggiungi la riga launch=gmysql a pdns.conf:

| [...] ################################# # launch Which backends to launch and order to query them in # # launch= launch=gmysql [...] |

Poi apri /etc/powerdns/pdns.d/pdns.local e fallo apparire come segue:

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

| # Qui vengono le modifiche locali che l'utente ha effettuato, come la configurazione dei # vari backend che esistono. gmysql-host=127.0.0.1 gmysql-user=power_admin gmysql-password=power_admin_password gmysql-dbname=powerdns |

Poi riavvia pdns:

/etc/init.d/pdns restart

Questo è tutto, PowerDNS è ora pronto per essere utilizzato. Per saperne di più, ti preghiamo di fare riferimento alla sua documentazione: http://downloads.powerdns.com/documentation/html/index.html

4 Installazione di Poweradmin

Ora installiamo Poweradmin, un pannello di controllo basato sul web per PowerDNS. Poweradmin è scritto in PHP, quindi dobbiamo installare un server web (sto usando Apache2 in questo esempio) e 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 gettext

Poweradmin richiede anche i seguenti due pacchetti PEAR:

pear install DB  
pear install pear/MDB2#mysql

Ora tutti i prerequisiti per Poweradmin sono installati e possiamo iniziare con l’installazione di Poweradmin (lo installerò in una sottodirectory di /var/www - /var/www è la radice del documento del sito web predefinito di Apache su Debian; se hai creato un vhost con una radice del documento diversa, ti preghiamo di regolare i percorsi).

Vai su https://www.poweradmin.org/trac/wiki/GettingPoweradmin e scarica l’ultima versione del pacchetto Poweradmin, ad esempio come segue:

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

Poi installalo nella directory /var/www/poweradmin come segue:

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/

Ora apri un browser e avvia l'installatore web di Poweradmin (http://server1.example.com/poweradmin/install/index.php o http://192.168.0.100/poweradmin/install/index.php).

Seleziona la tua lingua (inglese o olandese):

Fai clic sul pulsante Vai al passo 3 per procedere:

Ora compila i dettagli del tuo database. È importante che tu compili i dettagli per l'utente root di MySQL, non l'utente MySQL powerdns che abbiamo creato in precedenza! Fornisci anche una password per l'utente admin per l'interfaccia web di Poweradmin (quella è la password che l'utente admin utilizzerà per accedere a Poweradmin in seguito):

Nella pagina successiva, l'installatore ti chiede di eseguire una query MySQL. Non dobbiamo farlo perché abbiamo già fatto qualcosa di simile nel capitolo 3 (le due dichiarazioni GRANT) quindi siamo a posto. Fai clic su Vai al passo 6:

Fai clic su Vai al passo 7: ![](/files/477ce083-3b1b-484d-b278-bbb687471d1f.png) L'installazione è ora terminata... ![](/files/7e99ac27-89d2-41e0-be3f-597ce25af296.png) ... ma per motivi di sicurezza dobbiamo eliminare la directory di installazione:

rm -fr /var/www/poweradmin/install/


Ora puoi andare su http://server1.example.com/poweradmin o http://192.168.0.100/poweradmin e accedere con il nome utente admin e la password che hai creato durante l'installazione:

![](/files/187028cf-3e53-4d47-8327-2d7177b53329.png)

Ecco come appare l'interfaccia web di Poweradmin:

![](/files/9e2931fb-0f8d-4d89-a82e-1af59cad4078.png)

Per creare una zona, vai su Aggiungi zona master e compila il nome di dominio (ad es. example.com). Puoi già compilare gli indirizzi IP per il record A www ("webserver") e il record MX ("mailserver") per quella zona. Se lasci la casella Crea zona senza applicare il template dei record non selezionata, Poweradmin creerà automaticamente alcuni record NS, A (ad es. www) e MX per quella zona:

![](/files/e0fc75f0-c517-430c-979a-deb8d805a366.png)

Vai su Elenco zone dopo. Dovresti ora vedere la nuova zona lì, e ha già otto record. Fai clic sull'icona di modifica per vedere questi otto record:

![](/files/cb4f069e-b061-4b46-9943-d22394a9dd8d.png)

Questi sono i record che vengono creati automaticamente a meno che tu non selezioni la casella Crea zona senza applicare il template dei record quando crei una zona. Ora puoi modificarli o aggiungere e eliminare record:

![](/files/17cd6418-5205-46a2-abf5-380569ec004e.png)

Certo, puoi anche creare tutti i record uno per uno manualmente - basta lasciare vuoti i campi degli indirizzi IP e selezionare la casella Crea zona senza applicare il template dei record nella pagina Aggiungi zona master:

![](/files/bcb04e27-2c8e-46cb-86f7-14fd60541a94.png)

Nella pagina Elenco zone vedrai che la nuova zona ha solo un record (il record SOA). Fai clic sull'icona di modifica...

![](/files/6362e931-6844-492c-a3c7-2b4cf235195d.png)

... e poi su Aggiungi record per aggiungere ulteriori record, ...

![](/files/2ba33f58-7b75-48ce-ac27-ae921e6568a0.png)

..., ad esempio record NS...

![](/files/3e97957a-7505-4c69-b485-57bdd09f47b9.png)

... e record A (ad es. per mydomain.com (lascia vuoto il campo Nome!) e www.mydomain.com)...

![](/files/5d60687b-78eb-48a3-9421-af01ea0aba7f.png)

![](/files/d857e828-1f3e-4ebc-8a2d-277243545810.png)

... e record MX:

![](/files/9f8c0537-fa9b-4c40-826a-3fdb8683eb29.png)

Per creare record PTR, vai alla pagina Aggiungi zona master e crea una zona chiamata in-addr.arpa (lascia vuoti i campi degli indirizzi IP e seleziona la casella Crea zona senza applicare il template dei record):

![](/files/47d461ae-19da-4b1f-ab23-042805b3d065.png)

Per creare un record PTR che punta dall'IP 1.2.3.4 a server1.example.com, crea un record sotto Elenco zone e compila 4.3.2.1 nel campo Nome (questo è l'IP in ordine inverso) e server1.example.com nel campo Contenuto:

![](/files/bd59392f-1137-4155-9471-fcb51cc6470f.png)

Dopo aver creato i tuoi record, puoi controllarli con il comando dig (vedi

man dig

per ulteriori dettagli), ad esempio come segue:

dig @localhost mx example.com

server1:~# dig @localhost mx example.com

; <> DiG 9.3.4 <> @localhost mx example.com
; (1 server trovato)
;; opzioni globali: printcmd
;; Ricevuto risposta:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37939
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; SEZIONE DOMANDA:
;example.com. IN MX

;; SEZIONE RISPOSTA:
example.com. 86400 IN MX 10 mail.example.com.

;; SEZIONE AGGIUNTIVA:
mail.example.com. 86400 IN A 1.2.3.4

;; Tempo di query: 9 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; QUANDO: Lun Gen 12 19:56:46 2009
;; MSG SIZE ricevuto: 66

server1:~#


### 5 Link

- PowerDNS: http://www.powerdns.com/
- Documentazione di PowerDNS: http://downloads.powerdns.com/documentation/html/index.html
- Poweradmin: http://www.poweradmin.org/
- Debian: http://www.debian.org/
Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.