Avanti Indietro Indice

3. Un name server caching only.

Una prima pugnalata alla configurazione del DNS, molto utile per gli utenti dial-up.

Un name server caching only troverà le risposte alle richieste di nomi e ricorderà le risposte quando la prossima volta ne avrete bisogno. Questo abbrevierà signficativamente il tempo di attesa per le volte successive, specialmente se avete una connessione lenta.

Prima di tutto vi occorre un file chiamato /etc/named.conf. Questo viene letto quando named parte. Per adesso dovrebbe contenere semplicemente:


// File di configurazione per un name server caching only

options {
        directory "/var/named";

        // Decommentatare questa cosa potrebbe aiutare se di deve passare
        // attraverso un firewall e le cose non funzionano bene

        // query-source port 53;
};

zone "." {
        type hint;
        file "root.hints";
};

zone "0.0.127.in-addr.arpa" {
        type master;
        file "pz/127.0.0";
};

La linea `directory' dice a named dove guardare per i file. Tutti i file nominati in seguito saranno relativi a questa directory. Perciò pz è una directory sotto /var/named, i.e., /var/named/pz. /var/named è la giusta directory in accordo con il Linux File system Standard.

In questo è citato il file chiamato /var/named/root.hints. /var/named/root.hints dovrebbe contenere questo:(Se avete intenzione di fare copia e incolla di questo file da una versione elettronica di questo documento per favore notate che non ci devono essere spazi vuoti all'inizio del file, i.e. tutte le linee devono cominciare con un carattere non-blank (non deve essere il carattere "spazio"). Alcuni software per il processing dei documenti inseriranno spazi all'inizio delle linee, causando confusione. In questo caso rimuovete i 2 spazi vuoti iniziali)


;
; There might be opening comments here if you already have this file.
; If not don't worry.
;
.                       6D IN NS        G.ROOT-SERVERS.NET.
.                       6D IN NS        J.ROOT-SERVERS.NET.
.                       6D IN NS        K.ROOT-SERVERS.NET.
.                       6D IN NS        L.ROOT-SERVERS.NET.
.                       6D IN NS        M.ROOT-SERVERS.NET.
.                       6D IN NS        A.ROOT-SERVERS.NET.
.                       6D IN NS        H.ROOT-SERVERS.NET.
.                       6D IN NS        B.ROOT-SERVERS.NET.
.                       6D IN NS        C.ROOT-SERVERS.NET.
.                       6D IN NS        D.ROOT-SERVERS.NET.
.                       6D IN NS        E.ROOT-SERVERS.NET.
.                       6D IN NS        I.ROOT-SERVERS.NET.
.                       6D IN NS        F.ROOT-SERVERS.NET.

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

Questo file descrive i root name server nel mondo. Esso cambia col tempo e deve essere aggiornato se necessario. Leggete la sezione Manutenzione per sapere come fare.

La sezione successiva in named.conf è l'ultima zone. Spiegherò il suo utilizzo nell'ultimo capitolo, per adesso create solo un file chiamato 127.0.0 nella subdirectory pz:(Ancora, se fate copia e incolla rimuovete gli spazi iniziali)


@               IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                                1       ; Serial
                                8H      ; Refresh
                                2H      ; Retry
                                1W      ; Expire
                                1D)     ; Minimum TTL
                        NS      ns.linux.bogus.
1                       PTR     localhost.

Poi, avrete bisogno di un /etc/resolv.conf che somiglia vagamente a questo:(Togliete gli spazi!)


search sottodominio.proprio-dominio.edu proprio-dominio.edu
nameserver 127.0.0.1

La linea `search' specifica su quali domini deve avvenire la ricerca per ogni nome di host al quale volete collegarvi. La linea nameserver specifica l'indirizzo del vostro nameserver, in questo caso la vostra stessa macchina poiché è qui che named lavora (127.0.0.1 è corretto, non importa se la macchina ha già un altro indirizzo). Se volete inserire più name server mettete una linea `nameserver' per ognuno di essi. (Nota: named non legge mai questo file, il risolutore che usa named invece sì.)

Vediamo cosa fa questo file: se un client cerca la macchina pippo, allora il primo tentativo che verrà fatto sarà pippo.sottodominio.proprio-dominio.edu, poi pippo.proprio-dominio.edu e infine pippo. Se un client cerca sunsite.unc.edu, il primo tentativo sarà sunsite.unc.edu.sottodominio.proprio-dominio.edu, poi sunsite.unc.edu.proprio-dominio.edu e infine sunsite.unc.edu. Potreste non voler mettere troppi domini nella linea di ricerca, si impiega del tempo a provarli tutti.

L'esempio assume che voi facciate parte del dominio sottodominio.proprio-dominio.edu, quindi, probabilmente, la vostra macchina sarà propria-macchina.sottodominio.proprio-dominio.edu. La linea di ricerca non dovrebbe contenere il vostro TLD (Top Level Domain, `edu' in questo caso). Se avete spesso bisogno di collegarvi a host in una altro dominio, potete aggiungere questo dominio in una linea di ricerca come questa: (Ricordate di togliere gli spazi iniziali, se presenti)


