Gestione DNS con Bind

July 19, 2007

La guida in questione proporrà i concetti fondamentali per una corretta gestione dei DNS utilizzando Bind. Utilizzeremo la versione 9 di Bind (ultima versione attualmente disponibile), ma tale guida andrà sicuramente benissimo anche per le successive versioni.

1.1 Come funziona un DNS
Il Domain Name System (DNS), ovvero il sistema di risoluzione dei nomi a dominio, è un database distribuito gerarchicamente (ad albero). Tale sistema si occupa di memorizzare nel proprio database i nomi a dominio e i relativi IP a cui puntano in modo tale da svolgere la funzione di conversione “dominio.it -> IP” e “IP -> dominio.it”. Quando immettiamo un indirizzo web nel nostro browser, inviamo una richiesta ai DNS impostati nella nostra connessione internet. I DNS effettueranno una ricerca del nome a dominio all’interno del proprio database e se presente restituiranno al nostro browser l’IP ad esso associato.

1.2 DNS di Cache, DNS Autoritativo
E’ possibile implementare un DNS nel proprio sistema per servire due diversi scopi.
DNS di Cache, si occupa di memorizzare in un Server Locale le associazioni dei nomi a dominio richiesti. In questa guida però verranno proposte le configurazioni per impostare un DNS Autoritativo, ovvero il DNS principale per i nomi a dominio che intendiamo ospitare all’interno del nostro server e quindi gestirne i record DNS. Per comprendere meglio il concetto di DNS autoritativo prenderemo in esempio l’acquisto di miodominio.it. Il provider con cui abbiamo stipulato il contratto per miodominio.it ci mette a disposizione la gestione dei DNS e, pertanto, verrà data la possibilità di far puntare il dominio su un determinato indirizzo IP (l’IP del server che gestisce lo spazio del nostro sito). In questo determinato caso, il DNS autoritativo di miodominio.it è il server DNS del provider scelto. I vantaggi di configurare il proprio DNS autoritativo sono molti in quanto se il server DNS del provider per motivi tecnici risultasse irraggiungibile, il sito web diventerà irreperibile. Un altro vantaggio è appunto nella gestione stessa dei nostri domini, infatti si avrebbe una gestione centralizzata di tutti i domini da noi registrati.

1.3 Installazione di Bind su Debian 4

L’installazione di Bind su Debian risulta semplice se utilizziamo “apt-get install” e indichiamo i pacchetti da installare nel sistema. Di seguito il comando da utilizzare:
apt-get install bind9 bind9-host dnsutils

1.4 Configurazione Base DNS Autoritativo
In questo capitolo inizierà le vera e propria configurazione del DNS Autoritativo per il dominio: “miodominio.it”. Innanzitutto andremo a creare una directory dove verranno salvati i files (zone) di ogni singolo dominio da noi configurato, compreso miodominio.it. Per convenienza abbiamo scelto: “/etc/namedb”, quindi da shell: “mkdir /etc/namedb”.
Successivamente andremo a creare la zona del nostro dominio, ovvero il file contenente tutti i Record inerenti al dominio: “nano /etc/namedb/miodominio.it.db”. Come avrete notato, abbiamo creato il file “miodominio.it.db” all’interno della directory precedentemente creata. Per semplificare la comprensione della guida, ho scelto di mostrare un esempio di come apparirà il file con all’interno i record e le impostazioni del dominio:

$ORIGIN miodominio.it.
$TTL 86400
@     IN     SOA    ns1.miodominio.it.     hostmaster.miodominio.it. (
2007042201 ; serial-number
8H         ; time-to-refresh
2H         ; time-to-retry
4W         ; time-to-expire
1D )       ; minimum-TTL

IN     NS     ns1.miodominio.it.
IN     NS     ns2.miodominio.it.

IN     MX     10      mail.miodominio.it.

IN     A       192.168.0.2 ; IP Server Web

ns1               IN     A       192.168.0.2 ; IP DNS Primario
ns2               IN     A       192.168.0.3 ; IP DNS Secondario

ftp                 IN     CNAME   miodominio.it.
mail              IN     CNAME   miodominio.it.
www            IN     CNAME   miodominio.it.

