DNS e BIND

dns zone

Record NS

Quando un name server riceve una richiesta di risoluzione nome e non ha in cache il risultato dell'interrogazione deve interrogare i name server autoritativi per la zona. I NS autoritativi sono sia il primary che gli slave; non c'è differenza tra i due per questo tipo di interrogazione.

$ nslookup
> set type=ns
> t3ch.it
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
t3ch.it nameserver = ns3.mydyndns.org.
t3ch.it nameserver = ns4.mydyndns.org.
t3ch.it nameserver = ns5.mydyndns.org.
t3ch.it nameserver = ns2.mydyndns.org.
t3ch.it nameserver = ns1.mydyndns.org.

Authoritative answers can be found from:
ns1.mydyndns.org        internet address = 63.208.196.92
ns3.mydyndns.org        internet address = 208.78.69.76
ns5.mydyndns.org        internet address = 203.62.195.76
ns4.mydyndns.org        internet address = 91.198.22.76
ns2.mydyndns.org        internet address = 204.13.249.76

Record SOA

Il record SOA contiene valori utilizzati soprattutto dai secondary slave server:

$ nslookup
> set type=soa
> t3ch.it      
Server:         212.216.112.112
Address:        212.216.112.112#53

Non-authoritative answer:
t3ch.it
    origin = ns1.mydyndns.org
    mail addr = zone-admin.dyndns.com
    serial = 2007122910
    refresh = 10800
    retry = 1800
    expire = 604800
    minimum = 1800

Authoritative answers can be found from:
...

Contiene parametri utilizzati dagli slave server:

origin

Indica il primary master, cioè il name server che contiene il file di configurazione della zona

serial

Una volta scaduto il refresh gli slave si collegano al primary master e, se hanno un serial inferiore rispetto a quello presente nel file di zona del primary, effettuano uno zone transfer

refresh

Ogni quanto gli slave devono collegarsi al master per verificare se questo ha parametri di zona aggiornati (grazie al serial maggiore)

retry

Dopo quanto deve provare lo slave a ricollegarsi al master dopo un tentativo fallito di refresh

expire

Se passa il tempo indicato senza che lo slave sia riuscito ad effettuare uno zone transfer, lo slave server cessa di fornire informazioni per la zona.

Il seguente parametro non è usato dagli slave, ma dai DNS caching server:

minimum (TTL)

I name server non autoritativi per la zona (caching server) memorizzano nella loro cache le informazioni dei record DNS derivanti dalle query dei client che li interrogano.

Per quanto tempo possono tenere nella loro cache queste informazioni? Solo per il tempo specificato dal parametro minimum, che rappresenta il TTL di default per l'intera zona. Quando ricevono una richiesta per un record con TTL scaduto devono nuovamente interrogare i NS autoritativi per la zona.

Ogni record DNS può avere poi specificato un diverso TTL, come si può desumere da quanto segue:

$ dig +nocmd t3ch.it any +multiline +noall +answer
t3ch.it.        60 IN A    82.48.241.247
t3ch.it.        43200 IN MX 10 mail.t3ch.it.
t3ch.it.        43200 IN MX 50 mx2.mailhop.org.
t3ch.it.        86400 IN SOA ns1.mydyndns.org. zone-admin.dyndns.com. (
            2007122910 ; serial
            10800      ; refresh (3 hours)
            1800       ; retry (30 minutes)
            604800     ; expire (1 week)
            1800       ; minimum (30 minutes)
            )
t3ch.it.        86400 IN NS ns3.mydyndns.org.
t3ch.it.        86400 IN NS ns1.mydyndns.org.
t3ch.it.        86400 IN NS ns5.mydyndns.org.
t3ch.it.        86400 IN NS ns2.mydyndns.org.
t3ch.it.        86400 IN NS ns4.mydyndns.org.

Ogni RR presenta un TTL e cioè il valore in secondi dopo t3ch.it.

Bind

Demone

Il demone è:

/etc/init.d/bind9

File di configurazione

Il suo principale file di configurazione è:

/etc/bind/named.conf

Di seguito il contenuto:

...
include "/etc/bind/named.conf.options";

// 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";
};

...

include "/etc/bind/named.conf.local";

Il file contiene i riferimenti ai file di zona di default, cioè localhost, 127, ecc…, le options, tra le quali vengono specificati eventuali forwarders, il riferimento al file di hint con i root server e altro. Il file non è da modificare.

E' presente un include del file di configurazione da customizzare:

/etc/bind/named.conf.local

nel quale bisogna apportare le modifiche per i file di zona per cui il server è autoritativo.

File di zona

I file di zona db.ADDRESS e db.HOST, richiamati nei file di configurazione named.conf.*, si trovano sotto:

/etc/bind$ ls db*
db.0  db.127  db.255  db.empty  db.local  db.root

Abbreviazioni in un file di zona

Di seguito un esempio di un file per la zona example.com.

...
@      IN      SOA   ns hostmaster (
           2003080800 ; serial number
           1d12h      ; refresh =  1 day 12 hours
           15M        ; update retry = 15 minutes
           3W12h      ; expiry = 3 weeks + 12 hours
           2h20M      ; minimum = 2 hours + 20 minutes
           )
         IN      NS  ns
         IN      NS  ns.example.net.
...
; A record for the NS RR above
ns     IN      A   192.168.2.1

Il file è stato abbreviato usando le seguenti convenzioni:

@

è il carattere che rappresenta l'$ORIGIN e cioè il nome della zona (“example.com”) come specificato nel file di configurazione di Bind

Omissione del FQDN

Il FQDN è stato omesso in quanto si prende come default l'$ORIGIN.

Ad es. invece di ns.example.com. si scrive solo ns, invece della mail hostmaster.example.com. si scrive solo hostmaster

Spazio o tabulazione nella 1a colonna

Nella 1a colonna deve essere sempre specificato un valore (il nome della zona o il RR), ove non ci sia un commento.

Se una riga (un RR) inizia con uno spazio o tabulazione il valore sottinteso è quanto specificato nella riga (RR) precedente.

Ad es. sopra si specifica:

   IN      NS  ns

Fa riferimento al RR precedente, che aveva come primo carattere @, che a sua volta fa riferimento all'$ORIGIN, cioè example.com.

E' quindi equivalente a:

example.com.   IN      NS  ns.example.com.

IPv4 e IPv6

E' possibile far sì che il server utilizzi solo IPv4 o IPv6.

Ad esempio per far sì che resti in ascolto solo per IPv4:

/etc/default/bind9

# run resolvconf?
RESOLVCONF=yes
# startup options for the server
OPTIONS="-4 -u bind"

Dopodichè ristartare il demone.

Tags: