40.5. Struttura di un file zona

Servono due tipi di file zona: uno per attribuire un indirizzo IP al nome di un host e l'altro per fare l'esatto contrario, cioè allocare un nome host ad un determinato indirizzo IP.

[Tip]Il punto (.) nei file zona

D'importanza fondamentale è il . nei file zona. A nomi di host senza il punto finale viene sempre aggiunta automaticamente la zona. E' quindi necessario porre un . alla fine di nomi completi, già provvisti di dominio completo, per evitare che il dominio venga aggiunto una seconda volta. La mancanza di questo punto alla fine o la sua posizione errata sono sicuramente gli errori più comuni nella configurazione di server dei nomi.

Osserviamo ora il file zona mondo.zone responsabile per il dominio Domain mondo.all mostrato nell'Esempio 40.6, «File /var/lib/named/mondo.zone».

Esempio 40.6. File /var/lib/named/mondo.zone

$TTL 2D
mondo.all IN SOA      gateway  root.mondo.all.(
              2003072441  ; serial
              1D          ; refresh
              2H          ; retry
              1W          ; expiry
              2D )        ; minimum

             IN NS       gateway
             IN MX       10 sole

 gateway     IN A        192.168.0.1
             IN A        192.168.1.1
 sole        IN A        192.168.0.2
 luna        IN A        192.168.0.3
 terra       IN A        192.168.1.2
 marte       IN A        192.168.1.3
 www         IN CNAME    luna
Rigo 1:

$TTL definisce il TTL standard (ingl. Time To Live), ovvero la scandenza valida per l'intero contenuto di questo file: due giorni, in questo caso 2D= 2 days)..

Rigo 2:

Ha inizio qui il SOA control record (SOA = Start of Authority):

  • Al primo posto vi è il nome del dominio da amministrare mondo.all, con un . alla fine, per evitare che venga aggiunta la zona una seconda volta. Alternativamente, si può digitare una chiocciola @, in questo caso la zona viene evinta dalla rispettiva registrazione in /etc/named.conf.

  • Dopo l'IN SOA, abbiamo il nome del server dei nomi, responsabile per questa zona in funzione di master. In questo caso, il nome gateway, diventa automaticamente gateway.mondo.all, perché non seguito da un ..

  • Segue l'indirizzo e-mail della persona responsabile per il server dei nomi. Dal momento che la chiocciola @ possiede già un significato particolare, si aggiungerà semplicemente un ., di modo che, al posto di root@mondo.all avremo root.mondo.all.; non dimenticate il punto alla fine, altrimenti viene aggiunta la zona una seconda volta.

  • Alla fine abbiamo una (, per includere i righi seguenti fino alla seconda ) nella istruzione SOA.

Rigo 3:

Il numero di serie è una cifra arbitraria, da aumentare ogni volta che si modifica questo file. Questa cifra serve ad informare server dei nomi secondari (server slave) che sono state effettuate delle modifiche. Di solito, si usa un numero di dieci cifre composto da una data e da un numero progressivo, nella forma AAAAMMGGNN.

Rigo 4:

Il refresh rate indica l'intervallo di tempo trascorso il quale i server dei nomi secondari verificano il numero di serie della zona. In questo caso, si ha 1 giorno (1D = 1 day).

Rigo 5:

Il retry rate indica l'intervallo di tempo trascorso il quale un name server secondario, in caso di errore, cerca di ristabilire il contatto con il server primario. In questo caso, due ore (2H = 2 hours).

Rigo 6:

L'expiration time indica quanto tempo debba passare prima che il server dei nomi secondario espelli i dati dalla cache, se non riesce a ristabilire il contatto con il server primario. In questo caso, una settimana (1W = 1 week).

Rigo 7:

Con negative caching TTL si conclude l'SOA, che indica per quanto tempo i risultati delle richieste DNS di altri server irrisolte debbano restare nella cache.

Rigo 9:

L'IN NS indica il server dei nomi responsabile per questo dominio. Anche in questo caso, gateway diventa automaticamente gateway.mondo.all, poiché non vi è un . alla fine. Vi possono essere diverse righe del genere: una per il server dei nomi primario e una per ogni server dei nomi secondario. Se per questa zona notify in /etc/named.conf non è impostato su no, verranno informati tutti i server dei nomi qui elencati delle modifiche apportate ai dati delle zone.

Rigo 10:

La registrazione MX indica il server di posta che accetta le e-mail per il dominio mondo.all, per poi elaborarle o inoltrarle. In quest'esempio, si tratta dell'host sole.mondo.all. Il numero davanti al server dei nomi è il valore di preferenza: se vi sono più indicazioni MX, si prenderà per primo il server di posta con il valore minore; se la consegna a questo server fallisce, si prova con il prossimo valore.

Righe 12-17:

Le registrazioni degli indirizzi (ingl. Address Records), dove il nome dell'host viene attribuito ad uno o più indirizzi IP. In questo caso, i nomi vengono riportati senza un punto alla fine, dal momento che sono registrati senza il relativo dominio e che in questo caso è possibile aggiungere a tutti mondo.all. A gateway sono stati attribuiti due indirizzi IP, dacché dispone di due schede di rete. A sta per un indirizzo host tradizionale; con A6 si immettono indirizzi IPv6 e AAAA è il formato ormai superato per indirizzi IPv6.

Rigo 18:

Impostare un alias per www, p.es luna (CNAME = canonical name ovvero nome canonico).

Per la risoluzione inversa (ingl. reverse lookup) degli indirizzi IP in nomi di host si ricorre allo pseudo-dominio in-addr.arpa che viene aggiunto all'indirizzo scritto alla rovescia. Quindi, 192.168.1 diventa 1.168.192.in-addr.arpa. Si veda l'Esempio 40.7, «Risoluzione inversa dell'indirizzo».

Esempio 40.7. Risoluzione inversa dell'indirizzo

    
 $TTL 2D
 1.168.192.in-addr.arpa. IN SOA gateway.mondo.all. root.mondo.all. (
                         2003072441     ; serial
                         1D              ; refresh
                         2H              ; retry
                         1W              ; expiry
                         2D )            ; minimum

                         IN NS           gateway.mondo.all.

1                     IN PTR          gateway.mondo.all.
2                     IN PTR          terra.mondo.all.
3                     IN PTR          marte.mondo.all.
Rigo 1:

$TTL definisce il TTL di default valido per tutte le voci.

Rigo 2:

Questo file permette il «reverse lookup» per la rete 192.168.1.0. Dal momento che la zona del caso è 1.168.192.in-addr.arpa , non la si vorrà aggiungere al nome del server: per questo motivo, i nomi sono tutti completi di dominio e punto finale. Il resto corrisponde all'esempio dato per mondo.all.

Righe 3-7:

si veda l'esempio di mondo.all.

Rigo 9:

Questa riga indica nuovamente il server dei nomi responsabile per questa zona. Questa volta, però, il nome viene riportato completo di dominio e punto finale.

Righe 11-13:

Le registrazioni pointer (puntatore) puntano sull' indirizzo IP del relativo host. All'inizio della riga trovate solo la parte finale dell'indirizzo, senza . finale. Se ora aggiungete la zona e togliete .in-addr.arpa, avrete l'indirizzo IP completo, scritto alla rovescia.

Il trasferimento di zone tra le diverse versioni di BIND di solito non dovrebbe creare dei problemi.