[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home] [volume] [parte]


Capitolo 281.   DNS: introduzione

Un servizio di risoluzione dei nomi, ovvero quanto viene fornito da un servente DNS, è ciò che gestisce la traduzione di un nome di dominio in un numero IP e viceversa. L'elaboratore che fornisce questo servizio può rispondere direttamente alle richieste riferite ai nomi di dominio di competenza della sua zona, mentre per quelli restanti deve interpellare altri nodi di rete competenti. Il capitolo inizia con l'illustrazione di un esempio, contando sull'intuizione del lettore.(1)

In questo capitolo e in tutto il resto del documento, si fa riferimento generalmente al pacchetto BIND, (2) quando si parla del programma named per la gestione del sistema di risoluzione dei nomi. È bene cercare di non fare confusione: named è il nome del demone che compie il lavoro; BIND è il nome del pacchetto che racchiude tutto il necessario alla gestione del DNS, compreso named.

281.1   Descrizione di un esempio

Si dispone di una piccola rete locale composta da due elaboratori con indirizzi IPv4 e IPv6:

IPv4 IPv6 Nome
192.168.1.1 fec0:0:0:1::1 dinkel.brot.dg
192.168.1.2 fec0:0:0:1::2 roggen.brot.dg

Il primo di questi due elaboratori è connesso a Internet attraverso la rete telefonica e viene predisposto per gestire un servizio di risoluzione dei nomi attraverso il demone named.

La connessione telefonica serve solo all'elaboratore dinkel e non permette all'altro elaboratore di accedere a Internet.

281.1.1   Prima di gestire un servente DNS

Quando non si gestisce localmente un servizio di risoluzione dei nomi e si vuole accedere a Internet, è necessario almeno fare uso di un servizio esterno, di solito messo a disposizione dallo stesso fornitore di accesso.

 
/etc/host.conf (sezione 279.1.1)

È il file di configurazione principale dei servizi di rete. Serve in particolare per determinare in che modo si intendono risolvere i nomi di dominio. L'esempio seguente è quello classico, utilizzato quasi sempre.

order hosts,bind
multi on

L'opzione order indica l'ordine dei servizi. In questo caso si utilizza prima il file /etc/hosts e quindi si interpella il servizio di risoluzione dei nomi.

 
/etc/hosts (sezione 279.2.1)

Questo file permette di definire i nomi degli elaboratori abbinati al loro indirizzo IP, senza fare uso di un servente DNS. Per entrambi gli elaboratori dell'esempio, va bene il contenuto seguente:

#necessario per il loopback
127.0.0.1       localhost.localdomain   localhost
::1             ip6-localhost           ip6-loopback

fe00::0         ip6-localnet
ff00::0         ip6-mcastprefix
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters
ff02::3         ip6-allhosts

192.168.1.1     dinkel.brot.dg          dinkel
fec0:0:0:1::1   dinkel.brot.dg          dinkel
192.168.1.2     roggen.brot.dg          roggen
fec0:0:0:1::2   roggen.brot.dg          roggen

 
/etc/networks (sezione 279.2.2)

Questo file attribuisce i nomi agli indirizzi di rete. Per entrambi gli elaboratori dell'esempio va bene il contenuto seguente:

localdomain     127.0.0.0
brot.dg         192.168.1.0

 
/etc/resolv.conf (sezione 279.2.3)

Viene usato per conoscere l'indirizzo o gli indirizzi dei servizi di risoluzione dei nomi di competenza della rete cui si appartiene. Se non si vuole gestire questo servizio nella propria rete locale, se ne deve indicare almeno uno esterno per accedere a Internet. Nell'esempio seguente, si fa riferimento a un indirizzo fornito dal proprio ISP (l'indirizzo dell'esempio è messo a caso: deve essere sostituito con uno o più indirizzi forniti dal proprio ISP).

nameserver 194.22.123.201

281.1.2   Predisposizione di un servente DNS elementare

Il tipo di servizio di risoluzione dei nomi più semplice è quello che si occupa solo di accumulare in una memoria cache gli ultimi indirizzi richiesti, senza avere alcuna competenza di zona. Il servizio viene allestito all'interno dell'elaboratore dinkel.

 
/etc/resolv.conf (279.2.3)

Viene modificato in modo da fare riferimento all'indirizzo locale (localhost), dal momento che si intende usare il proprio elaboratore per la gestione del servizio di risoluzione dei nomi.

nameserver 127.0.0.1

 
/etc/named.conf o /etc/bind/named.conf

Viene utilizzato da named come punto di partenza della configurazione del servizio DNS.

