/etc/named.conf : caching-only nameserver

Il file di gestione principale per la configurazione di Bind può essere molto diverso a seconda del tipo di server che si intende implementare.
La sua posizione standard è nella directory /etc ma talvolta alcune distribuzioni lo collocano in /etc/bind/. Se si compila dai sorgenti si può decidere dove collocarlo con il flag --sysconfdir.

Vediamo un esempio per un server caching-only o recursive che dir si voglia, un server che non è autoritativo per domini pubblici e demanda la risoluzione dei nomi ai server dell'Internet Service Provider mantenendo una cache dei record richiesti diminuendo il traffico di rete e i tempi di query DNS.
In fondo alla configurazione sono presenti degli esempi per delle zone relative alla rete locale in cui si trova il server.

acl "local" { 192.168.0.0/24; };
Definire una acl è una cosa che facilita parecchio la gestione del file di configurazione anche se non è obbligatoria, è comoda nel caso il server si trovi in una rete complessa e si abbia da configurare gli accessi in modo fine..

key rndc-key {
    algorithm hmac-md5;
    secret "fFh4kjMNL=\spI";
};

Dichiarazione di una shared key. La stessa stringa dovrebbe trovarsi anche all'interno dell'rndc.conf per permettere la gestione sicura mediante autenticazione degli accessi. Si possono specificare più chiavi per diversi tipi d'uso o avvalersi solo di una chiave per tutte le operazioni.

controls {
    inet 127.0.0.1 port 953
        allow { 127.0.0.1; } keys { "rndc-key"; };
    inet 192.168.0.1 port 953
        allow { local; } keys { rndc-key };
};

Definizione di un canale per le comunicazioni amministrative con il server. In questo caso con inet si stabilisce la socket TCP di ascolto e la sua porta il cui valore di default è 953. Nel secondo caso il canale di controllo è settato per restare in ascolto sull'interfaccia con indirizzo 192.168.0.1. Con allow definisco invece chi è autorizzato a collegarsi al canale di controllo in questo caso da localhost e dagli host appartenenti alla acl "local" a patto che abbiano la definizione della chiave rndc-key nel rndc.conf.

options {
    directory "/var/named/";
    pid-file "/var/named/run/named.pid";
    forwarders { DNS1_ISP; DNS2_ISP; };
DNS1_ISP e DNS2_ISP vanno sostituiti con gli indirizzi IP dei server DNS a cui il nostre server rivolgerà tutte le richieste
    #forward first;
In questo caso è inserito un commento perchè forward first è il valore di default. Se invece si specifica forward only o forward-only si impedisce ogni query del nameserver a DNS diversi dai forwarders.
    listen-on { 127.0.0.1; 192.168.0.1; };
Stabilisce gli indirizzi ip delle interfacce presenti sul server in cui si deve porre in ascolto per delle richieste, in questo caso esclusivamente sulla rete locale e la loopback. Se non specificato di default ascolterà su tutte le interfacce disponibili.
    query-source address * port 53;
Con una wildcard * definisco gli indirizzi delle interfacce che named userà per rivolgere le richieste che non hanno ancora un record nella cache e definisco che utilizzi la porta 53. Questo è utile nel caso il server si trovi dietro un firewall che filtra i pacchetti UDP anche se non è valido per quanto riguarda le operazioni che implicano l'uso del TCP in cui usa sempre una porta casuale tra la 1024 e la 65535.
    allow-query { 127.0.0.1; "local"; };
    listen-on-v6 { "none"; };
    notify no;
};

Stabilisce il comportamento del server in caso di cambiamenti nei file di zona di default è yes e che nel caso di un server cache-only non serve visto che non comunica con altri nameserver fuorchè i suoi forwarders.

//zone "." in {
//    type hint;
//    file "named.root";
//};
In questo caso è commentato vista la presenza dell'opzione forwarders non è più necessario che il nameserver utilizzi i server del dominio radice per le richieste non presenti in cache. Questo è fattibile per la verità solo se si specifica forward-only perchè altrimenti se i forwarders non hanno la risposta o comunque tardano a rispondere di default named interpellerà i DNS del dominio radice.
zone "0.0.127.in-addr.arpa" {
    type master;
    file "127.0.0.db";
};
Si definisce la zona per la risoluzione inversa di "localhost". Notare che non necessita del flag IN perchè la loopback è in realtà una rete virtuale che nulla ha a che vedere con Internet.

zone "0.168.192.in-addr.arpa" IN {
    type master;
    file "192.168.0.db";
};
Occorrenza per il file incaricato della risoluzione inversa per la rete 192.168.0.0/24

zone "local" IN {
    type master;
    file "local";
};
Va definita per indicare al nameserver che la zona local non contiene nessun record.

zone "esempio.local" IN {
    type master;
    file "esempio.local";
};

Definisce il file dei nomi di dominio per la rete esempio.local

Privacy Policy