L'ingegnere quantistico Seth Lloyd è convinto che l'universo sia un gigantesco computer. Speriamo non faccia girare Windows.

— Kevin Kelly

DNS dinamico & DHCP (1)

http://www.stenoweb.it/files/blog/ddns.png Nel caso la nostra rete cominci ad assumere dimensioni importanti la soluzione dnsmasq comincia ad andarci strettina. Lode a dnsmasq, di una semplicità disarmante, ma purtroppo soffre di almeno una grave limitazione quando le dimensioni della rete aumentano: non è possibile predisporre un servizio DNS di “backup” qualora il primo non sia raggiungibile. E siccome il DNS e il DHCP sono fondamentali per il corretto funzionamento di quasi tutti i servizi direi che è giunta l'ora di porvi rimedio utilizzando, in questo caso con Ubuntu Server 8.04, i due pacchetti che rappresentano lo standard de facto in materia. Bind9 e DHCPD. In questo post iniziamo con la semplice configurazione in caching, per poi proseguire nel successivo con una più utile configurazione Master su misura per il nostro dominio. Proseguiremo poi con il DHCP e con l'aggiornamento automatico del DNS (DDNS) da parte di quest'ultimo quando rilascia un nuovo IP.

Installazione

L'installazione di BIND non pone problemi:

sudo apt-get install bind9

Caching DNS

Di default BIND viene già installato per agire da semplice caching DNS. Con questa funzionalità aumentiamo notevolmente le performance nella risoluzione dei nomi di dominio internet nella nostra rete, in quando BIND si “ricorda” le interrogazioni precedenti.

Sistemiamo la configurazione definendo i server DNS pubblici di cui fare la cache.
Editiamo a tal proposito il file:

sudo nano /etc/bind/named.conf.options

e nella sezione “forwarders” definiamo i server del provider (in questo caso sono quelli di OpenDNS):
forwarders {
208.67.222.222;
208.67.220.220;
};

Ricordiamoci anche, qualora non lo avessimo già fatto, di specificare nel file /etc/resolv.conf il nostro DNS:

search stenoit.com
nameserver 127.0.0.1

E' tutto. Riavviamo il servizio:

sudo /etc/init.d/bind9 restart

e proviamo :
dig google.com

alla fine dovrei vedere il tempo impiegato dalla query. Ad esempio:
;; Query time: 67 msec

Ripetendo ora nuovamente lo stesso comando dig google.com di prima, il tempo dovrebbe essersi notevolmente ridotto. Ad esempio:
;; Query time: 2 msec

dimostrandoci che il servizio di caching è attivo e funzionante.

BIND fa la cache delle informazioni DNS nella RAM, non sul disco. Potrebbe non essere un problema visto che in genere sulle moderne macchine questa non manca e che periodicamente BIND elimina i record più vecchi, ma se prevediamo un alto traffico potrebbe essere utile fare la flush della cache con il comando:

sudo rndc -s localhost flush

o settare la massima dimensione della cache con il parametro max-cache-size nel file di configurazione.

A presto con la configurazione Master.

Networkmanager rigenera ogni volta il file resolv.conf quindi bisogna togliere i permessi di scrittura se si usa quello per connettersi:
sudo chmod 444 /etc/resolv.conf

Credo sia il servizio "resolvconf" che rigenera il file resolv.conf.
Cmq a me non interessa, dal momento che su di un server DNS (lo scopo finale di questa serie) sia networkmanager che resolvconf non sono di certo installati.