File di zona per la risoluzione da nomi a indirizzi

Vista la struttura e la sintassi del named.conf passiamo ora ad analizzare i file di zona, semplici file di testo in cui si specificano le informazioni necessarie per la risoluzione dei nomi di dominio in indirizzi numerici e viceversa. Anche in questo caso si ha una sintassi specifica e alcune convenzioni da conoscere.

Vediamo in primis la struttura di un file di zona per la risoluzione dei nomi di dominio in indirizzi numerici. Questo file si vedrà essere il più importante in quanto contiene tutti i dati e i record necessari per la configurazione del dominio, del server di posta e degli alias, per citarne alcuni. Il file in questione si chiama esempio.com.db.
Per chiarezza lascerò come esempio l'intero file dopo di che mi addentrerò nella spiegazione della sua struttura.

$ORIGIN .
$TTL 172800    ; 2 days
esempio.com        IN SOA    ns1.esempio.com. root.ns1.esempio.com. (
                2003021512 ; serial
                28800      ; refresh (8 hours)
                7200       ; retry (2 hours)
                604800     ; expire (1 week)
                86400      ; minimum (1 day)
                )
            NS    ns1.esempio.com.
$ORIGIN esempio.com.
$TTL 3600    ; 1 hour
dhcpclient        A    192.168.0.98
            TXT    "311e98e7bea987126c3037d1b1f4c7b99d"
$TTL 172800    ; 2 days
ns1            A    192.168.0.1
mac            A    192.168.0.2
linux            A    192.168.0.3
windows            A    192.168.0.4
webftp            A    192.168.0.5
mail            A    192.168.0.6

;Aliases
www.esempio.com.        CNAME    webftp.esempio.com.
ftp.esempio.com.        CNAME    webftp.esempio.com.
win.esempio.com.        CNAME    windows.esempio.com.

;Definisco il mail server per il dominio

esempio.com.        MX    10    mail.esempio.com.
esempio.com.        MX    20    mail.nostroisp.com.


$ORIGIN .
Questo flag indica un nome di dominio che viene automaticamente appeso a tutti i nomi del file di zona che non terminano con un punto finale. In questo esempio si può vedere che sono specificate due direttive $ORIGIN. La prima va a completare la direttiva "esempio.com" mentre la seconda specifica il completamento per i nomi degli host. Alcuni la considerano obsoleta ma vale la pena conoscerla e capirne il significato.
$TTL 172800    ; 2 days
Questo campo indica il default time-to-live. Come si vede si applica globalmente a tutti i record che precedono qualunque altra direttiva di TTL, che può essere indicata anche per singolo host. Il nameserver specifica questo valore in tutte le risposte per la zona o il dato record indicando per quanto tempo gli altri nameservers possono tenerlo in cache. Se si ha un file di zona che subisce poche modifiche è consigliabile specificare un valore alto anche se è sconsigliabile superare la settimana.
esempio.com        IN SOA    ns1.esempio.com. root.ns1.esempio.com.
Questa è la parte principale del file di zona e serve a indicare lo Start of Authority per la zona esempio.com. In questo caso ns1.esempio.com è il nome del server autoritativo per la zona. Se ne può specificare uno solo e non di più. A seguire abbiamo un record che può creare confusione. Indica l'indirizzo del responsabile della gestione per la zona. I nameservers non utilizzaranno mai questa risorsa che è ad uso esclusivo di chi vuole comunicare con il gestore del dominio. Non si specifica l'indirizzo comune "root@ns1..." ma si deve sostituire l'@ con il punto, questo perchè la sintassi dei file di zona vuole che il simbolo @ si usi come il flag $ORIGIN. Può essere specificato un host differente da quello autoritativo ad esempio root.mail.esempio.com.
I campi chiusi tra le parentesi sono principalmente per gli slave server.