Spieghiamo velocemente i record inseriti nel file “/etc/namedb/miodominio.it.db”.
$ORIGIN miodominio.it. viene utilizzato per impostare il nome del dominio da accodare a qualsiasi record non qualificato, dove viene specificato solo l’host. Ad esempio abbiamo il nostro record “ns1 IN A 192.168.0.2″, dove ns1 è l’host e con la direttiva $ORIGIN impostata prende automaticamente il valore di “ns1.miodominio.it.”.
$TTL (Time To Live), specifica la durata di validità dei records presenti all’interno del file di zona. Questo valore viene specificato in secondi e nel nostro caso “86400″ indica la durata di validità di 24 ore. Un valore più alto, si traduce in un minor numero di richieste al nostro Server DNS, in quanto il Client memorizza i valori di zona dopo la prima richiesta e invia la sua prossima richiesta solo dopo che le 24 ore impostate nel $TTL siano trascorse.
@ Richiama il dominio impostato nella direttiva $ORIGIN e successivamente SOA (Start Of Autority) che viene utilizzato per impostare le direttive principali del file di Zona. ns1.miodominio.it. (Il NameServer Primario), hostmaster.miodominio.it. (l’indirizzo email principale del dominio, dove il “.” sostituisce “@”). Notiamo inoltre il serial-number (2007042201) che prende il valore dalla data di modifica Anno+Mese+Giorno+Modifiche, dove “Modifiche” è un valore numerico da incrementare tante volte quante le modifiche effettuate durante il giorno. “time-to-refresh, time-to-retry, time-to-expire” sono valori inerenti ai server slave, ponendo infatti caso, che questa zona risieda in un server slave, il time-to-refresh determina il periodo di attesa del server slave prima di richiedere al server master se sono avvenute eventuali modifiche al file di zona. time-to-retry è il tempo di attesa dell’invio della richiesta nel caso in cui precedentemente il server master non abbia risposto. time-to-expire indica il tempo di scadenza del server slave, infatti, nel caso in cui il server master non risponda entro il tempo determinato da questa direttiva, il server slave cessa di funzionare. Minimum-TTL invece, è l’ammontare di tempo utilizzato dagli altri NameServer per memorizzare le informazioni della Zona. I valori da impostare in queste direttive vengono espressi in secondi, ma è possibile utilizzare (M – Minuti; H – Ore; D – Giorni W – Settimane).
“IN NS ns1.miodominio.it.”, viene utilizzato per impostare i NameServer Autoritativi della Zona.
“IN MX 10 mail.miodominio.it.”, viene utilizzato per indicare il Mail Server dove verrà inoltrata la posta per il dominio configurato nel file di zona. Il valore numerico indica la priorità, infatti è possibile utilizzare più Mail Server e indicare un altro record MX con priorità 20. Se infatti il Mail Server con priorità 10 non dovesse rispondere (DOWN), la posta verrebbe inoltrata nel Mail Server con priorità 20, 30 e così via.
“IN A 192.168.0.2″, viene utilizzato per impostare un Record Alias, ovvero indicare ad un host a quale indirizzo IP deve puntare.
“IN CNAME” viene utilizzato per impostare un Record Alias, ma che a differenza di “IN A”, punta ad un Nome Host al quale precedentemente è stato assegnato un Record “IN A”.

Ricapitolando, abbiamo creato il nostro file “/etc/namedb/miodominio.it.db”, adesso non ci resta che includerlo nel file di configurazione di Bind, quindi: “nano /etc/bind/named.conf”. Il file si presenterà in questo modo:

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include “/etc/bind/named.conf.options”;

// prime the server with knowledge of the root servers
zone “.” {
type hint;
file “/etc/bind/db.root”;
};

// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912

zone “localhost” {
type master;
file “/etc/bind/db.local”;
};

zone “127.in-addr.arpa” {
type master;
file “/etc/bind/db.127″;
};

zone “0.in-addr.arpa” {
type master;
file “/etc/bind/db.0″;
};

zone “255.in-addr.arpa” {
type master;
file “/etc/bind/db.255″;
};

// zone “com” { type delegation-only; };
// zone “net” { type delegation-only; };

// From the release notes:
//  Because many of our users are uncomfortable receiving undelegated answers
//  from root or top level domains, other than a few for whom that behaviour
//  has been trusted and expected for quite some length of time, we have now
//  introduced the “root-delegations-only” feature which applies delegation-only
//  logic to all top level domains, and to the root domain.  An exception list
//  should be specified, including “MUSEUM” and “DE”, and any other top level
//  domains from whom undelegated responses are expected and trusted.
// root-delegation-only exclude { “DE”; “MUSEUM”; };

include “/etc/bind/named.conf.local”;

Aggiungiamo quindi in fondo al file di configurazione di Bind (named.conf), quanto segue:

zone “miodominio.it” {
type master;
file “/etc/namedb/miodominio.it.db”;
};

Abbiamo così creato la zona “miodominio.it” all’interno del file di configurazione. Il NameServer della Zona è di tipo Master, ovvero il DNS Primario e infine, abbiamo indicato dove si trova il file di Zona con all’interno le Direttive e i Records riguardanti il dominio in questione.

Per applicare i cambiamenti e permettere a Bind di ricaricare i file di configurazione con relative Zone, eseguiamo da shell il comando: “/etc/init.d/bind9 reload”.

In questa guida, abbiamo posato le basi per una corretta configurazione dei DNS e la Gestione delle Zone evitando di spiegare come configurare un Server Slave, in quanto è sufficiente configurare un solo Server DNS, ma che si metta in ascolto su 2 IP differenti. Gli IP mostrati nel file di Zona dell’esempio “/etc/namedb/miodominio.it.db”, sono IP di una rete locale e ovviamente, sarà necessario sostituirli con gli indirizzi IP pubblici della connessione a Internet per rendere il NameServer reperibile.
Un’ultima ma importantissima osservazione è la necessità di registrare i NameServer, prima di verificarne il corretto funzionamento e quindi vi consiglio di consultare la guida “Impostare i DNS (Domain Name System)” presente all’interno del Sito.

Per chiarimenti, errori presenti nel testo o altro, consiglio di consultare il forum.

Related Post

  • No Related Post