options {
        directory "/etc/bind";
        listen-on-v6 { any; };
};
zone "." {
        type hint;
        file "named.root";
};
zone "0.0.127.in-addr.arpa" {
        type master;
        file "zone/127.0.0";
};

La prima direttiva, che occupa le prime quattro righe, definisce in particolare la directory predefinita per contenere gli altri file di configurazione del servizio di risoluzione dei nomi.

La seconda direttiva indica il file named.root contenuto in /etc/bind/ che serve come fonte per gli indirizzi necessari a raggiungere i servizi di risoluzione dei nomi del dominio principale (ciò è rappresentato simbolicamente dal punto isolato).

La terza direttiva indica il file 127.0.0 contenuto in /etc/bind/zone/, utilizzato come configurazione per la rete dell'elaboratore locale (localhost).

in-addr.arpa è un dominio speciale attraverso il quale si definisce che le cifre precedenti rappresentano un indirizzo IPv4 rovesciato.

 
/etc/named.boot (obsoleto)

Nelle versioni più vecchie di named, al posto del file named.conf, si usava named.boot. L'esempio seguente è l'equivalente di quanto mostrato nel punto precedente.

directory                                /etc/bind
cache           .                        named.root
primary         0.0.127.in-addr.arpa     zone/127.0.0

 
/etc/bind/named.root, /etc/bind/named.ca

Si tratta del file contenente le indicazioni necessarie a raggiungere i servizi di risoluzione dei nomi del dominio principale. Nella consuetudine può avere diversi nomi, tra cui i più importanti sono named.root e named.rc. Questo file viene realizzato da un'autorità esterna e viene quindi semplicemente utilizzato così com'è. Segue un esempio di questo.

.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     128.9.0.107
.                        3600000      NS    C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
.                        3600000      NS    D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
.                        3600000      NS    E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
.                        3600000      NS    F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
.                        3600000      NS    G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
.                        3600000      NS    H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
.                        3600000      NS    I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
.                        3600000      NS    J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.      3600000      A     198.41.0.10
.                        3600000      NS    K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
.                        3600000      NS    L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.      3600000      A     198.32.64.12
.                        3600000      NS    M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.      3600000      A     198.32.65.12

 
/etc/bind/zone/127.0.0

Definisce la configurazione per la rete 127.0.0.*, cioè quella a cui appartiene il nome localhost.

@  IN  SOA   localhost.localdomain. root.localhost.localdomain. (
                                1998031800 ; Serial
                                28800      ; Refresh
                                7200       ; Retry
                                604800     ; Expire
                                86400 )    ; Minimum
                            NS    localhost.localdomain.
1.0.0.127.in-addr.arpa.     PTR   localhost.localdomain.

La prima riga, SOA (Start of authority), è il preambolo del file. Si riferisce all'origine rappresentata dal simbolo @ (in questo caso @ rappresenta 0.0.127.in-addr.arpa) e definisce in particolare i dati seguenti:

La seconda riga, NS (Name server) indica il nome dell'elaboratore che offre il servizio di risoluzione dei nomi.

