Premessa : Ogni volta che visitiamo un sito, il browser risolve il nome a dominio, ad esempio “miodominio.it” ,
in un IP come 1.2.3.4 . Tramite IP il browser potrà fare richiesta al server che ospita il dominio e
quindi scambiare contenuti. In genere queste richieste DNS vengono fatte al server del proprio ISP
o a server pubblici come Google DNS, OpenDNS… che fino ad ora non hanno ancora censurato
nessun dominio, forse eccetto per quelli dannosi che portano a malware.
C’era una volta BIND, probabilmente il piu’ noto software di gestione DNS al mondo, purtroppo segnato da un lungo elenco d’innumerevoli bug e con la gestione dei parametri del server DNS tramite file di testo, che può risultare scomodo e lento, quindi fortunatamente hanno messo al mondo “PowerDNS”.
PowerDNS è un server DNS scritto in C++ sotto licenza GPL. È un prodotto della società olandese PowerDNS.COM BV, con numerosi contributi da parte della comunità Open Source.
I principali punti di forza di PowerDNS sono:
- Backend per svariati database quali ad esempio MySQL e PostgreSQL
- Facilità di configurazione
- Sicurezza
- Versatilità
Prima di procedere con l’installazione è doveroso illustrare le parti che compongono questo software:
- pdns-server: il server DNS vero e proprio
- pdns-backend-*: il backend dove sono memorizzati i dati ad esempiopdns-backend-mysql utilizzerà MySQL per memorizzare i record DNS
- pdns-recursor: un server necessario se si devono risolvere altri domini Internet oltre a quelli gestiti dal server
Installiamo!
Come sempre facile e veloce:
sudo apt-get install pdns-server pdns-backend-mysql pdns-recursor mysql-server mysql-clients
** Durante l’installazione vi verra’ chiesto se avete gia creato il DB di riferimento oppure se volete crearlo seduta stante, a voi gestire la cosa come meglio credete ed in base al vostro livello di conoscenza in ambito database. Per coloro che fossero a digiuno sull’argomento ecco quello che andrebbe fatto :
Entriamo in MySQL Shell tramite root
# mysql -u root -p
– Creiamo il database:
>> mysql> create database powerdns;
>> mysql> exit;
– Creiamo un utente associato al database creato, per sicurezza, mai usare l’accesso root per
collegare software al database.
>> mysql> GRANT ALL ON powerdns.* TO ‘powerdns’@’localhost’ IDENTIFIED BY ‘la-password’;
mysql> FLUSH PRIVILEGES;
mysql> exit;
– Importiamo le tabelle che vengono fornite da PowerDNS sul database creato:
>> # mysql -h localhost -u nome-utente -p powerdns < /usr/share/doc/pdns-backend-mysql/mysql.sql
Adesso configuriamo alcune impostazioni del database di pdns:
# nano /etc/powerdns/pdns.d/pdns.local
gmysql-host=localhost
gmysql-port=3306
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=mypassword
#gmysql-socket=
Riavviamo il server di PowerDNS
# /etc/init.d/pdns restart
PowerDNS puo avviarsi anche in Monitor Mode:
# /etc/init.d/pdns monitor
Ora vediamo se un dominio a caso (d6f5v4.it) si risolve nel nostro server locale:
# host http://www.d6f5v4.it 127.0.0.1
In teoria non dovrebbe risultare alcun record A poichè non è presente nel server locale. Non
abbiamo aggiungo nessun record nel database.. Facciamolo!
# mysql -h localhost -u username -p powerdns
mysql> INSERT INTO domains (name, type) values (‘d6f5v4.it’,’NATIVE’);