Bind dispone di una memoria cache dove sono memorizzate le risposte e query già effettuate, disponibili per usi futuri e consente la definizione di Access Controll Lists (ACLs). Con esse è possibile stabilire delle liste di controllo degli accessi; per determinare, di fatto, la possibilità o meno che il name server risponda a tutte o solo ad alcune query, se consentire l’accesso alla cache, e a quali host.

Syntax: ACL <ACL_NAME> { [ip_address;] [ip-ranges_CIDR-notation;] };

Due particolari ALC sono none ed anyper negare o consentire a qualunque host indistintamente, determinate interrogazioni del name server. Ad esempio:

[...]
// Do not allow access to cache
allow-query-cache { none; };
// This is the default
allow-query { any; };
[...]

Le ACL altro non sono che delle opzioni che, assieme ad altre, permettono a BIND di funzionare in un certo modo. Tale possibilità è utile per configurare BIND in differenti modi; come è stato discusso nella pagina introduttiva il sistema DNS esistono tre tipologie di query: non ricorsive, ricorsive e iterative. Dunque è possibile, per un dato name server, rispondere a tutte e tre le tipologie; in questo caso il name server potrà rispondere a query di qualunque tipo e, sostanzialmente, per qualunque nome di dominio oppure solo ad alcune, ad esempio quelle che riguardano le zone laddove il dato name server è autorevole.  Sulla base di questi meccanismi di funzionamento differente, queste tipologie di name server BIND vengono chiamati:

    • Forwarding e Caching Name Server
      spesso i resolver locali della maggior parte dei sistemi operativi non sono in grado di effettuare il processo completo di risoluzione di un DNS, da soli, parlando direttamente ai name server autorevoli. Questi sono detto stub resolver, che invece si basano su name server locali per eseguire la risoluzione per loro conto. Un server di questo tipo è anche chiamato name server ricorsivo, esso svolge interrogazioni ricorsive per i client locali. Non tutti i server ricorsivi o caching name server effettuano il processo completo di risoluzione. Al contrario, inoltrano alcune o tutte le query richieste che non sanno direttamente soddisfare tramite la loro cache o la cache di un altro name server, questi vengono chiamati forwarding name server. Il seguente è un esempio di configurazione appropriata per un forwarding-only name server utilizzabile dai client interni ad un organizzazione.




file: /etc/bind/named.conf

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
// structure of BIND configuration files in Debian, *BEFORE* you customize 
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
//include "/etc/bind/named.conf.default-zones";

file: /etc/bind/named.conf.options

// Due subnet alle quali vogliamo consentire query.
acl internals { 192.168.0.0/24; 192.168.5.0/24; };
options {
     // Working directory
     directory "/var/cache/bind";
     allow-query { internals; };
        forwarders {
                192.168.0.2;
                192.168.5.2;
        };
        forward only;
};

il file named.conf non contiene volutamente la include per “/etc/bind/named.conf.default-zones”, come da RFC 1912. Per il momento basta mandare in servizio la zona seguente:

file: /etc/bind/named.conf.local

// Fornisce un reverse mapping per il loopback
zone "127.in-addr.arpa" {
     type master;
     file "/etc/bind/db.127";
     notify no;
};

il file “/etc/bind/db.127” di questa zona è scaricabile da qui e la maggior parte delle distribuzioni Linux e BSD ne forniscono una copia pronta direttamente all’uso. Viceversa mandando in servizio la zona “/etc/bind/named.conf.default-zones” è possibile per il name server effettuare risoluzioni DNS complete da sé. È possibile pertanto rimuovere le linee riguardanti forwarders e quelle della zona “127.in-addr.arpa” già richiamata all’interno di “default-zones”. Il seguente è un esempio di configurazione appropriata per un caching-only name server utilizzabile dai client interni ad un organizzazione.

file: /etc/bind/named.conf, /etc/bind/named.conf.options, /etc/bind/named.conf.local, /etc/bind/named.conf.default-zones

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
// structure of BIND configuration files in Debian, *BEFORE* you customize 
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

