Product SiteDocumentation Site

10.7. Server dei nomi di dominio (DNS)

Il Domain Name Service (DNS) è un componente fondamentale di Internet: mappa i nomi degli host in indirizzi IP (e viceversa), consentendo di utilizzare www.debian.org invece di 130.89.148.77 o 2001:67c:2564:a119::77.
I record DNS sono organizzati in zone, ad ogni zona corrisponde un dominio (o sottodominio) o un intervallo di indirizzi IP (dal momento che gli indirizzi IP vengono generalmente assegnati in campi consecutivi). Un server primario è autorevole sul contenuto di una zona; server secondari, di solito ospitati su macchine separate, servono a fornire copie regolarmente aggiornate della zona primaria.
Ogni zona può contenere diversi tipi di record (Resource Records), questi sono alcuni dei più comuni:

10.7.1. software DNS

Il server dei nomi di riferimento, Bind, è stato sviluppato ed è mantenuto dall'ISC (Internet Software Consortium). Viene fornito in Debian dal pacchetto bind9. La versione 9 apporta due importanti modifiche rispetto alle versioni precedenti. In primo luogo, il server DNS ora può essere eseguito come utente non privilegiato, in modo che una vulnerabilità di sicurezza nel server non assegni privilegi di root all'attaccante (come si è visto più volte con le versioni 8.x).
Inoltre, Bind supporta lo standard DNSSEC per la firma (e quindi per l'autenticazione) dei record DNS, il che consente di bloccare qualsiasi tentativo di spoofing di questi dati durante attacchi di tipo man-in-the-middle.

10.7.2. Configurazione di bind

Qualunque sia la versione di bind usata, i file di configurazione hanno la stessa struttura.
Gli amministratori Falcot hanno creato una zona primaria falcot.com per memorizzare le informazioni relative a questo dominio, ed una zona 168.192.in-addr.arpa per la risoluzione inversa degli indirizzi IP nelle reti locali.
Gli estratti di configurazione seguenti, tratti dai file della società Falcot, possono servire come punti di partenza per configurare un server DNS:

Esempio 10.12. Estratto da /etc/bind/named.conf.local

zone "falcot.com" {
        type master;
        file "/etc/bind/db.falcot.com";
        allow-query { any; };
        allow-transfer {
                195.20.105.149/32 ; // ns0.xname.org
                193.23.158.13/32 ; // ns1.xname.org
        };
};

zone "internal.falcot.com" {
        type master;
        file "/etc/bind/db.internal.falcot.com";
        allow-query { 192.168.0.0/16; };
};

zone "168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.192.168";
        allow-query { 192.168.0.0/16; };
};

Esempio 10.13. Estratto da /etc/bind/db.falcot.com

; falcot.com Zone 
; admin.falcot.com. => zone contact: admin@falcot.com
$TTL    604800
@       IN      SOA     falcot.com. admin.falcot.com. (
                        20040121        ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
;
; The @ refers to the zone name ("falcot.com" here)
; or to $ORIGIN if that directive has been used
;
@       IN      NS      ns
@       IN      NS      ns0.xname.org.

internal IN      NS      192.168.0.2

@       IN      A       212.94.201.10
@       IN      MX      5 mail
@       IN      MX      10 mail2

ns      IN      A       212.94.201.10
mail    IN      A       212.94.201.10
mail2   IN      A       212.94.201.11
www     IN      A       212.94.201.11

dns     IN      CNAME   ns

Esempio 10.14. Estratto da /etc/bind/db.192.168

; Reverse zone for 192.168.0.0/16
; admin.falcot.com. => zone contact: admin@falcot.com
$TTL    604800
@       IN      SOA     ns.internal.falcot.com. admin.falcot.com. (
                        20040121        ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL

        IN      NS      ns.internal.falcot.com.

; 192.168.0.1 -> arrakis
1.0     IN      PTR     arrakis.internal.falcot.com.
; 192.168.0.2 -> neptune
2.0     IN      PTR     neptune.internal.falcot.com.

; 192.168.3.1 -> pau
1.3     IN      PTR     pau.internal.falcot.com.