(
                2003021512 ; serial
Indicazione del numero di serie. Importante aggiornarlo quando si eseguono modifiche al file per far sapere agli slave che si sono effettuati dei cambiamenti.
                28800      ; refresh (8 hours)
Indica agli slave della zona ogni quanto devono verificare che i file sul master sono o meno cambiati. Va prestata attenzione al valore che si da soprattutto nel caso sia basso. Si sappia che uno slave effettua una SOA query per ogni zona ad intervalli specificati nel refresh e si tratta di una operazione molto intensiva in termini di utilizzo di CPU
                7200       ; retry (2 hours)
Questo campo indica allo slave ogni quanto tempo riprovare a connettersi al master in caso un refresh non sia andato a buon fine (potrebbe essere momentaneamente down)  
                604800     ; expire (1 week)
Con expire indico allo slave dopo quanto tempo deve considerare una data zona non più valida. Deve necessariamente essere maggiore dei valori di refresh e di expire altrimenti considererebbe espirati i valori di una zona prima di averla caricata.
                86400      ; minimum (1 day)
Questo campo è un TTL. Serve ad indicare quanto tempo un risposta negativa ad una query va tenuta dal nameserver nella cache.
                )
            NS    ns1.esempio.com.
NS, nameserver, indica il nameserver o i nameservers autoritativi per una zona. In caso vi siano due o più DNS per una data zona vanno specificati qua.
$ORIGIN esempio.com.
$TTL 3600    ; 1 hour
dhcpclient        A    192.168.0.98
            TXT    "311e98e7bea987126c3037d1b1f4c7b99d"
Questo record è per un host che utilizza il DHCP. Viene inserito dal server DHCP tramite update dinamico delle zone. Il campo TXT indica una stringa identificativa per il dato host ed è per uso interno al server DHCP ma può essere utilizzata per qualunque tipo di informazione si voglia specificare. In questo caso il TTL è al minimo visto che un record per un client non dotato di un indirizzo statico è soggetto a cambiamenti frequenti.  
$TTL 172800    ; 2 days
ns1            A    192.168.0.1
mac            A    192.168.0.2
linux            A    192.168.0.3
windows            A    192.168.0.4
webftp            A    192.168.0.5
mail            A    192.168.0.6
Questa è la parte che associa i nomi delle macchine ai loro ip. Il flag A sta per Address e indica che si tratta di record per la risoluzione da nome ad indirizzo.
;Aliases
www.esempio.com.        CNAME    webftp.esempio.com.
ftp.esempio.com.        CNAME    webftp.esempio.com.
win.esempio.com.        CNAME    windows.esempio.com.
Con questi campi invece definisco gli alias per alcuni host del dominio. L'esempio dimostra che è possibile assegnare più nomi ad un host. In questo caso il server web e ftp sono la stessa macchina raggiungibile sia se la si cerca come "www.esempio.com" che  come "ftp.esempio.com".
;Definisco il mail server per il dominio
esempio.com.        MX    10    mail.esempio.com.
esempio.com.        MX    20    mail.nostroisp.com.

Con i record MX specifico quali host si occupano dell'instradamento della posta per il dominio esempio.com. Il valore numerico che segue il record MX indica la priorità. In questo caso se invio una mail ad un utente che si trova nel dominio esempio.com il mio client mail cercherà di inviare al server mail.esempio.com per primo. In caso questo fosse troppo occupato o comunque non disponibile il mio mailer si appoggerebbe a mail.nostroisp.com un server fornito dall'Internet Service Provider di esempio.com. Si possono specificare più server con lo stesso valore di priorità ed è consigliabile utilizzare valore numerici che abbiano un certo margine tra loro, questo solo per fini di comodità nell'amministrazione. Ad esempio se in questa zona si decide di implementare un nuovo mail server che poniamo sia una macchina molto potente e posta su un link molto veloce basterebbe dargli un valore di 5 o di 15 a seconda delle preferenze ma se avessimo usato valori tipo 1,2,3.. ci troveremmo obbligati a ristudiare il nostro file di zona. Se si vuole definire un server con priorità massima si può utilizzare il valore 0.

Per finire alcune note. In questo esempio si sono utilizzati valori numerici per indicare i TTL, i refresh, l'expire.. e sono posti con come unità il secondo quindi una settimana diventa 608400 secondi. Dalla versione 8 di BIND in poi si possono specificare anche con degli "argomenti" quindi 3600 secondi diventano 1h e così via si possono specificare valori di 2h35m, due ore e trentacinque minuti, 1d, un giorno, 2w, due settimane. Notare inoltre che la sintassi del file delle zone vuole che i commenti inizino con un ";". Va ricordato infine che vi sono molti record di cui non ho parlato, alcuni obsoleti altri poco usati, se si vuole averne un prospetto più chiaro fare riferimento alla documentazione ufficiale del bind.  

Privacy Policy