search sottodominio.proprio-dominio.edu proprio-dominio.edu altro-dominio.com

e così via. Ovviamente dovrete metterci domini reali. Per favore notate l'assenza del punto alla fine dei nomi di dominio. Questo è importante.

In seguito, a seconda della versione di libc che avete ci sarà bisogno di sistemare /etc/nsswitch.conf o /etc/host.conf. Se avete già nsswitch.conf sarà questo che sistemerete, altrimenti sarà host.conf.

/etc/nsswitch.conf

Questo è un grosso file che specifica dove ottenere diversi tipi di dati, da quale file o database. Solitamente all'inizio contiene utili commenti, che dovreste leggere. Poi cercate la linea che comincia per `hosts:', si dovrebbe leggere:


hosts:      files dns

(avete ricordato cosa fare degli eventuali spazi iniziali, vero? non lo dirò più.)

Se non ci fosse una tale linea (che comincia per `hosts:') dovrete metterla. Questa linea dice che i programmi devono per prima cosa guardare nel file /etc/hosts, dopo devono usare il DNS in accordo con resolv.conf.

/etc/host.conf

Probabilmente contiene numerose linee, una di queste dovrebbe cominciare con order e somigliare a questa:


order hosts,bind

Se la linea `order' non ci fosse la dovrete aggiungere. Questa linea dice alle routine predisposte alla risoluzione dei nomi che devono per prima cosa guardare nel file /etc/hosts, dopo devono chiedere al name server (che voi avete indicato in resolv.conf all'indirizzo 127.0.0.1).

3.1 Far partire Named.

Adesso è ora di far partire named. Se state usando una connessione dial-up, per prima cosa collegatevi. Fate `ndc start',e premete return, senza opzioni. Se non funziona provate `/usr/sbin/ndc start'. Se non va leggete la sezione Domande e Risposte. Se andate a leggere il file che contiene il log di sistema (usualmente chiamato /var/adm/messages, ma controllate anche la directory /var/log e un altro file da controllare in questa è syslog) quando named parte (fate tail -f /var/log/messages) dovreste leggere qualcosa di simile a:

(le linee che terminano per \ continuano sulla linea successiva)

Feb 15 01:26:17 roke named[6091]: starting.  named 8.1.1 Sat Feb 14 \
  00:18:20 MET 1998 ^Ijanl@roke.uio.no:/var/tmp/bind-8.1.1/src/bin/named
Feb 15 01:26:17 roke named[6091]: cache zone "" (IN) loaded (serial 0)
Feb 15 01:26:17 roke named[6091]: master zone "0.0.127.in-addr.arpa" \
  (IN) loaded (serial 1)
