Premessa
Tutte le spiegazioni sono volutamente approssimative ed esageratamente brevi perchè questa piccola guida non può e non vuole essere esplicativa nè su cosa sia un DNS nè su quale sia il suo fiunzionamento.
Cosa è un server DNS
Ammesso per definizione che tutti sappiano cosa è un sito internet, come funziona e dove risiede, bisogna semplicemente capire come associare il suo indirizzo IP al nome di dominio, ad esempio www.orvietolug.it potrebbe risiedere su un server con indirizzo IP 1.2.3.x , un server DNS non fa altro che associare il nome orvietolug.it all'indirizzo IP 1.2.3.x.
Perchè utilizzare un server DNS locale?
Le risposte posso essere molteplici, da una riduzione dei tempi di risoluzione dei domini, ad una diminuzione di traffico di rete generato, ma il più importante a mio avviso è la tutela della privacy. Il problema della privacy nasce qui, chi offre servizi DNS sa quali domini chiediamo, ammesso che le politiche di gestione dei dati degli utenti siano etiche e legittime , perchè dovrei far sapere ad altri quali siti navigo?
Installazione di Bind9
Bind9 è un server DNS molto diffuso, vediamo come installarlo e configurarlo per il nostro scopo.
# apt-get install bind9 bind9-host dnsutilsCon questo semplice comando abbiamo installato il server bind9 e altri pacchetti utili per effettuare verifiche post installazione/configurazione.
Configurazione di Bind9
Apriamo con privilegi di amministratore il file /etc/bind/named.conf.options ed editiamolo nel seguente modo:
options {directory "/var/cache/bind";forward first;
forwarders {xxx.xxx.xxx.xxx; ## ad esempio si potrebbe utilizzare FoolDNS community http://www.fooldns.com/community.html oppure OpenDNS http://www.opendns.com/ o qualsiasi altro DNScome quello del nostro providerxxx.xxx.xxx.xxx; ## come sopra};
auth-nxdomain no; # conform to RFC1035
listen-on-v6 { any; };
};
Cerchiamo di capire cosa abbiamo fatto, innanzi tutto la riga forward first dice in parole semplici, la prima volta che richiedi il dominio www.orvietolug.it interroga il DNS esterno, dopo di che utilizza la cache locale.
In poche parole abbiamo configurato un caching server.
Nel blocco di codice di forwarders andiamo ad inserire gli indirizzi IP dei server DNS esterni che vogliamo utilizzare per effettuare la prima query.
Utilizzare il caching server appena creato
Apriamo con privilegi di amministratore ed editiamo il file /etc/resolv.conf nel seguente modo
nameserver 127.0.0.1nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx
Salviamo e blocchiamolo con il comando chattr (per info man chattr)
# chattr +i /etc/resolv.confVerifica finale
Eseguiamo un paio di comandi per verificare che tutto sia andato a buonfine.
Eseguiamo nslookup su orvietolug.it per vedere quale DNS stiamo utilizzando, la risposta dovrebbe essere come questa:
~$ nslookup orvietolug.itServer: 127.0.0.1
Address: 127.0.0.1#53
Infine eseguiamo time nslookup su un sito che non abbiamo ancora visitato con il nostro DNS locale.
La prima risposta dovrebbe essere:
~$ time nslookup www.gnu.orgServer: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
www.gnu.org canonical name = gnu.org.
Name: gnu.org
Address: 199.232.41.10
real 0m0.297s
user 0m0.008s
sys 0m0.004s
Mentre la seconda:
~$ time nslookup www.gnu.orgServer: 127.0.0.1
Address: 127.0.0.1#53
Non-authoritative answer:
www.gnu.org canonical name = gnu.org.
Name: gnu.org
Address: 199.232.41.10
real 0m0.022s
user 0m0.008s
sys 0m0.004s
Che ci indica che tutto funziona egregiamente.