Avanti Indietro Indice

5. Esempio di un vero dominio

Dove si elencano alcuni veri file di zona

Gli utenti mi hanno suggerito di includere un esempio reale di un dominio funzionante come l'esempio di tutorial.

Utilizzo questo esempio col permesso concessomi da David Bullock di LAND-5. Questi file risalgono al 24 Settembre 1996, successivamente vennero da me modificati perché si adattassero alle restrizioni di bind 8 e perché comprendessero delle estensioni. Questo implica che quello che leggerete qua differisce un po' da quello che otterreste facendo una query sul nameserver di LAND-5.

5.1 /etc/named.conf (o /var/named/named.conf)

Qui troveremo le sezioni relative alle due zone inverse richieste: la rete 127.0.0, e la sottorete LAND-5 206.6.177. Poi c'è la linea relativa alla zona di forward per land-5, land-5.com. Si noti come i file siano stati sistemati nella directory chiamata zone anziché in pz come ho fatto in questo HOWTO.


// Boot file for LAND-5 name server

options {
        directory "/var/named";
};

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

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

zone "land-5.com" {
        type master;
        file "zone/land-5.com";
};

zone "177.6.206.in-addr.arpa" {
        type master;
        file "zone/206.6.177";
};

Se aveste intenzione di usare queste righe nel vostro named.conf (ma solo per gioco) PER FAVORE mettete ``notify no;'' nelle sezioni relative alle due zone land-5 così da evitare incidenti.

5.2 /var/named/root.hints

Tenete a mente che questo è un file dinamico, e quello che c'è qua sarà vecchio. È meglio che ne procuriate uno recente, con dig, come verrà presto spiegato.


; <<>> DiG 8.1 <<>> @A.ROOT-SERVERS.NET. 
; (1 server found)
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10
;; flags: qr aa rd; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13
;; QUERY SECTION:
;;      ., type = NS, class = IN

;; ANSWER SECTION:
.                       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.

;; ADDITIONAL SECTION:
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

;; Total query time: 215 msec
;; FROM: roke.uio.no to SERVER: A.ROOT-SERVERS.NET.  198.41.0.4
;; WHEN: Sun Feb 15 01:22:51 1998
;; MSG SIZE  sent: 17  rcvd: 436

5.3 /var/named/zone/127.0.0

Solo lo stretto necessario, il record obbligatorio SOA, e un record che mette in corrispondenza 127.0.0.1 con localhost. Entrambi sono richiesti. Non deve esserci nient'altro in questo file. Probabilmente non ci sarà mai bisogno di aggiornare questo file, a meno che non cambino gli indirizzi del nameserver o hostmaster.


@               IN      SOA     land-5.com. root.land-5.com. (
                                199609203       ; Serial
                                28800   ; Refresh
                                7200    ; Retry
                                604800  ; Expire
                                86400)  ; Minimum TTL
                        NS      land-5.com.
        
1                       PTR     localhost.

5.4 /var/named/zone/land-5.com

Qui possiamo vedere il record obbligatorio SOA e i record NS richiesti. Si può vedere che è presente un nameserver secondario in ns2.psi.net. Questo è come dovrebbe essere, è bene avere sempre un server secondario fuori dalla vostra rete che faccia da backup. Si può notare anche la presenza di un host principale (master host) chiamato land-5 che si prende cura della maggior parte dei servizi Internet, e questo è fatto tramite i record CNAME (alternativamente si possono usare i record A)

Come si può vedere dal record SOA, il file di zona comincia con land-5.com, la persona da contattare è root@land-5.com. Anche hostmaster è spesso utilizzato per il responsabile di zona. Il numero seriale è nel formato standard yyyymmdd (aaaammgg) con il numero che indica il giorno (todays serial number) a seguire. Questa è forse la sesta versione del file di zona del 20 settembre 1996. Ricordate che il serial number deve essere incrementato in maniera monotonica , qui c'è solo una cifra per i todays serial #, così dopo 9 volte che si è editato il file bisogna aspettare il giorno successivo prima che si possa editarlo di nuovo. Comunque considerate che si possono usare 2 cifre.


@       IN      SOA     land-5.com. root.land-5.com. (
                        199609206       ; serial, todays date + todays serial #
                        8H              ; refresh, seconds
                        2H              ; retry, seconds
                        1W              ; expire, seconds
                        1D )            ; minimum, seconds
                NS      land-5.com.
                NS      ns2.psi.net.
                MX      10 land-5.com.  ; Primary Mail Exchanger
                TXT     "LAND-5 Corporation"

localhost       A       127.0.0.1

router          A       206.6.177.1
        
land-5.com.     A       206.6.177.2
ns              A       206.6.177.3
www             A       207.159.141.192

ftp             CNAME   land-5.com.
mail            CNAME   land-5.com.
news            CNAME   land-5.com.

funn            A       206.6.177.2

;
;       Workstations
;
ws-177200       A       206.6.177.200
                MX      10 land-5.com.   ; Primary Mail Host
ws-177201       A       206.6.177.201
                MX      10 land-5.com.   ; Primary Mail Host
ws-177202       A       206.6.177.202
                MX      10 land-5.com.   ; Primary Mail Host
ws-177203       A       206.6.177.203
                MX      10 land-5.com.   ; Primary Mail Host
