Capitolo successivo Capitolo precedente Indice

48. DNS - Domain Name System server

Un name server, o DNS server, è un computer host in grado di fornire la traduzione di un nome di dominio in un numero IP e viceversa. Il computer che fornisce questo servizio è in grado di rispondere direttamente alle richieste riferite ai nomi di dominio di competenza della sua zona, e per gli altri, deve interpellare altri name server competenti.

48.1 Descrizione di un esempio

Si dispone di una piccola rete locale composta da due computer:

Il primo di questi due computer è connesso a Internet attraverso la rete telefonica e viene predisposto per gestire un name server attraverso il daemon named.

La connessione telefonica serve solo al computer topolino e non permette all'altro computer di accedere a Internet.

Prima di gestire un DNS server

Quando non si gestisce localmente un name server, e si vuole accedere a Internet, è necessario almeno di servirsi di un name server esterno, di solito messo a disposizione dallo stesso ISP (Internet Service Provider)

/etc/host.conf

( host.conf) È 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

La riga order, indica l'ordine dei servizi. In questo caso si utilizza prima il file /etc/hosts e quindi si interpella il name server.

/etc/hosts

( hosts) Questo file permette di definire i nomi dei computer abbinati al loro indirizzo IP, senza fare uso di un DNS server. Per entrambi i computer dell'esempio, va bene il contenuto seguente.

#necessario per il loopback
127.0.0.1       localhost.localdomain   localhost

192.168.1.1     topolino.zigozago.dg    topolino
192.168.1.2     pippo.zigozago.dg       pippo

/etc/networks

( networks) Questo file, attribuisce i nomi agli indirizzi di rete. Per entrambi i computer dell'esempio, va bene il contenuto seguente.

localdomain     127.0.0.0
zigozago.dg     192.168.1.0

/etc/resolv.conf

( resolv.conf) Viene usato per conoscere l'indirizzo o gli indirizzi dei name server di competenza della rete cui si appartiene. Se non si vuole gestire un name server nella propria rete locale, si deve almeno indicarne 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

Predisposizione di un DNS server elementare

Il tipo di name server più semplice è quello che si occupa solo di accumulare in una memoria cache gli ultimi indirizzi richiesti, senza avere alcuna competenza di zona. Il server viene allestito all'interno del computer topolino.

/etc/resolv.conf

( resolv.conf) Viene modificato in modo da fare riferimento all'indirizzo locale (localhost), dal momento che si intende usare il proprio computer come name server.

nameserver 127.0.0.1

/etc/named.boot

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

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

La prima riga definisce la directory predefinita per contenere gli altri file di configurazione del name server.

La seconda riga indica il file root.cache contenuto in /var/named/ che serve come fonte per gli indirizzi dei name server di root (ciò è simbolicamente rappresentato dal punto isolato).

La terza riga indica il file 127.0.0 contenuto in /var/named/zone/, utilizzato come configurazione per la rete del computer locale (localhost).

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

/var/named/root.cache

Si tratta del file contenente le indicazioni necessarie a raggiungere i name server del dominio root. Questo file viene realizzato da una 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

/var/named/zone/127.0.0

Definisce la configurazione per la rete 127.0.0.0, cioè quella del localhost.

@  IN  SOA   topolino.zigozago.dg. root.topolino.zigozago.dg. (
                 1997062000 ; Serial
                 28800      ; Refresh
                 7200       ; Retry
                 604800     ; Expire
                 86400 )    ; Minimum
       NS    topolino.zigozago.dg.
1      PTR   localhost.localdomain.

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

La seconda riga, NS (Name Server) indica il nome del computer che svolge la funzione di name server.

La terza riga, PTR, indica che l'indirizzo locale 1 del dominio 0.0.127.in-addr.arpa (cioè 1.0.0.127.in-addr.arpa, ovvero 127.0.0.1) è chiamato localhost.localdomain.

