GNU/Linux >> Linux Esercitazione >  >> Linux

Come configurare PowerDNS su Ubuntu Linux

Stai lottando per creare un server DNS che supporti alta disponibilità e ridondanza, ma con funzionalità potenti e moderne? PowerDNS è la soluzione migliore. PowerDNS (pdns) è un software server DNS gratuito e open source per sistemi operativi simili a Unix.

In questo articolo imparerai come installare e configurare PowerDNS con il database MariaDB sul sistema Debian/Ubuntu Linux.

Pronto per avere un server DNS completamente funzionante? Salta subito!

Prerequisiti

Questo tutorial è una dimostrazione pratica, assicurati di avere a disposizione quanto segue:

  • Una macchina Linux:questo tutorial utilizza l'ultima versione di Debian 11 Bullseye.
  • Un utente con privilegi di root.

Installazione e configurazione del database MariaDB

Per impostazione predefinita, PowerDNS supporta molti back-end come i back-end di database (PostgreSQL e MySQL/MariaDB), i file della zona di collegamento e le API JSON. In questo tutorial utilizzerai il database MariaDB come backend del database PowerDNS.

1. Innanzitutto, apri il tuo terminale e SSH sul tuo server.

2. Quindi, esegui apt install comando seguente per installare le dipendenze del pacchetto di base (software-properties-common dirmngr apt-transport-https ) al tuo sistema.

sudo apt install software-properties-common dirmngr apt-transport-https -y

3. Esegui i comandi seguenti per aggiungere il repository MariaDB e la chiave GPG al tuo sistema. La configurazione del repository MariaDB viene salvata in /etc/apt/sources.list.d/ directory, mentre la chiave GPG è salvata nel /etc/apt/trusted.gpg. directory.

# Add MariaDB repository for Debian system
sudo add-apt-repository 'deb [arch=amd64,i386,arm64,ppc64el] https://mirror.23m.com/mariadb/repo/10.6/debian bullseye main'

# Add GPG key for MariaDB repository
wget -qO- https://mariadb.org/mariadb_release_signing_key.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/mariadb_release_signing_key.gpg

4. Ora, esegui i seguenti comandi per aggiornare il repository e installare il pacchetto (mariadb-server ).

Il servizio MariaDB si avvia dopo l'installazione sulle distribuzioni Debian e Ubuntu e verrà eseguito automaticamente all'avvio/avvio del sistema.

# refresh package index
sudo apt update

# install MariaDB database
sudo apt install mariadb-server -y

5. Esegui mysql_secure_installation comando seguente per proteggere l'installazione di MariaDB. mysql_secure_installation

mysql_secure_installation

6. Premere Invio sullo schermo del terminale quando viene richiesto di digitare il root password per MariaDB poiché l'installazione predefinita di MariaDB viene fornita senza password.

7. Inserisci Y al prompt mostrato di seguito per modificare l'autenticazione predefinita in unix_socket .

8. Inserisci Y di nuovo al prompt seguente e digitare una nuova password complessa per il server MariaDB.

9. Ora inserisci Y alla richiesta mostrata di seguito. L'installazione predefinita di MariaDB viene fornita con l'utente anonimo predefinito a livello di produzione, quindi è necessario rimuovere l'utente anonimo.

10. Al prompt successivo, inserisci Y per disabilitare l'accesso remoto per l'utente root. Devi disattivare MariaDB root utente per accedere in remoto da altri server per motivi di sicurezza.

11. Digita Y di nuovo per eliminare il database di prova predefinito e rimuovere tutti gli accessi e le autorizzazioni.

12. Infine, digita Y di nuovo per ricaricare tutti i privilegi delle tabelle e applicare nuove modifiche al server MariaDB.

Una volta completata tutta la configurazione di MariaDB, riceverai un messaggio di conferma come lo screenshot qui sotto.

Installazione di PowerDNS su Debian/Ubuntu Linux

