Come funziona il sistema DNS e come si gestisce un DNS server con Bind

Il Domain Name System (DNS) e uno tra i servizi meno compresi ma allo stesso tempo tra i piu importanti di Internet. Il DNS e definito negli RFC 1034 e 1035, ed il ha il fondamentale ruolo di convertire i nomi degli host collegati ad una rete (Internet ad esempio) in indirizzi IP e viceversa. Nella pratica esegue una semplice traduzione. Gli esseri umani per loro natura sono portati a ricordare con piu facilita stringhe di caratteri, nomi nella fattispecie, mentre i computer per la loro architettura devono gestire tutto con sequenze di numeri.

Linux come server DNS con Bind

Linux ben si presta ad essere configurato per assumere il ruolo di server DNS, ed in particolare prendendo in considerazione la distribuzione Ubuntu, il pacchetto da installare con il sempre presente e comodissimo gestore dei pacchetti è bind9. In alternativa da riga di comando è possibile utilizzare apt.

gabriele@gabriele:∼# sudo apt-get update

gabriele@gabriele:∼# sudo apt-get install bind9

I file di configurazione del DNS si trovano nella directory /etc/bind, ed i file principali sono:

  • named.conf
  • named.conf.local
  • named.conf.options
  • db.root

Nel file named.conf la riga include specifica il nome del file che contiene le opzioni DNS. La riga directory nel file di opzioni named.conf.options indica al DNS dove cercare i file. Tutti i file utilizzati da bind sono relativi a questa directory.

Il file /etc/bind/db.root descrive i server di nomi radice presenti nel mondo. I server cambiano nel tempo e conseguenza debbono essere aggiornati di tanto in tanto.

Modi di funzionamento di un DNS server

I server DNS possono essere classificati in due categorie:

  • caching
  • autoritario

Un nameserver caching non contiene file di zona, vale a dire corrispondenze fra indirizzi IP e nomi hosts, ma contiene soltanto i riferimenti ai DNS padre dell’albero e pertanto delega ad essi qualsiasi risoluzione dei nomi, memorizzando nella propria memoria cache i risultati di queste ricerche in modo da velocizzare tutti gli accessi susseguenti al primo.

Un nameserver autoritario contiene le corrispondenze fra indirizzi IP e nomi hosts di tutti i clients della rete che serve, pertanto ha autorità di risoluzione diretta, cioè non deve chiedere ad altri DNS quali sono i nomi o gli indirizzi dei computers. Nella pratica questo si traduce in tre direttive di configurazione nel caso in cui la risoluzione non possa essere portata a termine usando la propria cache:

1. ROOT ONLY: Viene fatta richiesta ai root server il cui indirizzo è noto e da qui si segue il percorso dei DNS fino a trovare l’IP corretto. I root server sono i DNS per le zone come .it, .com, .net e così via. Questi sono noti a priori.

2. FORWARD ONLY: La richiesta viene passata al DNS server del provider impostato; se questo non ha risposta viene restituito un errore.

3. FORWARD FIRST: Prima la richiesta viene passata al DNS del proprio provider, se questo non ha risposta vengono interrogati i root server.

Per poter installare un server DNS autoritario, bind9 deve essere impostato come “forward first” sia perché in genere il DNS del proprio provider  risponde più velocemente degli altri, sia per una questione di ottimizzazione, per generare meno traffico inutile in Internet.