ws-177204       A       206.6.177.204
                MX      10 land-5.com.   ; Primary Mail Host
ws-177205       A       206.6.177.205
                MX      10 land-5.com.   ; Primary Mail Host
; {Many repetitive definitions deleted - SNIP}
ws-177250       A       206.6.177.250
                MX      10 land-5.com.   ; Primary Mail Host
ws-177251       A       206.6.177.251
                MX      10 land-5.com.   ; Primary Mail Host
ws-177252       A       206.6.177.252
                MX      10 land-5.com.   ; Primary Mail Host
ws-177253       A       206.6.177.253
                MX      10 land-5.com.   ; Primary Mail Host
ws-177254       A       206.6.177.254
                MX      10 land-5.com.   ; Primary Mail Host

Esaminando i nameserver di land-5 scoprirete che gli host hanno un nome del tipo ws_numero. Con le ultime versioni di bind-4 named ha iniziato a porre delle restrizioni sui caratteri che potevano essere usati nei nomi di host. In questo HOWTO io ho sostituito '-' (dash, trattino) con '_' (underline) in modo da uniformarmi alle regole di bind-8 per i nomi di host.

Un'altra cosa da notare è che le workstation non hanno nomi individuali, ma un prefisso seguito dalle ultime due parti del numero IP. Usare delle convenzioni simili può semplificare significativamente la manutenzione, ma può risultare impersonale e in effetti potrebbe anche irritare i vostri clienti.

Vediamo anche che funn.land-5.com è un alias per land-5.com, ma ciò è fatto tramite un record A, non con un record CNAME. Questo è un buon modo di procedere.

5.5 /var/named/zone/206.6.177

Commenterò questo file più sotto.


@               IN      SOA     land-5.com. root.land-5.com. (
                                199609206       ; Serial
                                28800   ; Refresh
                                7200    ; Retry
                                604800  ; Expire
                                86400)  ; Minimum TTL
                        NS      land-5.com.
                        NS      ns2.psi.net.
;
;       Servers
;
1       PTR     router.land-5.com.
2       PTR     land-5.com.
2       PTR     funn.land-5.com.
;
;       Workstations
;
200     PTR     ws-177200.land-5.com.
201     PTR     ws-177201.land-5.com.
202     PTR     ws-177202.land-5.com.
203     PTR     ws-177203.land-5.com.
204     PTR     ws-177204.land-5.com.
205     PTR     ws-177205.land-5.com.
; {Many repetitive definitions deleted - SNIP}
250     PTR     ws-177250.land-5.com.
251     PTR     ws-177251.land-5.com.
252     PTR     ws-177252.land-5.com.
253     PTR     ws-177253.land-5.com.
254     PTR     ws-177254.land-5.com.

La zona inversa costituisce quella fase della configurazione che causa più grane. Essa serve a ricavare il nome di un host dall'indirizzo IP di una macchina. Esempio: voi siete un server IRC e accettate connessioni dai client IRC. Inoltre siete un server IRC Norvegese a volete che queste connessioni provengano da client Norvegesi o da altre nazioni Scandinave. Quando ricevete una richiesta di connessione da un client la libreria C è in grado di dirvi il numero IP della macchina che sta tentando la connessione, poiché il numero IP del client è contenuto in ogni pacchetto che attraversa la rete. A questo punto potrete chiamare una funzione chiamata gethostbyaddr che ricava il nome di un host a partire dal suo indirizzo IP. Gethostbyaddr interrogherà un server DNS, il quale attraverserà il DNS in cerca della macchina. Supponiamo che il client si connetta da ws-177200.land-5.com. La libreria C presente nel server ricava il numero IP del client che tenta la connessione, in questo caso è 206.6.177.200. Per scoprire il nome di questa macchina bisogna prima scoprire 200.177.6.206.in-addr.arpa. Il server DNS troverà prima i server arpa., poi troverà i server in-addr.arpa., seguendo il percorso inverso passando per 206, poi per 6 e alla fine troverà il server responsabile per la zona 177.6.206.in-addr.arpa presso LAND-5. Da questo finalmente si potrà ricavare che in 200.177.6.206.in-addr.arpa c'è un record ``PTR ws-177200.land-5.com'', e questo significa che il nome associato a 206.6.177.200 è ws-177200.land-5.com. Come è stato detto per la spiegazione della ricerca (looking up) di prep.ai.mit.edu, anche questa è leggermente fittizia.

Riprendiamo l'esempio del server IRC. Il server IRC accetta connessioni solo da paesi Scandinavi, i.e. *.no, *.se, *.dk il nome ws-177200.land-5.com non corrisponde a nessuno di questi ovviamente, e il server negherà la connessione. Se non ci fosse la corrispondenza inversa (reverse mapping) di 206.2.177.200 tramite la zona in-addr.arpa il server sarebbe incapace di scoprire il nome e avrebbe dovuto comparare 206.2.177.200 con *.no, *.se e *.dk, senza trovare nessuna corrispondenza.

Alcune persone vi diranno che il mapping del lookup inverso è importante solo per i server, o per nulla importante. Non è così: molti server ftp, news, IRC e anche qualche server http (WEB) non accetteranno connessioni da macchine per le quali non riescono a trovare il nome. E così il mapping inverso diventa di fatto obbligatorio.


Avanti Indietro Indice