Installazione e configurazione Bind9

Installare un server dns per uso “casalingo” usando una debian 4.0 e Bind9.

Lo scopo di questo post è aiutare chi come me ha bisogno solamente di un server dns interno alla propria rete che gestisca i nomi degli host collegati, oltre ad aumentare drasticamente il tempo di risoluzione dei domini su internet.

Si inizia naturalmente con l’installazione del software necessario al nostro scopo, quindi:


# apt-get install bind9 bind9-host dnsutils

Fatto questo non ci resta che addentrarci nella configurazione del tutto.

N.B. I file di configurazione di bind9 hanno una sintassi un pò ostica. Per tutti le opzioni possibili rimando alle pagine di man. Di seguito verrà solamente illustrata e commentata la mia configurazione!!

Il server dns può funzionare in 3 modi diversi:

  • Forward First: la richiesta di un certo nome viene prima inviata al nostro server “casalingo”, che se non riesce a trovare la giusta corrispondenza inoltra la richiesta ai server del nostro provider.
  • Forward Only: la richiesta viene direttamente inoltrata ai server del nostro provider; se questi non riescono a trovare il nome il nostro server restituisce un errore.
  • Root Only: la richiesta viene inoltrata ai server di zona principali (root server), i quali sono sempre conosciuti.

Per il mio scopo utilizzerò il primo!!!
Aggiungo che i commenti iniziano con ; nei file di configurazione di bind9 e che ogni riga deve terminare anch’essa con ;
Rechiamoci quindi nella dir /etc/bind/ e iniziamo col modificare il file named.conf.options :


# cd /etc/bind/
# vi named.conf.option


options {
directory “/var/cache/bind”;
forward first;
forwarders {
208.67.222.222;
208.67.220.220;
};
auth-nxdomain no;
};

Spieghiamo cosa c’è scritto… La terza riga indica il funzionamento: Forward First. Successivamente sono impostati i due server dns a cui il mio deve inoltrare le richieste (sono gli indirizzi ip di OpenDns, i quali sono vivamente consigliati).
A questo punto sempre nella dir /etc/bind/ andiamo a modificare named.conf :

# vi named.conf

zone "." {
type hint;
file “/etc/bind/db.root”;
};
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″;
};
include “/etc/bind/named.conf.local”;
include “/etc/bind/named.conf.options”;

Quello che più ci interessa di questo file sono le ultime due righe: includono la configurazione dei due file citati.
Andiamo a vedere invece named.conf.local :

# vi named.conf.local

zone "mioserver.esempio.com" in {
type master;
file “/etc/bind/db.local”;
};
zone “0.0.10.in-addr.arpa” in {
type master;
file “/etc/bind/0.0.10″;
};

Questo è il file più importante; qui vengono create le zone di azione (locali) del nostro server dns. Come si vede nel mio caso sono definite due zone, etanoox.wordpress.org e la zona per il reverse DNS (cioè risolvere da indirizzo a nome) 0.0.10.in-addr.arpa ; il type è master e file è seguito dal percorso del file di zona necessario al corretto funzionamento.
Vediamo ora quindi questi file di zona appena citati:

# vi db.local

$TTL 3h
@ IN SOA mioserver.esempio.com. etanoox.mioserver.esempio.com (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS localhost.
@ IN A 127.0.0.1
client1 A 10.0.0.3
server posta A 10.0.0.2
router A 10.0.0.1
mioserver A 10.0.0.5

# vi 0.0.10

$TTL 3h
@ IN SOA
mioserver.esempio.com etanoox.mioserver.esempio.com (
1 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
IN NS
mioserver.esempio.com.
1 IN PTR router.esempio.com.
2 IN PTR serverposta.esempio.com.
3 IN PTR client1.esempio.com.
5 IN PTR mioserver.esempio.com.

Per completare listo il contenuo completo di /etc/bind/ :

# ls /etc/bind/
0.0.10 db.127 db.empty db.root named.conf.local rndc.key
db.0 db.255 db.local named.conf named.conf.options zones.rfc1918

Non ci resta che riavviare bind9 e testare il tutto ;)

# /etc/init.d/bind9 restart

Consiglio: Per testare i file di zona usare il comando named-checkzone seguito dal nome della zona e dal file.

# named-checkzone local db.local
zone local/IN: loaded serial 1
OK

Leave a Reply