<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9"> <TITLE>DNS HOWTO: Esempio di un vero dominio</TITLE> <LINK HREF="DNS-HOWTO-8.html" REL=next> <LINK HREF="DNS-HOWTO-6.html" REL=previous> <LINK HREF="DNS-HOWTO.html#toc7" REL=contents> </HEAD> <BODY> <A HREF="DNS-HOWTO-8.html">Avanti</A> <A HREF="DNS-HOWTO-6.html">Indietro</A> <A HREF="DNS-HOWTO.html#toc7">Indice</A> <HR> <H2><A NAME="real-example"></A> <A NAME="s7">7. Esempio di un vero dominio</A></H2> <P><B>Dove si elencano alcuni <EM>veri</EM> file di zona</B> <P> <P>Gli utenti mi hanno suggerito di includere un esempio reale di un dominio funzionante come tutorial. <P> <P>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 qui differisce un po' da quello che otterreste facendo un'interrogazione sul name server di LAND-5. <P> <H2><A NAME="ss7.1">7.1 /etc/named.conf (o /var/named/named.conf)</A> </H2> <P>Qui troveremo le sezioni relative alle due zone inverse richieste: la rete 127.0.0, e la sottorete LAND-5 <CODE>206.6.177</CODE>. Poi c'è la riga relativa alla zona di forward per land-5, <CODE>land-5.com</CODE>. Si noti come i file siano stati sistemati nella directory chiamata <CODE>zone</CODE> anziché in <CODE>pz</CODE> come ho fatto in questo HOWTO. <P> <P> <HR> <PRE> // Boot file for LAND-5 name server options { directory "/var/named"; }; controls { inet 127.0.0.1 allow { localhost; } keys { rndc_key; }; }; key "rndc_key" { algorithm hmac-md5; secret "c3Ryb25nIGVub3VnaCBmb3IgYSBtYW4gYnV0IG1hZGUgZm9yIGEgd29tYW4K"; }; 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"; }; </PRE> <HR> <P> <P> <P>Se aveste intenzione di usare queste righe nel vostro named.conf (ma solo per gioco) <B>PER FAVORE</B> mettete "<CODE>notify no;</CODE>" nelle sezioni relative alle due zone <CODE>land-5</CODE> così da evitare incidenti. <P> <H2><A NAME="ss7.2">7.2 /var/named/root.hints</A> </H2> <P>Tenete a mente che questo è un file dinamico, quello che trovate qui è sorpassato. È meglio che ve ne procuriate uno recente, con dig, come verrà presto spiegato. <P> <HR> <PRE> ; <<>> 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 </PRE> <HR> <P> <H2><A NAME="ss7.3">7.3 /var/named/zone/127.0.0</A> </H2> <P>Solo lo stretto necessario, il record obbligatorio SOA e un record che mette in corrispondenza 127.0.0.1 con <CODE>localhost</CODE>. 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 name server o del responsabile. <P> <HR> <PRE> @ 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. </PRE> <HR> <P> <P>Se date uno sguardo a diverse installazioni di BIND noterete che la riga <CODE>$TTL</CODE> è assente a volte, come in questo caso. Prima non veniva utilizzata, solo dalla versione 8.2 BIND ha iniziato ad emettere un avviso in caso di sua assenza. BIND 9 <EM>richiede</EM> la riga <CODE>$TTL</CODE>. <P> <H2><A NAME="ss7.4">7.4 /var/named/zone/land-5.com</A> </H2> <P>Qui possiamo vedere il record obbligatorio SOA e i record NS richiesti. Si può vedere che è presente un name server secondario in <CODE>ns2.psi.net</CODE>. Questo è come dovrebbe essere, è bene avere <EM>sempre</EM> un server secondario fuori dalla vostra rete che faccia da backup. Si può notare anche la presenza di un host principale chiamato <CODE>land-5</CODE> che si prende cura della maggior parte dei servizi Internet, questo è fatto tramite i record CNAME (alternativamente si possono usare i record A). <P> <P>Come si può vedere dal record SOA, il file di zona comincia con <CODE>land-5.com</CODE>, la persona da contattare è <CODE>root@land-5.com</CODE>. Anche <CODE>hostmaster</CODE> è spesso utilizzato per il responsabile di zona. Il numero di serie è nel formato standard aaaammgg con il numero di versione giornaliera a seguire, perciò si tratta forse della sesta versione del file di zona del 20 settembre 1996. Ricordate che il numero di serie <EM>deve</EM> essere incrementato in maniera monotonica, qui viene usata <EM>una sola</EM> cifra per il numero di versione giornaliera, così dopo 9 volte che si è modificato il file bisogna aspettare il giorno successivo prima di poterlo modificare di nuovo. Comunque considerate che si possono usare 2 cifre. <P> <HR> <PRE> $TTL 3D @ 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 </PRE> <HR> <P> <P>Esaminando i name server di land-5 scoprirete che gli host hanno un nome del tipo <CODE>ws_</CODE><EM>numero</EM>. 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 "-" (trattino) con "_" (trattino basso) in modo da uniformarmi alle regole di bind-8 per i nomi di host. Ma, come ho detto prima, BIND 9 non obbliga più a questa restrizione. <P> <P>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. <P> <P>Vediamo anche che <CODE>funn.land-5.com</CODE> è un alias per <CODE>land-5.com</CODE>, ma ciò è fatto tramite un record A, non con un record CNAME. <P> <H2><A NAME="ss7.5">7.5 /var/named/zone/206.6.177</A> </H2> <P>Commenterò questo file più sotto. <P> <HR> <PRE> $TTL 3D @ 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. </PRE> <HR> <P> <P>La zona inversa costituisce la 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 <CODE>200.177.6.206.in-addr.arpa</CODE>. Il server DNS troverà prima i server <CODE>arpa.</CODE>, poi troverà i server <CODE>in-addr.arpa.</CODE>, seguendo il percorso inverso passando per 206, poi per 6 e alla fine troverà il server responsabile per la zona <CODE>177.6.206.in-addr.arpa</CODE> presso LAND-5. Da questo finalmente si potrà ricavare che in <CODE>200.177.6.206.in-addr.arpa</CODE> c'è un record "<CODE>PTR ws-177200.land-5.com</CODE>", questo significa che il nome associato a <CODE>206.6.177.200</CODE> è <CODE>ws-177200.land-5.com</CODE>. <P> <P>Il server FTP accetta connessioni solo da paesi scandinavi, ovvero <CODE>*.no</CODE>, <CODE>*.se</CODE>, <CODE>*.dk</CODE> il nome <CODE>ws-177200.land-5.com</CODE> non corrisponde a nessuno di questi ovviamente e il server metterà tale connessione in una classe di connessioni con meno banda e meno connessioni disponibili. Se <EM>non</EM> ci fosse la corrispondenza inversa di <CODE>206.2.177.200</CODE> tramite la zona <CODE>in-addr.arpa</CODE> il server sarebbe incapace di scoprire il nome e avrebbe dovuto comparare <CODE>206.2.177.200</CODE> con <CODE>*.no</CODE>, <CODE>*.se</CODE> e <CODE>*.dk</CODE>, senza trovare nessuna corrispondenza, esso può anche negare la connessione completamente per assenza di classificazione. <P> <P>Alcune persone vi diranno che la mappatura della risoluzione inversa è importante solo per i server, o per nulla importante. Non è così: molti server ftp, news, IRC e anche qualche server http (WEB) <EM>non</EM> accetteranno connessioni da macchine per le quali non riescono a trovare il nome. Quindi la mappatura inversa diventa di fatto <EM>obbligatoria</EM>. <P> <HR> <A HREF="DNS-HOWTO-8.html">Avanti</A> <A HREF="DNS-HOWTO-6.html">Indietro</A> <A HREF="DNS-HOWTO.html#toc7">Indice</A> </BODY> </HTML>