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).
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
'.
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.
Adesso sapete come impostare una versione con cache di named. Prendetevi una birra, del latte o qualunque cosa vi piaccia per celebrare l'evento.