Una volta completata l'installazione di MariaDB per il backend del database PowerDNS, sei pronto per installare i pacchetti PowerDNS. Aggiungerai il repository PowerDNS ufficiale e la chiave GPG e installerai i pacchetti del server PowerDNS.

Per installare gli ultimi pacchetti PowerDNS dal repository ufficiale:

1. Esegui i comandi seguenti per aggiungere il repository PowerDNS e la chiave GPG al tuo sistema.

# Download PowerDNS GPG Key
wget -qO- https://repo.powerdns.com/FD380FBB-pub.asc | gpg --dearmor > /etc/apt/trusted.gpg.d/pdns.gpg

# Adding the PowerDNS Repository for Debian 11 Bullseye System
echo "deb [arch=amd64] http://repo.powerdns.com/debian bullseye-auth-45 main" | sudo tee /etc/apt/sources.list.d/pdns.list

# Adding the PowerDNS Repository for Ubuntu 20.04 System
echo "deb [arch=amd64] http://repo.powerdns.com/ubuntu focal-auth-45 main" | sudo tee /etc/apt/sources.list.d/pdns.list

2. Quindi, crea un nuovo file di configurazione denominato /etc/apt/preferences.d/pdns con il tuo editor preferito, quindi popolare il file con la seguente configurazione.

Con la configurazione seguente, tutti i pacchetti che iniziano con il nome pdns- verrà installato automaticamente dal repository PowerDNS (repo.powerdns.com ) invece del repository Debian/Ubuntu.

# all packages with first name pdns- will be installed from the repo.powerdns.com repository
Package: pdns-*
Pin: origin repo.powerdns.com
Pin-Priority: 600

3. Esegui i seguenti comandi per aggiornare e aggiornare i repository, quindi installa PowerDNS (pdns-server ) e il backend PowerDNS MariaDB/MySQL (pdns-backend-mysql ).

Dopo l'installazione, il servizio PowerDNS (pdns.service ) statistiche e viene abilitato automaticamente.

# refresh package index after adding new repository
sudo apt update

# install PowerDNS and PowerDNS MySQL/MariaDB backend
sudo apt install pdns-server pdns-backend-mysql -y

4. Infine, esegui systemctl comando qui sotto per verificare il status del servizio PowerDNS (pdns.service ).

sudo systemctl status pdns.service

Come puoi vedere di seguito, il servizio PowerDNS è attivo (in esecuzione) sulla porta TCP predefinita 53 e viene avviato come Server autorevole PowerDNS .

Creazione di database e importazione di schemi di database per PowerDNS

Dopo aver installato PowerDNS, configurerai MariaDB come backend di database per PowerDNS. Per farlo, creerai un nuovo database e un nuovo utente, quindi importerai lo schema del database PowerDNS.

1. Eseguire il comando seguente per accedere alla shell MySQL come utente root . Inserisci la tua password di root MariaDB quando richiesto.

mysql -u root -p

Dopo aver effettuato l'accesso alla shell MySQL, riceverai il messaggio di benvenuto come lo screenshot qui sotto.

2. Quindi, esegui le seguenti query per creare un nuovo database (pdns ) con un nome utente amministratore impostato come pdnsadmin .

# creating database named pdns
create database pdns;

# create user pdnsadmin and grant privileges to the database pdns
grant all on pdns.* to [email protected] identified by 'StrongPdnsPasswd';

# reload database privileges to apply new changes
flush privileges;

# exit from the MySQL shell
exit

3. Eseguire il comando seguente per importare lo schema del database PowerDNS in pdns Banca dati. Assicurati di digitare la password corretta per il pdnsadmin utente.

L'installazione predefinita di PowerDNS MySQL back-end include lo schema del database, disponibile in /usr/share/pdns-backend-mysql/schema/ directory.

# import the schema.mysql.sql to the pdns database
mysql -u pdnsadmin -p pdns < /usr/share/pdns-backend-mysql/schema/schema.mysql.sql

