PowerDNS (pdns) è un server DNS open source scritto in C++ e rilasciato sotto licenza GPL. È diventata una buona alternativa al tradizionale server DNS Bind, progettato con prestazioni migliori e requisiti di memoria ridotti. PowerDNS fornisce due prodotti, il server autorevole e il ricorrente. Il server PowerDNS Authoritative può essere configurato tramite i diversi backend, inclusi i file della zona Bind semplici, RDBMS come MySQL, PostgreSQL, SQLite3 o LDAP.
In questo tutorial, ti mostrerò come installare e configurare un server PowerDNS Authoritative con server di database MariaDB come backend e utilizzare Poweradmin per una facile gestione del DNS.
Prerequisiti
- Server CentOS 7
- Privilegi di root
Cosa faremo:
- Installa i repository EPEL e Remi
- Installa e configura MariaDB
- Installa PowerDNS
- Installa Poweradmin
- Dopo l'installazione di Poweradmin
- Crea zona campione
Passaggio 1:installazione dei repository EPEL e Remi
Prima di tutto, dobbiamo installare le dipendenze per l'installazione di PowerDNS. Installeremo il repository EPEL e REMI per l'installazione di PHP 7.2.
Installa il repository EPEL e PHP Remi utilizzando i seguenti comandi.
yum -y install epel-release
yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Una volta che questi repository sono stati aggiunti al sistema, installa il pacchetto 'yum-utils'.
yum -y install yum-utils
E abilita il repository Remi PHP 7.2 usando il seguente comando.
yum-config-manager --enable remi-php72
Fase 2 - Installa e configura MariaDB
Il server PowerDNS Authoritative supporta un backend diverso, incluso il server di database MySQL/MariaDB. I termini di "backend" sono un datastore che il server consulterà che contiene record DNS (e alcuni metadati). E per questa guida utilizzeremo MariaDB come backend.
Installa MariaDB usando il seguente comando yum.
yum -y install mariadb mariadb-server
Una volta completata l'installazione, avvia il servizio MariaDB e aggiungilo al tempo di avvio di avvio.
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 seguente.
mysql_secure_installation
E ti verrà richiesto di configurare la password di root del server di database. Digita 'Y' per impostare la password di root e digita una password complessa.
Set root password? [Y/n] Y
New password:
Re-enter new password:
Per gli altri, digita "Y" su 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, è stato installato il server del database MariaDB e impostato la password di root per l'autenticazione.
Successivamente, creeremo un nuovo database e un nuovo utente per l'installazione di PowerDNS. Accedi alla shell MySQL con l'utente root e la tua password.
Esegui il comando MySQL di seguito.
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 [email protected] identified by 'pdnspassword2018';
flush privileges;
Successivamente, crea le strutture delle tabelle per il database PowerDNS eseguendo le seguenti query MySQL di seguito.
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, è stato creato il database MySQL/MariaDB e un utente per l'installazione di PowerDNS.
Passaggio 3:installazione di PowerDNS
Installa PowerDNS e tutti i pacchetti necessari utilizzando il comando seguente.
yum -y install pdns pdns-backend-mysql bind-utils
Dopo aver installato i pacchetti PowerDNS, vai alla directory '/etc/pdns/' e modifica il file di configurazione 'pdns.conf' usando vim editor.
cd /etc/pdns/
vim pdns.conf
Per impostazione predefinita, PowerDNS utilizza 'bind' come back-end. Quindi, digita il commento "#" nella parte anteriore della configurazione "launch=bind" e incolla la configurazione del back-end MySQL come di seguito.
#launch=bind
launch=gmysql
gmysql-host=localhost
gmysql-user=pdns
gmysql-password=pdnspassword2018
gmysql-dbname=powerdns
Salva e chiudi.
Ora avvia il servizio pdns e aggiungilo al tempo di avvio di avvio.
systemctl start pdns
systemctl enable pdns
Successivamente, aggiungi il servizio DNS al firewall.
firewall-cmd --add-service=dns --permanent
firewall-cmd --reload
E il servizio PowerDNS è attivo e funzionante, verifica utilizzando il comando seguente.
netstat -tap | grep pdns
netstat -tulpn | grep 53
dig @10.9.9.10
Di conseguenza, otterrai che il servizio pdns sia attivo e funzionante sulla porta 53 e otterrai la risposta dal server PowerDNS.
Fase 4:installa Poweradmin
In questo passaggio installeremo la gestione DNS per PowerDNS denominata "Poweradmin". È un'applicazione Web basata su PHP, quindi è necessario installare PHP e un server Web per eseguire l'applicazione.
Installa un server web httpd e pacchetti PHP usando il comando seguente.
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, è necessario installare ulteriori pacchetti PHP Pear. Esegui il comando seguente.
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 al tempo di avvio di avvio.
systemctl start httpd
systemctl enable httpd
Quindi, 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
Estrarre il file compresso di poweradmin e rinominarlo.
tar xvf poweradmin-2.1.7.tgz
mv poweradmin-2.1.7/ poweradmin/
Successivamente, 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.
Passaggio 5:post-installazione di Poweradmin
Apri il browser web e digita l'indirizzo IP del server più l'URL del percorso /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 passaggio 2".
Ora fai clic sul pulsante "Vai al passaggio 3".
E verrai visualizzato per la configurazione del database. Digita i dettagli del database PowerDNS che abbiamo creato e la password di amministratore per PowerDNS.
Fai clic sul pulsante "Vai al passaggio 4".
Successivamente, sarà necessario creare un nuovo utente con privilegi limitati. Digita i dettagli come segue e cambia utente, password, ecc. con il tuo.
Ora fai clic sul pulsante "Vai al passaggio 5".
E ti verrà mostrata la pagina come di seguito.
Riapri il tuo terminal 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';
Ora torna al browser web e fai clic sul pulsante "Vai al passaggio 6".
E ti verrà mostrata la pagina come di seguito.
Il programma di installazione non è stato in grado di creare una nuova configurazione '../inc/config.inc.php'. Quindi, dobbiamo crearlo manualmente.
Torna al server terminal, 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 sulla pagina al suo interno.
<?php $db_host = 'localhost'; $db_user = 'hakase'; $db_pass = 'hakase-labs123'; $db_name = 'powerdns'; $db_type = 'mysql'; $db_layer = 'PDO'; $session_key = '[email protected]=uetwJeD2#uApgO)2Ekj+S#oN1Khhoj'; $iface_lang = 'en_EN'; $dns_hostmaster = 'server.hakase-labs.io'; $dns_ns1 = 'ns1.hakase-labs.io'; $dns_ns2 = 'ns2.hakase-labs.io';
Salva e chiudi, quindi torna al browser e fai clic sul pulsante.
E l'installazione è completa.
Facoltativamente:
Se vuoi supportare gli URL utilizzati da altri provider dinamici, copia il file htaccess.
cd /var/www/html/poweradmin
cp install/htaccess.dist .htaccess
Dopodiché, DEVI rimuovere la directory 'install'.
rm -rf /var/www/html/poweradmin/install
Torna di nuovo al tuo browser web e accedi alla dashboard di Poweradmin utilizzando l'URL come di seguito.
http://10.9.9.10/poweradmin/
Accedi con l'utente predefinito 'admin' e la password, fai clic sul pulsante 'Vai'.
Di conseguenza, ti verrà mostrata la dashboard di Poweradmin e l'installazione è terminata.
Passaggio 6:crea 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'.
Nella dashboard di Poweradmin, fai clic sul menu "Aggiungi zona principale".
Imposta il nome della zona con il nome di dominio 'emaa.io' e fai clic sul pulsante 'Aggiungi zona'.
Fare clic sul menu "Elenco zone" per ottenere tutte le zone disponibili. E fai clic sul pulsante 'modifica' per la zona 'emma.io'.
Fare clic sul menu "Elenco zone" per ottenere tutte le zone disponibili. E fai clic sul pulsante 'modifica' per la zona 'emma.io'.
Ora fai clic sul pulsante "Aggiungi record" e aggiungiamo correttamente la zona DNS e il record DNS per il dominio denominato "emma.io".
Successivamente, testeremo il dominio "emma.io" utilizzando un comando di utilità DNS "dig".
Controlla il server dei nomi o il record ns del dominio 'emma.io'.
dig NS emma.io @10.9.9.10
Controlla il record A DNS del dominio 'emma.io'.
dig A emma.io @10.9.9.10
E ti verrà mostrato il dominio "emma.io" ha un nameserver dal nostro server DNS "ns1.hakase-labs.io" e la "A" di quel nome di dominio corrisponde alla nostra configurazione in alto 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.