In pratica, tutto questo è servito per definire un name server che è soltanto in grado di interrogare i name server di livello root e di tradurre l'indirizzo 127.0.0.1 in localhost.localdomain.

Gestire anche la rete locale

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

/etc/named.boot

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

directory                                /var/named
;
cache           .                        root.cache
;
primary         0.0.127.in-addr.arpa     zone/127.0.0
primary         1.168.192.in-addr.arpa   zone/192.168.1
primary         zigozago.dg              zone/zigozago.dg

/var/named/zone/192.168.1

Definisce la configurazione per la rete locale 192.168.1.0.

@  IN  SOA   topolino.zigozago.dg. root.topolino.zigozago.dg.  (
                 1997062000 ; Serial
                 28800      ; Refresh
                 7200       ; Retry
                 604800     ; Expire
                 86400 )    ; Minimum
       NS    topolino.zigozago.dg.

1      PTR   topolino.zigozago.dg.
2      PTR   pippo.zigozago.dg.

In tal modo è possibile ``scoprire'' che l'indirizzo 192.168.1.1 corrisponde a topolino.zigozago.dg e che 192.168.1.2 corrisponde a pippo.zigozago.dg

Gli indirizzi sono assoluti perché sono indicati con un punto finale.

/var/named/zone/zigozago.dg

Definisce la configurazione per la rete locale zigozago.dg.

@  IN                 SOA  topolino.zigozago.dg. root.topolino.zigozago.dg.  (
                               1997062000 ; Serial
                               10800      ; Refresh
                               7200       ; Retry
                               10800      ; Expire
                               86400 )    ; Minimum
                      NS   topolino.zigozago.dg.

topolino.zigozago.dg. A    192.168.1.1
pippo.zigozago.dg.    A    192.168.1.2

In tal modo è possibile ``scoprire'' che l'indirizzo topolino.zigozago.dg corrisponde a 192.168.1.1 e che pippo.zigozago.dg corrisponde a 192.168.1.2

---------

Gli altri computer della rete locale, in questo caso solo pippo.zigozago.dg, fanno uso del name server topolino.zigozago.dg, cioè di 192.168.1.1.

/etc/resolv.conf

nameserver 192.168.1.1

Gestire anche la posta locale.

Per aggiungere anche l'indicazione di un server di posta elettronica, basta modificare il file /var/named/zone/zigozago.dg contenuto nel computer topolino.zigozago.dg, aggiungendo la riga MX.

/var/named/zone/zigozago.dg

@  IN                 SOA  topolino.zigozago.dg. root.topolino.zigozago.dg.  (
                               1997062000 ; Serial
                               10800      ; Refresh
                               7200       ; Retry
                               10800      ; Expire
                               86400 )    ; Minimum
                      NS   topolino.zigozago.dg.

                      MX   10 topolino.zigozago.dg.

topolino.zigozago.dg. A    192.168.1.1
pippo.zigozago.dg.    A    192.168.1.2

Gestire gli alias

Spesso è conveniente definire dei nomi fittizi riferiti a computer che ne hanno già uno.

/var/named/zone/zigozago.dg

Viene modificato in modo da aggiungere gli alias www.zigozago.dg e ftp.zigozago.dg che fanno riferimento sempre al solito topolino.zigozago.dg che però svolge anche le funzioni di server web e FTP.

@  IN                 SOA    topolino.zigozago.dg. root.topolino.zigozago.dg.  (
                                 1997062000 ; Serial
                                 10800      ; Refresh
                                 7200       ; Retry
                                 10800      ; Expire
                                 86400 )    ; Minimum
                      NS     topolino.zigozago.dg.

                      MX     10 topolino.zigozago.dg.

www.zigozago.dg.      CNAME  topolino.zigozago.dg.
ftp.zigozago.dg.      CNAME  topolino.zigozago.dg.

topolino.zigozago.dg. A    192.168.1.1
pippo.zigozago.dg.    A    192.168.1.2

