Il server consiste in UNIX nel processo named lanciato come demone. Questo processo fa' riferimento al file di configurazione primario che si chiama /etc/named.boot.
Per un server primario un esempio di questo file puo' essere:
directory /etc/named cache . named.ca primary zinkel.com named.hosts secondary robur.com 168.33.34.212 robur.bak primary 27.168.in-addr.arpa. named.rev primary 0.0.127.in-addr.arpa. named.local
Si supponga che l'indirizzo del server sia 168.27.69.3 e che vi siano configurate tutte le macchine della ditta di dominio 'zinkel.com', che ha una maschera di rete corrispondente alla classe B (2 bytes per l'indirizzo host).
La linea con la direttiva directory informa che tutti i files di configurazione si trovano nella directory /etc/named.
La linea cache configura la macchina corrente come server di cache. Il singolo punto e' un segnaposto per il secondo campo. Il terzo campo, named.ca e' il nome di un file contenente la lista di server a piu' alto livello da contattare nella risoluzione di nomi non trovati nella cache locale.
La parola chiave primary configura la macchina corrente come server primario; in tal caso seguono due campi che sono l'oggetto di cui la macchina e' server primario e il file di configurazione relativo.
L'oggetto puo' essere un nome di dominio 'diritto', come p. es. 'zinkel.com' o un indirizzo 'rovesciato'.
Per risolvere il problema inverso della traduzione da indirizzi a nomi e' stato creato un dominio ad alto livello chiamato in-addr.arpa. che contiene 256 sottodomini, uno per ciascun valore del primo byte di un indirizzo IP. Ciascuno di questi contiene 256 sotto-sottodomini, uno per ciascun valore del secondo byte, e similmente per il terzo.
In tal modo un computer di indirizzo 199.213.34.56 viene anche ad appartenere, ai fini della risoluzione indirizzi a nomi, al dominio 34.56.213.199.in-addr.arpa.
Nel nostro esempio il computer corrente' e' server primario delle traduzioni indirizzi a nomi per gli ultimi due byte dell'indirizzo '168.27.x.x'.
Il particolare indirizzo 0.0.127.in-addr.arpa. corrisponde all'indirizzo 127.0.0.1 che identifica la macchina locale. Il file di configurazione e' molto corto, stranamente deve esserci in alcune implementazioni BIND, ma non e' molto utile.
La parola chiave secondary identifica la macchina corrente come server secondario di un oggetto dato. I campi seguenti sono tre: il nome dell'oggetto (diritto o rovescio), il nome o indirizzo del server primario corrispondente, il nome del file in cui i dati provenienti dal server primario devono venire copiati.
Si dice che un server primario amministra una determinata zona, e mantiene i files 'veri' per quella zona. Un server primario e' 'autorevole' per la sua zona. A intervalli piu' o meno regolari un server secondario contatta il primario ed esegue un trasferimento dati, un zone transfer di tutta o parte della zona.
Cosa debba venir trasferito e' il secondo campo della linea 'secondary', da dove e' il terzo campo, a quale file locale 'di copia' e' il quarto campo. I tempi e i modi di trasferimento sono mantenuti sul server primario in un cosiddetto Record di Autorita'.
. 99999999 IN NS ns.nic.ddn.mil. ns.nic.ddn.mil. 99999999 IN A 26.3.0.103 . 99999999 IN NS ns.nasa.gov. ns.nasa.gov. 99999999 IN A 128.102.16.10
La lista e' quella dei computer server DNS da contattare se il server corrente non e' in grado di risolvere una richiesta. La lista puo' includere il nome del server gerarchicamente superiore o alcuni o tutti i server del Dominio Radice.
Una linea si chiama un record ed e' formata da un numero di campi. Se il primo campo e' un punto allora il record si riferisce al dominio corrente, altrimenti il primo campo e' un oggetto di cui viene fornita la risoluzione.
Un nome di dominio terminato esplicitamente da un punto e' completo, se non e' terminato da un punto si intende un sottodominio del dominio locale.
Il secondo campo, opzionale, e' il periodo di validita' del record. Otto volte nove indica un periodo infinito. Il default se il campo non esiste e' dato dal Record di Autorita'.
Il terzo campo e' sempre IN e indica risoluzione DNS Internet. Il campo successivo e' il tipo di record: A significa 'address' e vi segue un indirizzo, NS significa 'name server' e vi segue il nome di un server.
Non importa se si usano le maiuscole o minuscole nei nomi di dominio.
Questo e' il file di configurazione veramente interessante, ed un esempio puo' essere:
@ IN SOA king.zinkel.com root.king.zinkel.com ( 16 ; serial 86400 ; refresh 3600 ; retry 3600000 ; expire 604800 ; minimum ) IN NS king.zinkel.com. IN MX 10 relay localhost. IN A 127.0.0.1 zk01 IN A 168.27.69.3 IN CNAME router zk02 IN A 168.27.69.2 IN CNAME www IN CNAME webserv zk03 IN A 168.27.69.3 IN CNAME relay
Il primo record e' lo Start OF Authority (SOA) o Record di Autorita'. Tutto quello che segue e' designato come autorevole. In questo record il primo campo, '@' designa il 'contesto' corrente, ed e' un simbolo chiave che identifica la zona su cui si ha autorita'
Il quarto campo e' il nome del computer che ha l'autorita'. Il quinto campo e' l'indirizzo di posta elettroni ca del responsabile: poiche' il carattere '@' e' riservato, viene sostituito con un carattere punto.
Dato che il record e' piu' lungo di una riga, la perentesi tonda aperta permette la prosecuzione su righe seguenti.
I campi numerici che seguono sono istruzioni che il corrente server primario fornisce ai server secondari che desiderino trasferire questo file. Il campo serial e' un numero seriale e va cambiato ad ogni modifica del file. Il server secondario esegue il trasferimento solo se la veersione nuova ha seriale piu' alto di quella gia' posseduta.
Il campo refresh e' il numero di secondi allo scadere dei quali il secondario deve provare ad eseguire un nuovo trasferimento di zona. Se il secondario non riesce a contattare il primario, deve riprovare ogni retry secondi. Se non e' riuscito dopo expire secondi i dati vecchi devono considerarsi scaduti.
Il tempo minimum infine e' la durata di validita' di default dei record che non hanno una durata esplicitamente assegnata.
Il record NS esprime quale sia il server del dominio corrente. Se il primo campo e' vuoto, viene inteso lo stesso primo campo del record precedente.
Il record di tipo MX definisce il 'Mail Exchanger'; il valore del quarto campo, 10, ne esprime la priorita' relativa. Vi possono essere piu' record MX definiti: ha priorita' maggiore quello col numero piu' basso.
Viene definito il record di tipo A (Address) per il nome speciale localhost. Notare il punto finale: e' un nome completo, non 'localhost.zinkel.com'.
Vengono definiti gli indirizzi di tre computer, p.es. zk01, che non avendo il punto e' espanso a 'zk01.zinkel.com'.
I record di tipo CNAME esprimono dei nomi alias dei precedenti nomi ufficiali.
Sono possibili altri tipi di record, ma quelli esaminati sono i principali.
@ IN SOA king.zinkel.com root.king.zinkel.com ( 16 ; serial 86400 ; refresh 3600 ; retry 3600000 ; expire 604800 ; minimum ) IN NS king.zinkel.com. 1.69 IN PTR zk01.zinkel.com. 2.69 IN PTR zk02.zinkel.com. 3.69 IN PTR zk03.zinkel.com.
Il record SOA e' uguale a quello per gli indirizzi diritti. Puo', volendo, contenere dei tempi diversi.
I record di tipo PTR sono 'puntatori', cioe' trasformano da indirizzi in nomi. Notare che i nomi sono di dominio completo poiche' hanno il punto finale.
Gli indirizzi sono la prima parte dell'indirizzo rovesciato, ove la parte rimanente e' nel file /etc/named.boot. Per esempio concatenare il primo 1.69 con il rimanente indirizzo rovesciato 27.168.in-addr.arpa. da /etc/named.boot: si ottiene l'equivalente rovesciato dell'indirizzo 168.27.69.1
@ IN SOA king.zinkel.com root.king.zinkel.com ( 1 360000 3600 3600000 360000 ) IN NS king.zinkel.com. 1 IN PTR localhost.
Il primo record di questo file e' il Record di Autorita' ma anche se indispensabile, non e' mai veramente usato in questo caso: e' importante solo far attenzione al quarto e quinto campo.
Il secondo record e' di tipo NS e definisce il server DNS del dominio corrente. IIl terzo record risolve a rovescio lo host numero 1, appartenente al dominio di prefisso 127.0.0 come nome 'localhost'.