acl internals { 192.168.0.0/24; 192.168.5.0/24; };
options {
     // Working directory
     directory "/var/cache/bind";
     allow-query { internals; };

// prime the server with knowledge of the root servers
zone "." {
	type hint;
	file "/etc/bind/db.root";
};

// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912

zone "localhost" {
	type master;
	file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
	type master;
	file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
	type master;
	file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
	type master;
	file "/etc/bind/db.255";
};

In questa configurazione viene mandata in servizio la zona radice come cache (type hint) il name server non è autorevole per questa zona, lo è invece per le successive 4 zone.


  • Authoritative Name Server
    ogni zona è servita da, almeno, un name server autorevole, il quale mantiene tutti i dati di una zona. Per rendere il DNS tollerante ai guasti del server o della rete, il più delle zone dispone di due o più name server autorevoli su reti differenti.

    • Primary Master: il server autorevole dove la master copy della zona è conservata prendere il nome di primary master server. Tipicamente manda in servizio il contenuto delle zone scritte all’interno di un file locale modificato da persone  o magari generato meccanicamente da qualche altro file locale il quale sia stato modificato da persone. Il file è chiamato lo zone file master file. in alcuni casi, comunque, il master file non può essere modificato direttamente, perché gestito da meccanismi ed operazioni di dynamic update.
    • Slave Server: tutti gli altri server autorevoli, gli slave server (anche chiamati secondary server) caricano la zona contenuta da un altro name server utilizzando un processo di replicazione conosciuto come zone transfer, trasferimento di zona. Tipicamente i dati sono trasferiti direttamente dal primary master, ma è anche possibile il trasferimento da parte di un altro slave. In altre parole uno slave server può a sua volta funzionare quale master per uno slave server subordinato.
      Periodicamente, il server secondario deve inviare una query di aggiornamento per determinare se il contenuto della zona sia stato aggiornato. Questo viene svolto inviando una query per il record SOA della zona e controllandone se il numero di serie sia stato aggiornato; se lo è stato, viene iniziata una nuova richiesta di trasferimento di zona. Il timing di queste query di aggiornamento è controllato dai timer di REFRESH e di RETRY del SOA, ma può essere sovrascritto tramite le opzioni max-refresh-timemin-refresh-timemax-retry-time, e min-retry-timeSe i dati della zona non possono essere aggiornati entro il tempo specificato nel campo EXPIRE del SOA, la zona slave scade è non risponderà più alle query.

Il seguente è un esempio di configurazione appropriata per un Authoritative-only name server utilizzabile dai client interni ad un organizzazione. Un Name Server di questo genere effettua la risoluzione completa delle sole query che riguardano le zone in cui è un name server autorevole. Per tutte le altre risponde con un rinvio (query iterative).

file: /etc/bind/named.conf, /etc/bind/named.conf.options, /etc/bind/named.conf.local, /etc/bind/named.conf.default-zones

// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
// structure of BIND configuration files in Debian, *BEFORE* you customize 
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

acl internals { 192.168.0.0/24; 192.168.5.0/24; };
options {
     // Working directory
     directory "/var/names/zones";
     // Do not allow access to cache
     allow-query-cache { none; };
     // This is the for internals ACL
     allow-query { internals; };
     // Do not provide recursive service
     recursion no;

// prime the server with knowledge of the root servers
zone "." {
	type hint;
	file "/etc/bind/db.root";
};

// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912

zone "localhost" {
	type master;
	file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
	type master;
	file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
	type master;
	file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
	type master;
	file "/etc/bind/db.255";
};

// AUTHORITATIVE ZONES
// We are the master server for example.local
zone "example.local" {
     type master;
     file "example.local.db";
     // IP addresses of slave servers allowed to
     // transfer example.local
     allow-transfer {
          192.168.0.14;
          192.168.5.53;
     };
};
// We are a slave server for it.example.local
zone "it.example.local" {
     type slave;
     file "it.example.local.bk";
     // IP address of it.example.local master server
     masters { 192.168.0.2; };
};
  • Name server con ruoli multipli

Il name server di BIND può simultaneamente operare come master per alcune zone, slave per altre e come cache (name server ricorsivo) per un insieme di client locali.

Tuttavia, dal momento che le funzioni di servizio di nomi autorevole e caching/recursive sono separate logicamente, è spesso vantaggioso eseguire i differenti name server su macchine separate. Un server che fornisce solo servizi autorevoli per i nomi (un authoritative-only server) può essere eseguito disabilitando la ricorsione, migliorando l’affidabilità e la sicurezza. Un server che non è autorevole per alcuna zona e fornisce solo servizi ricorsivi a client locali (un caching-only server) non necessita di essere raggiungibile su tutta internet e può essere piazzato dietro ad un firewall.