40.4. Il file di configurazione /etc/named.conf

Tutte le impostazioni riguardanti il server dei nomi BIND devono venire eseguite nel file /etc/named.conf. Anche i dati delle zone, cioè i nomi degli host, gli indirizzi IP, etc. per i domini da amministrare, devono venire archiviati in file separati nella directory /var/lib/named. Trattateremo questo tema più avanti.

L' /etc/named.conf si suddivide grosso modo in due settori: una sezione options per le impostazioni generali ed una per le registrazioni zone per i singoli domini. Inoltre è anche possibile definire un'area logging, come pure registrazioni del tipo acl (ingl.Access Control List). Le righe di commento iniziano con il carattere #, alternativamente è permesso anche //. Il file Esempio 40.2, «File /etc/named.conf di base» vi mostra un esempio di un /etc/named.conf minimale.

Esempio 40.2. File /etc/named.conf di base

options { 
        directory "/var/lib/named"; 
        forwarders { 10.0.0.1; };
        notify no;
};

zone "localhost" in {
       type master;
       file "localhost.zone";
};

zone "0.0.127.in-addr.arpa" in {
        type master;
        file "127.0.0.zone";
};

zone "." in {
        type hint;
        file "root.hint";
};

40.4.1. Le opzioni di configurazione principali

directory "nomefile";

indica la directory in cui BIND trova i file con i dati delle zone, di solito /var/lib/named.

forwarders { indirizzo ip; };

viene usato per indicare uno o più server dei nomi (nella maggioranza dei casi quelli del provider) ai quali vengono inoltrate le richieste DNS a cui non è possibile rispondere direttamente. Al posto di indirizzo ip utilizzato un indirizzo IP del tipo 10.0.0.1.

forward first;

fa in modo che le richieste DNS vengano inoltrate forwarded, prima che si cercare di risolverle tramite i server dei nomi root. Invece di forward first è anche possibile scrivere forward only; in questo caso, tutte le richieste vengono inoltrate ed i server dei nomi root non vengono più indirizzati. Può essere conveniente in configurazioni firewall.

listen-on port 53 {127.0.0.1; indirizzo ip; };

comunica a BIND, su quali interfacce di rete e su quale porta mettersi in ascolto di eventuali richieste dei client. L'indicazione port 53 può venire omessa, poiché 53 è la porta standard. Con 127.0.0.1 si ammettono richieste di localhost. Omettendo completamente questa registrazione, vengono usate di default tutte le interfacce.

listen-on-v6 port 53 { any; };

indica a BIND su quale porta mettersi in ascolto di richieste da parte di client che utilizzano IPv6. Oltre a any è consentito come alternativa solo none, dato che il server si mette in ascolto sull'indirizzo wildcard IPv6.

query-source address * port 53;

questa registrazione è necessaria se il firewall blocca richieste DNS esterne. In questo modo BIND viene indotto ad inviare delle richieste verso l'esterno dalla porta 53 e non dalle porte con un numero elevato ( > 1024 ).

query-source-v6 address * port 53;

qui si indica a BIND quale porta utilizzare per richieste IPv6.

allow-query {127.0.0.1; net; };

definisce le reti da cui i client possono inviare delle richieste DNS. Al posto di net si immettete un indirizzo del tipo 192.168.1/24; laddove /24 è un'abbreviazione per la maschera di rete, in questo caso 255.255.255.0.

allow-transfer {! *; };

regola quali sistemi possano richiedere il trasferimento delle zone; in questo esempio ciò viene completamente impedito da ! *. Senza questa registrazione, il trasferimento delle zone può venire richiesto da ovunque.

statistics-interval 0;

senza questa registrazione, BIND archivia ogni ora diverse righe di messaggi di natura statistica in /var/log/messages. Il valore 0 determina che questi messaggi vengano completamente soppressi; l'intervallo viene indicato in minuti.

cleaning-interval 720;

questa opzione stabilisce l'intervallo di tempo, scaduto il quale BIND svuota la sua cache. Ogni volta questa attività genera una registrazione in /var/log/messages. L'indicazione del tempo avviene in minuti: sono preconfigurati 60 minuti.

interface-interval 0;

BIND verifica regolarmente se vi sono delle nuove interfacce di rete o se ne sono state rimosse alcune. Se questo valore è impostato su 0, si rinuncia a tale verifica, e BIND si mette in ascolto solo sulle interfacce rilevate all'avvio. Si può indicare questo l'intervallo in minuti. 60 minuti è il valore preconfigurato.

notify no;

Con no non viene avvisato nessun altro server dei nomi nel caso si siano apportate delle modifiche ai dati delle zone o se il server dei nomi viene riavviato.

40.4.2. Attività di logging

BIND permette di configurare in modo flessibile l'attività di logging. Normalmente, le preimpostazioni dovrebbero rilevarsi sufficienti. Il file Esempio 40.3, «Il logging viene soppresso» vi mostra la variante più semplice di una tale registrazione, e sopprime completamente il «logging»:

Esempio 40.3. Il logging viene soppresso

logging {
        category default { null; };
};

40.4.3. Struttura delle registrazioni delle zone

Esempio 40.4. L'indicazione zone per mio-dominio.it

zone "mio-dominio.it" in {
       type master;
       file "mio-dominio.zone";
       notify no;
};

Dopo zone si indica il nome del dominio da amministrare, nel nostro esempio abbiamo scelto un nome a caso mio-dominio.it seguito da un in ed un blocco compreso tra parentesi graffe con le relative opzioni; cfr. Esempio 40.4, «L'indicazione zone per mio-dominio.it». Se si desidera definire una zona slave, cambia solo il type che diventa slave, e si deve indicare il server dei nomi che amministra questa zona come master (può, a sua volta essere uno «slave»); si veda l'Esempio 40.5, «L'indicazione zone per altro-dominio.it».

Esempio 40.5. L'indicazione zone per altro-dominio.it

zone "altro-dominio.it" in {
      type slave;
        file "slave/altro-dominio.zone";
        masters { 10.0.0.1; };
};

Le opzioni di zone:

type master;

master stabilisce che questa zona venga amministrata su questo server di nome. Premessa per questa opzione: un file di zone corretto.

type slave;

Questa zona viene trasferita da un altro server dei nomi. Deve venire usata assieme a masters.

type hint;

La zona . del tipo hint viene impiegata per l'indicazione dei server dei nomi root. Questa definizione di zona può rimanere invariata.

file mio-dominio.zone o file «slave/altro-dominio.zone»;

Questa registrazione indica il file in cui sono registrati i dati delle zone per il dominio. Con uno slave, il file non è necessario, poiché il suo contenuto viene preso da un altro server dei nomi. Per distinguere fra file master e file slave, si indica la directory slave per i file slave.

masters {indirizzo_ip_server; };

Questa impostazione è necessaria solo per zone slave ed indica da quale server dei nomi debba venire trasferito il file delle zone.

allow-update {! *; };

Questa opzione regola l'accesso in scrittura ai dati delle zone dall'esterno. Se l'accesso fosse indiscriminato, ogni client potrebbe registrarsi nel DNS del tutto autonomamente, cosa non auspicabile da un punto di vista della sicurezza. Senza questa opzione, non sono permessi gli aggiornamenti delle zone. La registrazione riportata nell'esempio non cambierebbe nulla, dal momento che la definizione ! * proibisce, anch'essa, ogni accesso.