Isolamento dall'esterno

Se la rete locale funziona senza poter accedere alla rete Internet esterna, conviene evitare che si tenti di interrogare i name server del dominio root. basta commentare (con un punto e virgola) la riga che attiva questa ricerca nel file /etc/named.boot.

/etc/named.boot

directory                                /var/named
; cache           .                        root.cache
primary         0.0.127.in-addr.arpa     zone/127.0.0
primary         1.168.192.in-addr.arpa   zone/192.168.1
primary         zigozago.dg              zone/zigozago.dg

48.2 Strumenti e configurazione

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

# named

named [<opzioni>] [[-b] <file-di-avvio>]

named è il daemon che funge da name server. Si avvale di un file di avvio (o di configurazione) che normalmente è /etc/named.boot (se viene indicato un nome di file negli argomenti, viene utilizzato quel file invece di quello predefinito).

Nei sistemi in cui si attiva la gestione di un name server, named viene avviato dalla procedura di inizializzazione (init), ma può anche essere avviato manualmente.

Per conoscere maggiori dettagli conviene consultare named(8).

/etc/named.boot

Il file /etc/named.boot è il punto di partenza della configurazione di un name server attraverso named.

Può contenere diversi tipi di righe (record). L'esempio seguente mostra l'utilizzo di quelle più importanti.

directory                                /var/named
cache           .                        root.cache
primary         0.0.127.in-addr.arpa     zone/127.0.0
primary         1.168.192.in-addr.arpa   zone/192.168.1
primary         zigozago.dg              zone/zigozago.dg

Il record directory definisce la collocazione predefinita di altri file usati per la configurazione del name server.

Il record cache . root.cache definisce che per il dominio root (rappresentato da un punto), si utilizza il file root.cache (contenuto nella directory predefinita) e che questo viene messo in una cache di backup. Il dominio root è quello di origine e il file root.cache contiene gli indirizzi necessari a raggiungere i name server di quel dominio (cioè quelli di partenza). Il nome usato per il file root.cache può cambiare da un sistema a un altro, ma questo, è quello normalmente indicato nei documenti che trattano dei name server.

Il terzo record definisce un file (zone/127.0.0) contenente informazioni autorevoli sulla rete 0.0.127.in-addr.arpa (127.0.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.

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

Il quinto record definisce un file (zone/zigozago.dg) contenente informazioni autorevoli sulla rete zigozago.dg (192.168.1.0, ma espressa per nome). In pratica, il file zone/zigozago.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 server per la gestione della posta.

/var/named/root.cache

Il file /var/named/root.cache è solitamente quello che definisce gli indirizzi dei name server a livello di dominio root. Questi indirizzi cambiano nel tempo e questo file aggiornato è ottenibile presso l'indirizzo seguente.

ftp://ftp.rs.internic.net/domain/named.root

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

$ nslookup

nslookup [<opzioni>] [<host-da-trovare> | - server ]

nslookup è un programma in grado di interrogare un name server. Ha due modalità di funzionamento: interattiva e non interattiva.

La modalità interattiva si ottiene quando:

La modalità non interattiva viene utilizzata quando il nome o l'indirizzo di un host da cercare viene indicato come primo argomento. In tal caso, il secondo argomento opzionale è il nome o l'indirizzo di un name server.

Per conoscere maggiori dettagli conviene consultare nslookup(8).

# ndc

ndc <direttiva>...

ndc è un programma (in forma di script) che permette di inviare diversi tipi di segnali a named, il daemon per la gestione del name server.

Alcune direttive

start

Avvia named se non è già in funzione.

stop

Termina l'esecuzione di named se è in funzione.

restart

Termina l'esecuzione e quindi riavvia named.

48.3 Riferimenti

 

1997.10.26 - Scritto da Daniele Giacomini   daniele@calion.com   (vedi copyright: Appunti Linux).


Capitolo successivo Capitolo precedente Indice