La terza riga, PTR, indica che il nome di dominio 1.0.0.127.in-addr.arpa (ovvero l'indirizzo 127.0.0.1) corrisponde a localhost.localdomain.

In pratica, tutto questo definisce un servizio di risoluzione dei nomi che è in grado esclusivamente di interrogare i servizi del livello principale e di tradurre l'indirizzo 127.0.0.1 in localhost.localdomain.

281.1.3   Gestire anche la rete locale

Perché il servizio di risoluzione dei nomi sia in grado di gestire anche la rete locale, occorre che possa tradurre i nomi utilizzati nella rete locale in indirizzi IP e viceversa.

 
/etc/named.conf o /etc/bind/named.conf

Il file viene modificato in modo da fare riferimento ad altri due file:

options {
        directory "/etc/bind";
        listen-on-v6 { any; };
};
//
zone "." {
        type hint;
        file "named.root";
};
// 
zone "0.0.127.in-addr.arpa" {
        type master;
        file "zone/127.0.0";
};
zone "1.168.192.in-addr.arpa" {
        type master;
        file "zone/192.168.1";
};
zone "\[xfec0000000000001/64].ip6.arpa" {
        type master;
        file "zone/fec0:0:0:1";
};
zone "dg" {
        type master;
        file "zone/dg";
};
zone "brot.dg" {
        type master;
        file "zone/brot.dg";
};

 
/etc/named.boot (obsoleto)

Questo file viene usato nelle versioni più vecchie di named. Quello che segue è il contenuto equivalente a quanto mostrato nel punto precedente, ma senza la zona per IPv6.

directory                               /etc/bind
;
cache           .                       named.root
;
primary         0.0.127.in-addr.arpa    zone/127.0.0
primary         1.168.192.in-addr.arpa  zone/192.168.1
primary         dg                      zone/dg
primary         brot.dg                 zone/brot.dg

 
/etc/bind/zone/192.168.1

Definisce la configurazione per la rete locale 192.168.1.*.

@  IN  SOA   dinkel.brot.dg. root.dinkel.brot.dg.  (
                                1998031800 ; Serial
                                28800      ; Refresh
                                7200       ; Retry
                                604800     ; Expire
                                86400 )    ; Minimum
                            NS    dinkel.brot.dg.

1.1.168.192.in-addr.arpa.   PTR   dinkel.brot.dg.
2.1.168.192.in-addr.arpa.   PTR   roggen.brot.dg.

In tal modo è possibile determinare che l'indirizzo 192.168.1.1 corrisponde a dinkel.brot.dg e che 192.168.1.2 corrisponde a roggen.brot.dg.(3)

 
/etc/bind/zone/dg

Definisce la configurazione per la rete locale dg.

@  IN              SOA  dinkel.brot.dg. root.dinkel.brot.dg.  (
                               1998031800 ; Serial
                               28800      ; Refresh
                               7200       ; Retry
                               604800     ; Expire
                               86400 )    ; Minimum
                   NS   dinkel.brot.dg.

In tal modo è possibile determinare non ci sono nomi corrispondenti a nodi, che dipendono direttamente dalla zona dg.

 
/etc/bind/zone/brot.dg

Definisce la configurazione per la rete locale della zona brot.dg.

@  IN              SOA  dinkel.brot.dg. root.dinkel.brot.dg.  (
                               1998031800 ; Serial
                               28800      ; Refresh
                               7200       ; Retry
                               604800     ; Expire
                               86400 )    ; Minimum
                   NS   dinkel.brot.dg.

dinkel.brot.dg.    A      192.168.1.1
dinkel.brot.dg.    A6   0 fec0:0:0:1:0:0:0:1
roggen.brot.dg.    A      192.168.1.2
roggen.brot.dg.    A6   0 fec0:0:0:1:0:0:0:2

In tal modo è possibile determinare che l'indirizzo dinkel.brot.dg corrisponde a 192.168.1.1 per IPv4 e a fec0:0:0:1:0:0:0:1 per IPv6; inoltre, roggen.brot.dg corrisponde a 192.168.1.2 per IPv4 e a fec0:0:0:1:0:0:0:2 per IPv6.

 
/etc/bind/zone/127.0.0

Dal momento che adesso l'elaboratore locale può essere identificato con un nome più significativo del semplice localhost, conviene modificare anche il file /etc/bind/zone/127.0.0, benché ciò non sia strettamente necessario.

@  IN  SOA   dinkel.brot.dg. root.dinkel.brot.dg.  (
                                1998031800 ; Serial
                                28800      ; Refresh
                                7200       ; Retry
                                604800     ; Expire
                                86400 )    ; Minimum
                            NS    dinkel.brot.dg.

1.0.0.127.in-addr.arpa.     PTR   localhost.localdomain.

 
/etc/bind/zone/fec0:0:0:1

Definisce la trasformazione degli indirizzi IPv6 appartenenti alla rete locale (fec0:0:0:1:*) in nomi di dominio.

@       IN      SOA     dinkel.brot.dg. root.dinkel.brot.dg.  (
                                      1998031800 ; Serial
                                      28800      ; Refresh
                                      7200       ; Retry
                                      604800     ; Expire
                                      86400 )    ; Minimum
                                NS      dinkel.brot.dg.

\[x0000000000000001/64]         PTR     dinkel.brot.dg.
\[x0000000000000002/64]         PTR     roggen.brot.dg.

Si osservi il fatto che è possibile avere indirizzi IPv4 e indirizzi IPv6 che si risolvono in un nome in comune.

281.1.4   Gli altri elaboratori della rete

Gli altri elaboratori della rete locale, in questo caso solo roggen.brot.dg, fanno uso del servizio di risoluzione dei nomi offerto da dinkel.brot.dg, cioè 192.168.1.1, quindi il loro file /etc/resolv.conf deve contenere il riferimento a questo:

nameserver 192.168.1.1

281.1.5   Gestire anche la posta elettronica locale

Per aggiungere anche l'indicazione di un servente di posta elettronica, basta modificare il file /etc/bind/zone/brot.dg contenuto nell'elaboratore dinkel.brot.dg, aggiungendo la riga MX:

@  IN              SOA  dinkel.brot.dg. root.dinkel.brot.dg.  (
                               1998031800 ; Serial
                               28800      ; Refresh
                               7200       ; Retry
                               604800     ; Expire
                               86400 )    ; Minimum
                   NS   dinkel.brot.dg.
                   MX   10 dinkel.brot.dg.

dinkel.brot.dg.    A      192.168.1.1
dinkel.brot.dg.    A6   0 fec0:0:0:1:0:0:0:1
roggen.brot.dg.    A      192.168.1.2
roggen.brot.dg.    A6   0 fec0:0:0:1:0:0:0:2

281.1.6   Gestire gli alias

Spesso è conveniente definire dei nomi fittizi riferiti a elaboratori che ne hanno già uno. Viene modificato il file /etc/bind/zone/brot.dg in modo da aggiungere gli alias www.brot.dg e ftp.brot.dg, che fanno riferimento sempre al solito dinkel.brot.dg che però svolge anche le funzioni di servente HTTP e FTP:

@  IN             SOA    dinkel.brot.dg. root.dinkel.brot.dg. (
                               1998031800 ; Serial
                               28800      ; Refresh
                               7200       ; Retry
                               604800     ; Expire
                               86400 )    ; Minimum
                  NS     dinkel.brot.dg.

                  MX     10 dinkel.brot.dg.

www.brot.dg.      CNAME  dinkel.brot.dg.
ftp.brot.dg.      CNAME  dinkel.brot.dg.

dinkel.brot.dg.    A      192.168.1.1
dinkel.brot.dg.    A6   0 fec0:0:0:1:0:0:0:1
roggen.brot.dg.    A      192.168.1.2
roggen.brot.dg.    A6   0 fec0:0:0:1:0:0:0:2

281.1.7   Isolamento dall'esterno

Se la rete locale funziona senza poter accedere alla rete Internet esterna, conviene evitare che si tenti di interrogare i servizi di risoluzione dei nomi del dominio principale. basta commentare la direttiva che attiva questa ricerca nel file named.conf.

 
/etc/named.conf o /etc/bind/named.conf

I commenti possono iniziare con una doppia barra obliqua (//), terminando così alla fine della riga, oppure possono essere indicati nella stessa forma del linguaggio C: /*...*/.

options {
        directory "/etc/bind";
        listen-on-v6 { any; };
};
//
// La zona root viene esclusa attraverso dei commenti
//zone "." {
//      type hint;
//      file "named.root";
//};
// 
zone "0.0.127.in-addr.arpa" {
        type master;
        file "zone/127.0.0";
};
zone "1.168.192.in-addr.arpa" {
        type master;
        file "zone/192.168.1";
};
zone "\[xfec0000000000001/64].ip6.arpa" {
        type master;
        file "zone/fec0:0:0:1";
};
zone "dg" {
        type master;
        file "zone/dg";
};
zone "brot.dg" {
        type master;
        file "zone/brot.dg";
};

 
/etc/named.boot (obsoleto)

I commenti sono preceduti da un punto e virgola:

directory                               /etc/bind
; cache           .                       named.root
primary         0.0.127.in-addr.arpa    zone/127.0.0
primary         1.168.192.in-addr.arpa  zone/192.168.1
primary         dg                      zone/dg
primary         brot.dg                 zone/brot.dg

281.2   Avvio del servizio di risoluzione dei nomi e riepilogo della configurazione

Dopo l'esempio visto nella prima parte di questo capitolo, conviene riepilogare le competenze dei vari componenti che permettono la gestione del servizio di risoluzione dei nomi.

281.2.1   Utilizzo di «named»

Il programma named è il demone che compie in pratica il servizio di risoluzione dei nomi del pacchetto BIND. Si avvale di un file di avvio (o di configurazione) che in passato è stato /etc/named.boot e attualmente è invece /etc/named.conf, oppure /etc/bind/named.conf. Eventualmente, se viene indicato un nome di file negli argomenti, viene utilizzato quel file invece di quello predefinito.

named [opzioni] [[-b] file_di_avvio]

Nei sistemi in cui si attiva la gestione di un servizio di risoluzione dei nomi, named viene avviato dalla procedura di inizializzazione del sistema (Init), ma può anche essere avviato manualmente.

A ogni modo, se la propria distribuzione GNU non mette a disposizione uno script specifico (per esempio il file /etc/init.d/bind), si può controllare il funzionamento o il riavvio di questo demone attraverso il programma rndc, che fa sempre parte di BIND. Quello che segue è solo una semplificazione dello schema sintattico complessivo:

rndc {start|stop|restart}

Il significato dell'argomento è intuitivo: avvia, ferma o riavvia il servizio. Evidentemente, è necessario riavviare il servizio ogni volta che si modifica la configurazione.

281.2.2   File «/etc/named.conf» o «/etc/bind/named.conf»

Il file named.conf, che si trova di solito nella directory /etc/ oppure in /etc/bind/, è il punto di partenza della configurazione di un servizio di risoluzione dei nomi attraverso named. Può contenere diversi tipi di direttive. L'esempio seguente riprende e descrive i casi già visti:

options {
        directory "/etc/bind";
        listen-on-v6 { any; };
};
//
zone "." {
        type hint;
        file "named.root";
};
// 
zone "0.0.127.in-addr.arpa" {
        type master;
        file "zone/127.0.0";
};
zone "1.168.192.in-addr.arpa" {
        type master;
        file "zone/192.168.1";
};
zone "\[xfec0000000000001/64].ip6.arpa" {
        type master;
        file "zone/fec0:0:0:1";
};
zone "dg" {
        type master;
        file "zone/dg";
};
zone "brot.dg" {
        type master;
        file "zone/brot.dg";
};

La direttiva options serve a definire una serie di opzioni di funzionamento. Nell'esempio viene dichiarata in particolare l'opzione directory che indica la collocazione predefinita di altri file usati per la configurazione del servizio di risoluzione dei nomi.

In condizioni normali, la directory indicata dall'opzione directory, corrisponde a /var/cache/bind/. In tal caso, tuttavia, per fare riferimento a file di zona collocati all'interno della directory /etc/bind/, le direttive relative indicano dei percorsi assoluti; per esempio:

options {
        directory "/var/cache/bind";
        listen-on-v6 { any; };
};
...
...
zone "0.0.127.in-addr.arpa" {
        type master;
        file "/etc/bind/zone/127.0.0";
};

La direttiva zone "." {...} viene utilizzata per definire che per il dominio principale (rappresentato da un punto), si utilizza il file named.root (contenuto nella directory predefinita) e che questo viene messo in una memoria cache (type hint). Il dominio principale è quello di origine e il file named.root contiene gli indirizzi necessari a raggiungere i servizi di risoluzione dei nomi di quel dominio (cioè quelli di partenza). Il nome usato per il file named.root può cambiare da un sistema a un altro.

La terza direttiva definisce un file (zone/127.0.0) contenente informazioni autorevoli sulla rete 0.0.127.in-addr.arpa (127.0.0.*). In pratica, il file zone/127.0.0 serve per tradurre gli indirizzi di quella sottorete in nomi. Di solito si tratta solo di tradurre 127.0.0.1 in localhost.

La quarta direttiva definisce un file (zone/192.168.1) contenente informazioni autorevoli sulla rete 1.168.192.in-addr.arpa (192.168.1.*). In pratica, il file zone/192.168.1 serve per tradurre gli indirizzi di quella sottorete in nomi.

La quinta direttiva definisce un file (zone/fec0:0:0:1) contenente informazioni autorevoli sulla rete \[xfec0000000000001/64].ip6.arpa (ffec:0:0:0:1:*). In pratica, il file zone/fec0:0:0:1 serve per tradurre gli indirizzi della rete locale IPv6 in nomi.

La sesta direttiva definisce un file (zone/dg) contenente informazioni autorevoli sulla rete dg, a cui non corrisponde un gruppo di indirizzi. Dal momento che nell'esempio proposto non ci sono nomi di dominio completi del tipo nome.dg, il file non contiene la traduzione di alcunché, ma serve per completare la struttura delle zone.

La settima direttiva definisce un file (zone/brot.dg) contenente informazioni autorevoli sulla rete brot.dg (192.168.1.0, ma espressa per nome). In pratica, il file zone/brot.dg serve per tradurre i nomi di quella sottorete in indirizzi IP. All'interno di questo file possono essere anche indicati degli alias e dei serventi per la gestione della posta elettronica.

Si può osservare che manca una direttiva che punti a un file per la risoluzione del dominio localdomain. Dal momento che si tratta di un dominio fittizio riferito all'interno del proprio elaboratore, non è pensabile che un altro elaboratore tenti di accedervi. Pertanto, per la sua traduzione è più che sufficiente la presenza del file /etc/hosts.

Il DNS utilizza una serie di protocolli, tra cui anche UDP. Se ci si trova a essere protetti da un firewall che esclude il transito dei pacchetti UDP, per poter interpellare gli altri servizi di risoluzione dei nomi delle zone che sono al di fuori della propria competenza locale, occorre aggiungere una direttiva che rinvia le richieste a un servizio esterno. Questa situazione può verificarsi quando la propria connessione a Internet avviene attraverso un ISP attento ai problemi di sicurezza e che usa questa politica di protezione.

L'esempio seguente, per concludere, mostra in che modo espandere la direttiva options per aggiungere l'indicazione di un servizio di risoluzione dei nomi esterno a cui inoltrare le richieste:

options {
        directory "/etc/bind";
        forwarders {
                111.112.113.114;
        };
};
//
zone "." {
        type hint;
        file "named.root";
};
// 
...

281.2.3   «/etc/bind/named.root»

Negli esempi visti fino a questo punto, il file /etc/bind/named.root (o /etc/bind/named.ca) è quello che definisce gli indirizzi dei servizi di risoluzione dei nomi a livello del dominio principale. Questi indirizzi cambiano nel tempo e il file aggiornato è ottenibile attraverso un'interrogazione per mezzo di Dig, come descritto nella sezione 281.3.3.(4) Segue un esempio di questo file.

;       This file holds the information on root name servers needed to
;       initialize cache of Internet domain name servers
;       (e.g. reference this file in the "cache  .  <file>"
;       configuration file of BIND domain name servers).
;
;       This file is made available by InterNIC registration services
;       under anonymous FTP as
;           file                /domain/named.root
;           on server           FTP.RS.INTERNIC.NET
;       -OR- under Gopher at    RS.INTERNIC.NET
;           under menu          InterNIC Registration Services (NSI)
;              submenu          InterNIC Registration Archives
;           file                named.root
;
;       last update:    May 19, 1997
;       related version of root zone:   1997051700
;
;
; formerly NS.INTERNIC.NET
;
.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
;
; formerly NS1.ISI.EDU
;
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     128.9.0.107
;
; formerly C.PSI.NET
;
.                        3600000      NS    C.ROOT-SERVERS.NET.
C.ROOT-SERVERS.NET.      3600000      A     192.33.4.12
;
; formerly TERP.UMD.EDU
;
.                        3600000      NS    D.ROOT-SERVERS.NET.
D.ROOT-SERVERS.NET.      3600000      A     128.8.10.90
;
; formerly NS.NASA.GOV
;
.                        3600000      NS    E.ROOT-SERVERS.NET.
E.ROOT-SERVERS.NET.      3600000      A     192.203.230.10
;
; formerly NS.ISC.ORG
;
.                        3600000      NS    F.ROOT-SERVERS.NET.
F.ROOT-SERVERS.NET.      3600000      A     192.5.5.241
;
; formerly NS.NIC.DDN.MIL
;
.                        3600000      NS    G.ROOT-SERVERS.NET.
G.ROOT-SERVERS.NET.      3600000      A     192.112.36.4
;
; formerly AOS.ARL.ARMY.MIL
;
.                        3600000      NS    H.ROOT-SERVERS.NET.
H.ROOT-SERVERS.NET.      3600000      A     128.63.2.53
;
; formerly NIC.NORDU.NET
;
.                        3600000      NS    I.ROOT-SERVERS.NET.
I.ROOT-SERVERS.NET.      3600000      A     192.36.148.17
;
; temporarily housed at NSI (InterNIC)
;
.                        3600000      NS    J.ROOT-SERVERS.NET.
J.ROOT-SERVERS.NET.      3600000      A     198.41.0.10
;
; housed in LINX, operated by RIPE NCC
;
.                        3600000      NS    K.ROOT-SERVERS.NET.
K.ROOT-SERVERS.NET.      3600000      A     193.0.14.129 
;
; temporarily housed at ISI (IANA)
;
.                        3600000      NS    L.ROOT-SERVERS.NET.
L.ROOT-SERVERS.NET.      3600000      A     198.32.64.12
;
; temporarily housed at ISI (IANA)
;
.                        3600000      NS    M.ROOT-SERVERS.NET.
M.ROOT-SERVERS.NET.      3600000      A     198.32.65.12
; End of File

281.3   Interrogazione del servizio

Il servizio di risoluzione dei nomi mette a disposizione le sue informazioni attraverso la rete, per i programmi che ne hanno bisogno. Per interrogare il servizio si possono usare programmi specifici, che vengono descritti in parte nelle sezioni successive.

281.3.1   Nslookup

Nslookup (5) è il programma tradizionale per l'interrogazione del servizio di risoluzione dei nomi. Esistono delle alternative a questo programma, forse più semplici da usare, ma conviene conoscerne almeno l'uso elementare.

L'eseguibile che svolge il lavoro è nslookup, che si utilizza secondo il modello sintattico seguente:

nslookup [opzioni] [nodo_da_trovare | - servente ]

Nslookup offre due modalità di funzionamento: interattiva e non interattiva. Nel primo caso, il programma offre un invito attraverso il quale inserire dei comandi, nel secondo tutto si conclude con l'uso di argomenti nella riga di comando.

Si entra nella modalità interattiva quando non vengono forniti argomenti e di conseguenza viene utilizzato il servizio di risoluzione dei nomi predefinito attraverso il file /etc/resolv.conf, oppure quando il primo argomento è un trattino (-) e il secondo è il nome o l'indirizzo necessario a raggiungere un servente per la risoluzione dei nomi. In tal caso, Nslookup mostra un invito costituito da un semplice simbolo di maggiore:

nslookup[Invio]

Per uscire dalla modalità interattiva, si deve usare il comando exit:

exit

La modalità non interattiva viene utilizzata quando il nome o l'indirizzo di un nodo di rete da cercare viene indicato come primo argomento. In tal caso, il secondo argomento opzionale è il nome o l'indirizzo per raggiungere un servizio di risoluzione dei nomi.

Nelle situazioni più comuni, ci si limita a usare il programma per tradurre un indirizzo in nome o viceversa. Segue la descrizione di alcuni esempi:

281.3.2   Host

Host (6) è un programma alternativo a Nslookup, il cui utilizzo è, per certi versi, un po' più semplice. L'eseguibile che compie il lavoro è host:

host [opzioni] {nodo| -l zona} [servente_dns]

Le opzioni e le relative funzionalità a disposizione sono molte. Per lo studio dettagliato delle possibilità di questo programma conviene consultare la sua pagina di manuale: host(1).

Dal modello sintattico presentato si può osservare che il primo argomento dopo le opzioni, è il nome o l'indirizzo di un nodo di rete, oppure il nome di una zona, espressa attraverso il nome di dominio relativo. Eventualmente, si può aggiungere un secondo argomento che permette di specificare un servente DNS alternativo a quello predefinito. La tabella seguente riepiloga le opzioni più comuni.

Tabella 281.27. Alcune opzioni.

Opzione Descrizione
-v
Permette di ottenere maggiori informazioni.
-t tipo
Elenca i record del tipo specificato. Per fare riferimento a tutti i tipi di record, si può usare la parola chiave ANY, oppure l'asterisco (opportunamente protetto, se necessario, dall'interpretazione della shell).
-l zona
Permette di indicare una zona nel primo argomento, al posto di un nodo di rete particolare.

Seguono alcuni esempi:

281.3.3   Dig

Dig, (7) ovvero Domain information groper è un sistema di interrogazione dei servizi DNS, flessibile e complesso nel contempo. Si compone dell'eseguibile dig, che si utilizza secondo lo schema seguente, che qui appare semplificato rispetto alla sintassi completa:

dig [@servente_dns] [opzioni] [nome_risorsa] [tipo_richiesta] [opzione...]

Un utilizzo comune di questo eseguibile, si traduce nella sintassi seguente:

dig [@servente_dns] nome_risorsa [tipo_richiesta]

L'esempio seguente restituisce il record «A» della risorsa dinkel.brot.dg, assieme ad altre informazioni di contorno:

dig @127.0.0.1 dinkel.brot.dg A[Invio]

Il listato è interrotto per motivi tipografici:

; <<>> DiG 9.2.0 <<>> @127.0.0.1 dinkel.brot.dg A
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4122
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; QUESTION SECTION:
;dinkel.brot.dg.                        IN      A

;; ANSWER SECTION:
dinkel.brot.dg.         86400   IN      A       192.168.1.1

;; AUTHORITY SECTION:
brot.dg.                86400   IN      NS      dinkel.brot.dg.
...

In pratica si ottiene l'indirizzo IPv4 associato al nome dinkel.brot.dg, dal servente DNS raggiungibile all'indirizzo 127.0.0.1. Ma per fare la ricerca opposta (il nome a partire dall'indirizzo), occorre indicare il nome di dominio appartenente a in-addr.arpa:

dig @127.0.0.1 1.1.168.192.in-addr.arpa PTR[Invio]

Ecco un piccolo estratto di ciò che Dig può restituire:

...
;; ANSWER SECTION:
1.1.168.192.in-addr.arpa. 86400 IN      PTR     dinkel.brot.dg.
...

Prima di andare oltre questi esempi elementari, è bene chiarire che se si omette l'indicazione del servente da interrogare, Dig utilizza il primo che riesce a raggiungere dall'elenco contenuto nel file /etc/resolv.conf; inoltre, se manca l'indicazione del tipo di record da cercare, si intende il tipo «A», ovvero quello che abbina nomi di dominio a indirizzi IPv4.

Appare subito la difficoltà dell'utilizzo di questo strumento, che richiede un conoscenza approfondita del modo in cui si descrivono i file di zona di un servizio DNS.

Per ottenere la risoluzione inversa da un indirizzo al nome corrispondente, si può usare una forma alternativa del comando:

dig [@servente_dns] -x indirizzo_numerico

Per esempio, per trovare il nome corrispondente al numero 192.168.1.1 si può usare il comando seguente:

dig @127.0.0.1 -x 192.168.1.1[Invio]

Il risultato è lo stesso già visto per l'interrogazione di un record PTR.

Alla fine degli argomenti normali della riga di comando, si possono aggiungere delle opzioni speciali, che iniziano con il segno +, con le quali si modifica il comportamento di Dig. Tra tutte, merita attenzione l'opzione +short, che consente di ridurre al minimo le informazioni restituite da Dig. Per esempio, il comando seguente interroga il record «A» della risorsa dinkel.brot.dg, restituendo semplicemente il numero dell'indirizzo IPv4 corrispondente:

dig dinkel.brot.dg +short[Invio]

192.168.1.1

Come ultima considerazione su Dig, si vuole mostrare cosa succede se si utilizza senza alcun argomento:

dig[Invio]

Se è disponibile l'accesso alla rete esterna, si ottiene il file contenente l'elenco dei serventi DNS competenti per il dominio principale (.), come ottenuto dall'interrogazione del servente DNS predefinito (/etc/resolv.conf):

; <<>> DiG 9.2.0 <<>>
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19406
;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13

;; QUESTION SECTION:
;.                              IN      NS

;; ANSWER SECTION:
.                       3430    IN      NS      F.ROOT-SERVERS.NET.
.                       3430    IN      NS      G.ROOT-SERVERS.NET.
.                       3430    IN      NS      H.ROOT-SERVERS.NET.
.                       3430    IN      NS      I.ROOT-SERVERS.NET.
.                       3430    IN      NS      J.ROOT-SERVERS.NET.
.                       3430    IN      NS      K.ROOT-SERVERS.NET.
.                       3430    IN      NS      L.ROOT-SERVERS.NET.
.                       3430    IN      NS      M.ROOT-SERVERS.NET.
.                       3430    IN      NS      A.ROOT-SERVERS.NET.
.                       3430    IN      NS      B.ROOT-SERVERS.NET.
.                       3430    IN      NS      C.ROOT-SERVERS.NET.
.                       3430    IN      NS      D.ROOT-SERVERS.NET.
.                       3430    IN      NS      E.ROOT-SERVERS.NET.

;; ADDITIONAL SECTION:
F.ROOT-SERVERS.NET.     604659  IN      A       192.5.5.241
G.ROOT-SERVERS.NET.     604659  IN      A       192.112.36.4
H.ROOT-SERVERS.NET.     604659  IN      A       128.63.2.53
I.ROOT-SERVERS.NET.     604659  IN      A       192.36.148.17
J.ROOT-SERVERS.NET.     604659  IN      A       198.41.0.10
K.ROOT-SERVERS.NET.     604659  IN      A       193.0.14.129
L.ROOT-SERVERS.NET.     604629  IN      A       198.32.64.12
M.ROOT-SERVERS.NET.     604629  IN      A       202.12.27.33
A.ROOT-SERVERS.NET.     604637  IN      A       198.41.0.4
B.ROOT-SERVERS.NET.     604657  IN      A       128.9.0.107
C.ROOT-SERVERS.NET.     604658  IN      A       192.33.4.12
D.ROOT-SERVERS.NET.     604659  IN      A       128.8.10.90
E.ROOT-SERVERS.NET.     604659  IN      A       192.203.230.10

;; Query time: 4 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed May 22 15:28:57 2002
;; MSG SIZE  rcvd: 436

Se non ci si fida del servente DNS predefinito, si può richiedere espressamente l'informazione a un nodo di fiducia; per esempio:

dig @rs.internic.net . ns[Invio]


1) Recentemente ci sono stati cambiamenti nel nome e nel formato del file di configurazione iniziale: al posto del vecchio /etc/named.boot si utilizza /etc/named.conf, oppure /etc/bind/named.conf, che ha una sintassi differente dal primo.

2) BIND   software libero con licenza speciale e restrizioni per quanto riguarda l'algoritmo RSA

3) I nomi di dominio sono completi (FQDN) perché sono indicati con un punto finale.

4) Il file originale riporta il riferimento all'indirizzo ftp.rs.internic.net, che in pratica è inutilizzabile a causa della grande quantità di accessi.

5) Nslookup   software libero con licenza speciale

6) Host   software libero con licenza speciale

7) Dig   software libero con licenza speciale


Appunti di informatica libera 2008 --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome dns_introduzione.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home]

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory