Product SiteDocumentation Site

10.6. Server dei nomi di dominio (DNS)

10.6.1. Principi e meccanismi

Il server di nomi di dominio (DNS: Domain Name Service) è un componente fondamentale di Internet: infatti associa i nomi host agli indirizzi IP (e viceversa), il che consente l'uso di www.debian.org invece di 5.153.231.4 o 2001:41c8:1000:21::21:4.
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 (record di risorse: Resource Records):
  • A: indirizzo IPv4.
  • CNAME : alias ( nome canonico ).
  • MX: mail exchange, un server di posta elettronica. Queste informazioni vengono usate da altri server di posta elettronica per trovare dove inviare e-mail indirizzate ad un determinato indirizzo. Ogni record MX ha una priorità. Viene prima utilizzato il server con la priorità più alta (con il numero più basso, vedere riquadro FONDAMENTALI SMTP ); in caso il primo server non risponda, vengono interrogati i successivi in ordine decrescente di priorità.
  • PTR: risoluzione di un indirizzo IP ad un nome. Tale record viene memorizzato in una zona dedicata alla ricerca inversa «reverse DNS» che prende il nome secondo l'intervallo di indirizzi IP. Per esempio, 1.168.192.in-addr.arpa è la zona contenente la risoluzione inversa per tutti gli indirizzi nell'intervallo 192.168.1.0/24.
  • AAAA: indirizzo IPv6.
  • NS: associa un nome ad un server di nomi. Ogni dominio deve avere almeno un record NS. Questi record puntano ad un server DNS in grado di rispondere ad interrogazioni relative a questo dominio; di solito puntano ai server primario e secondario per il dominio. Questi record permettono anche la delega DNS. Per esempio, la zona falcot.com può comprendere un record NS per internal.falcot.com, il che significa che un altro server gestisce la zona internal.falcot.com. Naturalmente, questo server deve dichiarare una zona internal.falcot.com.
Il server di 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 conceda privilegi di root all'autore di un attacco (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.6.2. Configurazione

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.