4. Ora esegui il seguente mysqlshow comando per verificare lo schema del database del pdns Banca dati. Questo comando mostra tutte le tabelle disponibili su pdns Banca dati.

# Check list of tables on the pdns database
mysqlshow pdns

Di seguito puoi vedere le tabelle disponibili su pdns Banca dati.

Configurazione di PowerDNS con MariaDB Backend

Hai configurato MariaDB e configurato il tuo database. Ma come fai a sapere se PowerDNS funziona? Creerai una nuova configurazione di back-end MariaDB per PowerDNS. Il servizio PowerDNS utilizza questa configurazione per connettersi al database MySQL e archiviare tutti i dati DNS nel database.

1. Esegui il seguente comando su stop il servizio PowerDNS (pdns.service ) prima di creare la configurazione del backend PowerDNS.

sudo systemctl stop pdns.service

2. Quindi, crea un file chiamato myself.conf in /etc/powerdns/pdns.d/ directory con il tuo editor di testo e popolare il file con la configurazione seguente.

Modifica il nome utente e la password del database con le tue informazioni e salva le modifiche.

Tutte le configurazioni aggiuntive per PowerDNS devono essere salvate nel /etc/powerdns/pdns.d directory.

# Define the gmysql backend
launch+=gmysql

# Details MariaDB database for PowerDNS
gmysql-host=127.0.0.1
gmysql-port=3306
gmysql-dbname=pdns
gmysql-user=pdnsadmin
gmysql-password=StrongPdnsPasswd
gmysql-dnssec=yes
# gmysql-socket=

3. Esegui i seguenti comandi per modificare l'autorizzazione e la proprietà del mysql.conf file. A questo punto viene creata la configurazione del backend MySQL per PowerDNS.

# change the ownership to user and group pdns
sudo chown pdns:pdns /etc/powerdns/pdns.d/mysql.conf

# change permission of the file
sudo chmod 640 /etc/powerdns/pdns.d/mysql.conf

4. Ora, esegui i seguenti comandi per avviare il servizio PowerDNS (pdns.service ), e verifica il servizio status .

# start PowerDNS service
sudo systemctl start pdns.service

# verify status of the PowerDNS service
sudo systemctl status pdns.service

Se la tua configurazione PowerDNS è corretta, riceverai il seguente output che mostra che lo stato del servizio PowerDNS è active (running) .

5. Infine, esegui il comando seguente per controllare il syslog file. Questo comando ti consente di assicurarti che il modulo backend MySQL sia caricato sul server PowerDNS.

grep -rin pdns_server /var/log/syslog

Creazione di zone DNS su PowerDNS

PowerDNS fornisce un'utilità della riga di comando chiamata pdnsutil per la gestione di Zone e DNSSEC. Il pdnsutil il comando può essere eseguito in remoto per apportare modifiche al database di backend PowerDNS.

In questa demo creerai una nuova zona DNS per il example.io dominio.

1. Esegui pdnsutil comando seguente per creare una nuova zona DNS (create-zone ) denominato example.io .

pdnsutil create-zone example.io

2. Quindi, eseguire i seguenti comandi per creare un nuovo server dei nomi e assegnare il server dei nomi all'indirizzo IP del server PowerDNS.

# define ns1 A record to IP address 172.16.5.10
pdnsutil add-record example.io ns1 A 172.16.5.10

# define nameserver for example.io to the ns1.example.io
pdnsutil add-record example.io @ NS ns1.example.io

3. Esegui il comando seguente per aggiungere il nuovo record A per il example.io dominio. Questo dominio utilizzerà l'indirizzo IP 172.16.5.20 .

pdnsutil add-record example.io @ A 172.16.5.20

4. Esegui i seguenti comandi per aggiungere nuovi sottodomini per le tue applicazioni.

# add subdomain www
pdnsutil add-record example.io www A 172.16.5.20

# add subdomain storage with the target server 172.16.5.50
pdnsutil add-record example.io storage A 172.16.5.50

5. Ora esegui il comando seguente per aggiungere un record MX. Il record MX gestisce la consegna delle email per il dominio principale (example.io ).