Feb 15 01:26:17 roke named[6091]: listening [127.0.0.1].53 (lo)
Feb 15 01:26:17 roke named[6091]: listening [129.240.230.92].53 (ippp0)
Feb 15 01:26:17 roke named[6091]: Forwarding source address is [0.0.0.0].1040
Feb 15 01:26:17 roke named[6092]: Ready to answer queries.

Se ci sono messaggi d'errore significa che c'è un problema. Named dirà il nome del file scorretto (uno tra named.conf e root.hints spero :-) Uccidete named e tornate indietro per controllare quel file.

Adesso potete testare la vostra configurazione. Usate nslookup per esaminare il vostro lavoro.

$ nslookup
Default Server:  localhost
Address:  127.0.0.1

>

Se corrisponde a quello che vedete significa che sta funzionando. Altrimenti tornate indietro e ricontrollate tutto. Ogni volta che cambiate il file named.conf dovete far ripartire named con il comando ndc restart.

Adesso potete immettere una interrogazione (query). Cercate di fare il look-up di macchine vicine a voi. pat.uio.no è vicina a me, all'università di Oslo:

> pat.uio.no
Server:  localhost
Address:  127.0.0.1

Name:    pat.uio.no
Address:  129.240.130.16

nslookup adesso ha chiesto al vostro named di cercare la macchina pat.uio.no. Poi contatta una delle macchine name server indicate nel file root.hints, e chiede loro la strada per arrivarci. Potrebbe essere necessario un po' di tempo prima che sia disponibile il risultato, come potrebbe essere necessario cercare in tutti i domini elencati in /etc/resolv.conf.

Se lo chiederete nuovamente otterrete questo:

> pat.uio.no
Server:  localhost
Address:  127.0.0.1

Non-authoritative answer:
Name:    pat.uio.no
Address:  129.240.2.50

Notate la linea ``Non-authoritative answer:'' che abbiamo ottenuto questa volta. Significa che named non è uscito sulla rete per fare la richiesta: l'informazione era già nella cache. Ma questa informazione (memorizzata nella cache) potrebbe essere non aggiornata (scaduta). Verrete informati di questa possibilità (molto piccola) con il messaggio `Non-authorative answer:'. Quando nslookup risponde in questo modo alla seconda richiesta per uno stesso host è sicuro che named ha messo nella cache l'informazione e che sta funzionando. Si esce da nslookup dando il comando `exit'.

3.2 Migliorarlo ancora.

Nelle reti grosse, ben organizzate, accademiche o relative a ISP (Internet Service Provider) scoprirete che a volte le persone che lavorano sulla rete mettono a punto una gerarchia di impiego dei server DNS, che aiuta ad alleggerire il carico sulla rete interna e sui server esterni. Non è facile capire se vi trovate dentro o fuori una rete. Comunque non è importante e usando il server DNS del vostro provider come ``forwarder'' farete in modo che le risposte alle vostre richieste siano più veloci e meno pesanti per la vostra rete. Se usate un modem questa può essere una piccola vittoria. Tanto per fare un esempio assumeremo che il vostro provider di rete (network provider) abbia due name server e che voglia farveli usare, con numeri IP 10.0.0.1 e 10.1.0.1. Allora nel vostro file named.conf, all'interno della sezione d'apertura chiamata ``options'' inserite queste linee:


           forward first;
           forwarders {
                10.0.0.1;
                10.1.0.1;
            };

C'è anche un trucco carino per le macchine dial-up che usano i forwarder, è descritto nella sezione Domande e Risposte.

Fate ripartire il vostro name server e testatelo con nslookup. Dovrebbe funzionare bene.

3.3 Congratulazioni

Adesso sapete come impostare una versione con cache di named. Prendetevi una birra, del latte o qualunque cosa vi piaccia per celebrare l'evento.


Avanti Indietro Indice