pdnsutil add-record example.io @ MX "10 example.io"

6. Esegui i comandi seguenti per impostare nano come editor predefinito e apri il example.io file.

# setup default editor on the system temporary
export EDITOR=nano

# edit DNS zone example.io manually
pdnsutil edit-zone example.io

Modifica il record SOA predefinito in example.io file con la configurazione seguente. Fatto ciò, salva le modifiche ed esci dall'editor.

example.io      3600    IN      SOA     ns1.example.io admin.example.io 0 10800 3600 604800 3600

7. Digita a e premere Invio per confermare l'applicazione delle nuove modifiche, come mostrato di seguito.

8. Ora, esegui il comando seguente per mostrare tutti i record DNS disponibili su example.io zona.

pdnsutil list-zone example.io

Puoi confermare di seguito che il record SOA che hai modificato (passaggio sei) si riflette nell'elenco dei record DNS.

9. Infine, eseguire il comando seguente per verificare la configurazione delle zone PowerDNS.

pdnsutil check-all-zones

Di seguito puoi vedere che ci sono sette record su example.io zona senza alcun errore e avviso.

Verifica della propagazione DNS

Hai creato correttamente la zona DNS per example.io dominio, ed è fantastico! Ora verificherai la propagazione DNS del example.io dominio utilizzando lo strumento Domain Information Groper (DIG). Il dig command è lo strumento di ricerca DNS che ti consente di verificare la propagazione DNS e di risolvere i problemi del tuo server DNS.

1. Esegui il seguente comando su install il dnsutils pacchetto sul tuo sistema.

Il dig il comando fa parte del dnsutils pacchetto.

sudo apt install dnsutils -y

2. Quindi, esegui dig comando seguente per controllare il record A per example.io dominio. In questo esempio, l'indirizzo IP del server PowerDNS è 172.16.5.10 .

dig example.io @172.16.5.10

Nel ANSWER SECTION , vedrai un output simile come di seguito.

3. Inoltre, esegui i seguenti comandi per controllare un altro sottodominio, come www.example.io e storage.example.io .

# check subdomain www.example.io
dig www.example.io @172.16.5.10

# check subdomain storage.example.io
dig storage.example.io @172.16.5.10

Di seguito, il www.example.io il sottodominio viene risolto sullo stesso server del example.io dominio.

Il storage.example.io il sottodominio viene risolto su un altro server con un indirizzo IP di 172.16.5.50 , come mostrato di seguito.

4. Infine, esegui dig comando seguente per controllare il record MX per example.io dominio.

Puoi anche controllare altri record DNS, come TXT , MX , SOA , e così via.

dig MX example.io @172.16.5.10

Conclusione

Durante questo tutorial, hai imparato come configurare il backend del database PowerDNS e MariaDB in Debian/Ubuntu Linux. Ti sei anche reso conto che PowerDNS ti consente di creare e gestire server DNS con piccole risorse, a differenza di altre applicazioni server DNS. Inoltre, hai imparato a controllare la configurazione e la propagazione del DNS con il dig comando.

Come portare PowerDNS al livello successivo? Forse aggiungendo il recursor di PowerDNS per abilitare la cache DNS e configurare dnsdist come bilanciatore di carico DNS? Ora impazzisci e inizia a creare server DNS distribuiti e ad alta disponibilità.


Linux
  1. Come installare MariaDB 10.4 su Ubuntu 18.04

  2. Come installare Java su Ubuntu Linux

  3. Come installare usb-creator su Ubuntu Linux

  4. Come installare MariaDB su Ubuntu 22.04

  5. Come installare file .deb su Ubuntu Linux

Come installare MariaDB su Ubuntu

Come installare Java 14 su Linux, Ubuntu, CentOS

Come installare Rust su Ubuntu Linux

Come installare ClamAV su Ubuntu Linux

Come installare Webmin su Ubuntu Linux

Come installare iTunes su Ubuntu Linux