+ <blockquote>
+ <p>...</p>
+
+ <p>;; ANSWER SECTION: . 192032 IN NS C.ROOT-SERVERS.NET.
+ . 192032 IN NS E.ROOT-SERVERS.NET. . 192032 IN NS
+ B.ROOT-SERVERS.NET. . 192032 IN NS L.ROOT-SERVERS.NET. .
+ 192032 IN NS A.ROOT-SERVERS.NET. . 192032 IN NS
+ F.ROOT-SERVERS.NET. . 192032 IN NS H.ROOT-SERVERS.NET. .
+ 192032 IN NS G.ROOT-SERVERS.NET. . 192032 IN NS
+ K.ROOT-SERVERS.NET. . 192032 IN NS M.ROOT-SERVERS.NET. .
+ 192032 IN NS I.ROOT-SERVERS.NET. . 192032 IN NS
+ J.ROOT-SERVERS.NET. . 192032 IN NS
+ D.ROOT-SERVERS.NET.</p>
+
+ <p>...</p>
+ </blockquote>
+
+ <dl class="docutils">
+ <dt>dig @nome_dns</dt>
+
+ <dd>Permette di fare una query ad un server dns
+ particolare. Es: <tt class=
+ "docutils literal"><span class="pre">dig</span>
+ <span class="pre">@151.99.25.1</span> <span class=
+ "pre">www.google.it</span></tt></dd>
+
+ <dt>dig MX www.google.it</dt>
+
+ <dd>Chiede un campo in particolare, in questo caso il
+ campo MX</dd>
+
+ <dt>dig ANY www.google.it</dt>
+
+ <dd>Chiede tutti i campi, non solo i campi
+ <em>a</em></dd>
+
+ <dt>dig -x 74.125.43.104</dt>
+
+ <dd>Effettua una richiesta inversa: dall'IP al PTR
+ associato.</dd>
+ </dl>
+ </div>
+
+ <div class="section" id="resolv-conf">
+ <h2><a class="toc-backref" href=
+ "#id59">5.7 resolv.conf</a></h2>
+
+ <p>Il file <tt class="docutils literal"><span class=
+ "pre">/etc/resolv.conf</span></tt> contiene le impostazioni
+ sul dns usato dal sistema, in genere anche altre
+ applicazioni che devono effettuare query DNS leggono
+ resolv.conf per conoscere l'ubicazione del DNS.</p>
+
+ <p>/etc/resolv.conf:</p>
+
+ <blockquote>
+ <ul class="simple">
+ <li><tt class="docutils literal"><span class=
+ "pre">nameserver</span></tt>: indica il nameserver da
+ utilizzare, indicato con l'indirizzo IP.</li>
+
+ <li><tt class="docutils literal"><span class=
+ "pre">domain</span></tt>: indica il nome di dominio
+ della rete attuale, vedi voce successiva.</li>
+
+ <li><tt class="docutils literal"><span class=
+ "pre">search</span></tt>: nome di dominio usato dalla
+ rete sul quale cercare gli hosts. Ad esempio se
+ impostato su <tt class="docutils literal"><span class=
+ "pre">piffa.net</span></tt> pingando l' host <tt class=
+ "docutils literal"><span class="pre">bender</span></tt>
+ viene automaticamente fatto un tentativo di ricerca per
+ <tt class="docutils literal"><span class=
+ "pre">bender.piffa.net</span></tt>.</li>
+ </ul>
+ </blockquote>
+
+ <p>Predisponendo l'infrastruttura di rete della vostra LAN
+ e' consigliabile impostare sempre almeno un DNS cache sul
+ vostro server locale per i vari client. In questo modo in
+ caso di malfunzionamento del DNS o necessita' di
+ intervenire / sostituire i DNS non sara' piu' necessario
+ dover reimpostare ogni singolo client della LAN: bastera'
+ intervenire sul server DNS cache, ad esempio per utilizzare
+ un nuovo forwarder, o modificare al volo un record DNS. La
+ modifica, anche detta <em>mascheramento</em>, di un record
+ come il <em>server smtp</em> o un <em>MX</em> potrebbe
+ tirarvi rapidamente fuori dai guai nel caso di un problema
+ improvviso con la posta elettronica o qualunque altro
+ servizio che possiate reindirizzare col DNS.</p>
+
+ <p>Utilizzare un server DHCP e una DNS cache come
+ <tt class="docutils literal"><span class=
+ "pre">Dnsmasq</span></tt> possono permettervi di risolvere
+ al volo molte delle problematiche relative alla
+ configurazione della vostra LAN: ad esempio dover
+ intervenire manualmente su decine di client per modificare
+ le impostazioni di SMTP | gateway | DNS | proxy.</p>
+
+ <p>Si veda anche la pagina man di resolv.conf.</p>
+
+ <div class="warning">
+ <p class="first admonition-title">Avvertenza</p>
+
+ <p class="last">Attenzione: se si usa un client DHCP, ppp
+ (ADSL compresa) o simile questo file potrebbe' essere
+ riscritto automaticamente in base a quanto ottenuto dal
+ DHCP. Si veda la documentazione del pacchetto <tt class=
+ "docutils literal"><span class=
+ "pre">resolvconf</span></tt>.</p>
+ </div>
+ </div>
+
+ <div class="section" id="etc-hosts">
+ <h2><a class="toc-backref" href=
+ "#id60">5.8 /etc/hosts</a></h2>
+
+ <p>Tabella statica per l'associazione tra IP e nomi di
+ dominio:</p>
+ <pre class="literal-block">
+# cat /etc/hosts
+</pre>
+
+ <blockquote>
+ 127.0.0.1 localhost.localdomain localhost 10.10.208.162
+ daniela daniela.piffa.net 10.10.208.254 mirror
+ mirror.piffa.net 91.191.138.15 thepiratebay.org
+ 192.168.0.11 chrome chrome.mydomain.com
+ </blockquote>
+
+ <p>Il contenuto del file e' un associazione tra un
+ <em>IP</em> e stringhe di testo (anche piu' di una per IP)
+ es: <tt class="docutils literal"><span class=
+ "pre">mirror</span></tt> o veri e propi nomi di dominio
+ <tt class="docutils literal"><span class=
+ "pre">mirror.piffa.net</span></tt>. Si puo inserire un nome
+ semplice come <em>casa</em> per riferirsi ad un host che si
+ ha necessita' di contattare spesso, oppure mappare un nome
+ di dominio completo su un indirizzo IP.</p>
+
+ <p>Il problema e' la gestione di questo file su molti
+ hosts: quando gli host cambiano IP si devono aggiornare
+ manualmente i records, operazione in se' non
+ particolarmente gravosa ma che andra' fatta per ogni client
+ della vostra LAN. Un metodo semplice per distribuire questo
+ file e' utilizzare <tt class=
+ "docutils literal"><span class="pre">Dnsmasq</span></tt>:
+ questo infatti legge e onora il file <tt class=
+ "docutils literal"><span class="pre">hosts</span></tt> che
+ avete prodotto e lo rende disponibile ai clients tramite le
+ query DNS.</p>
+
+ <p>Dnsmasq lavora come un server DNS, i vostri client lo
+ interrogheranno per tradurre nomi di host e domini in
+ indirizzi IP, risolvendo il problema della
+ <em>distribuzione</em> del file <tt class=
+ "docutils literal"><span class="pre">hosts</span></tt> tra
+ molteplici clients. Infatti il servizio DNS indica appunto
+ una <em>directory distribuita</em> per la risoluzione dei
+ nomi di dominio, risolvendo i problemi dell'aggiornamento e
+ diffusione dei continui cambiamenti di questa.</p>
+
+ <p>Modificare la risoluzione di un nome di dominio
+ esistente (ad esempio riconducendola a un IP interno) e' un
+ modo drastico e funzionale per <em>annullarlo</em>
+ rendendolo non disponibile alla propria rete locale. Ad
+ esempio aggiungere al file <tt class=
+ "docutils literal"><span class=
+ "pre">/etc/hosts</span></tt>:</p>
+ <pre class="literal-block">
+127.0.0.1 www.facebook.com
+</pre>
+
+ <p>Impedira' agli utenti della LAN di raggiungere
+ <em>facebook</em>, ora reindirizzato a <tt class=
+ "docutils literal"><span class=
+ "pre">localhost</span></tt>.</p>
+
+ <p>Oppure si potrebbe ricondurre l'indirizzo IP di un
+ server HTTP pubblico usato per i downloads (ad esempio un
+ mirror della propia distribuzione come <tt class=
+ "docutils literal"><span class=
+ "pre">ftp.it.debian.org</span></tt>) a un equivalente
+ mirror creato all'interno della rete locale, riducendo il
+ traffico verso l'esterno e aumentando notevolmente la
+ velocita' di scaricamento.</p>
+ </div>
+
+ <div class="section" id="hostname">
+ <h2><a class="toc-backref" href=
+ "#id61">5.9 Hostname</a></h2>
+
+ <p>Ogni computer ha un <em>proprio nome</em> visualizzabile
+ (e modificabile) con il comando <tt class=
+ "docutils literal"><span class="pre">hostname</span></tt>.
+ Quando utilizzate a una shell su un host in genere
+ l'hostname compare nel prompt della shell.</p>
+
+ <p>Per visualizzare il nome dell'host su cui si sta
+ operando si digiti semplicemnte <tt class=
+ "docutils literal"><span class="pre">hostname</span></tt>,
+ lo stesso comando con un oggetto modifica temporaneamente
+ il nome dell'host. Per modificare in modo permanente il
+ nome del computer si modifichi il contenuto del file
+ <tt class="docutils literal"><span class=
+ "pre">/etc/hostname</span></tt>.</p>
+
+ <p>Si faccia attenzione a non aver un hostname puramente
+ numerico: ad es. <tt class="docutils literal"><span class=
+ "pre">161</span></tt>. E' opportuno che il nome sia
+ comunque un alfanumerico: <tt class=
+ "docutils literal"><span class="pre">host-161</span></tt> o
+ simile.</p>
+
+ <div class="section" id="fqdn">
+ <h3><a class="toc-backref" href=
+ "#id62">5.9.1 FQDN</a></h3>
+
+ <p>Per semplicita' gli host sono generalemente
+ raggiungibili dall'esterno mappando il loro IP su un nome
+ di dominio FQDN: fully qualified domain name, composto
+ generalmente da <em>hostname</em>.``domain-name``, ad es.
+ <em>bender</em>.``piffa.net``.</p>
+
+ <p>Alcuni servizi internet fanno affidamento sul PTR
+ dell'IP del server per cercare una conferma che il
+ <em>servizio</em> sia veramente chi afferma di essere (ad
+ esempio STMP).</p>
+
+ <p>Non e' automatico che un servizio, ad esempio un
+ server di posta, si qualifichi leggendo il contenuto del
+ file <tt class="docutils literal"><span class=
+ "pre">hostname</span></tt> aggiungendo come suffisso il
+ dominio della rete di cui fa parte l' host: a volte
+ questo parametro puo' essere specificato nel file di
+ configurazione del servizio:</p>
+ <pre class="literal-block">
+* Squid (HTTP proxy): ``visible_hostname``
+
+* Postfix (SMTP server): ``myhostname``
+</pre>
+
+ <p>I motivi sono diversi, senza entrare nel dettaglio dei
+ vari protocolli si pensi comunque che un host ha sempre
+ un solo nome, ma puo' avere un numero variabile di
+ <em>device di rete</em> sia fisici che virtuali con
+ relativi <em>indirizzi IP</em>, e piu' servizi in ascolto
+ sui vari IP.</p>
+ </div>
+ </div>
+ </div>
+
+ <div class="section" id="dnsmasq">
+ <h1><a class="toc-backref" href=
+ "#id63">6 DNSmasq</a></h1>
+
+ <p>Dnsmasq puo' svolgere le funzioni di un DNS cache /
+ forwarder, server DHCP, e' caratterizzato dalla facilita' di
+ configurazione, limitato uso di risorse, adattabilita' a
+ connessioni <em>dinamiche</em> come ADSL o altre punto a
+ punto (anche via cellulari) per condividere rapidamente la
+ rete (cosa molto utile se ci dovesse trovare a ridare
+ connettetivita' a una rete momentaneamente sprovvista), dalla
+ possibilita' di modificare rapidamente i record DNS serviti
+ alla rete anche grazie alla distribuzione del file <tt class=
+ "docutils literal"><span class="pre">/etc/hosts</span></tt>
+ locale. Puo' essere anche utilizzato come <cite>server per il
+ boot da rete
+ <http://www.debian-administration.org/articles/478>_</cite>
+ .</p>
+
+ <p>Dnsmasq e' un interessante alternativa all'uso del server
+ DNS Bind in modalita' <em>forwarding e cache-only</em> (non
+ autoritativo) accompagnato dal server DHCPd. I vantaggi
+ sono:</p>
+
+ <ul class="simple">
+ <li>Leggerezza: puo' essere fatto girare su una macchina
+ relativamente debole in caso di bisogno.</li>
+
+ <li>Rapidita' di configurazione (in particolare per servire
+ dei record A / MX alla rete, modificando al volo i valori
+ originali ospitati sul server DNS pubblico).</li>
+
+ <li>Ben integrato con connessioni PPP : e' ingrado di
+ rilevare i cambiamenti dei dns suggeriti e impostarli come
+ forwarders (utile se dovete rendere disponibile rapidamente
+ una connessione a internet a una rete in difficolta').</li>
+ </ul>
+
+ <p>Tutto cio' rende Dnsmasq una soluzione valida in
+ particolare quando si deve intervenire in una rete
+ pre-esistente in cui il server principale e' in crisi: si
+ potra' utilizzare Dnsmasq anche su una macchina piu' debole e
+ <em>mascherare</em> i servizi al momento non disponibili.
+ Molto utile per scopi didattici, sopratutto per testare
+ server SMTP impostando al volo i campi MX per nomi di dominio
+ fittizi.</p>
+
+ <div class="section" id="configurazione">
+ <h2><a class="toc-backref" href=
+ "#id64">6.1 Configurazione</a></h2>
+
+ <p>Vediamo alcune direttive di basi del file di
+ configurazione <tt class="docutils literal"><span class=
+ "pre">/etc/dnsmasq.conf</span></tt> utili per la
+ configurazione sia del DNS cache che per il DHCP
+ server:</p>
+
+ <dl class="docutils">
+ <dt>domain-needed</dt>
+
+ <dd>Non inoltrare query ai server DNS esterni per nomi
+ semplici (es andrea, portatile, pippo) che verranno
+ risolti solo in locale o causeranno direttamente una
+ risposta <em>not found</em> .</dd>
+
+ <dt>bogus-priv</dt>
+
+ <dd>Simile alla voce precedente ma per i reverse
+ look-up.</dd>
+
+ <dt>domain</dt>
+
+ <dd>Nome di dominio della rete da passare ai client.</dd>
+
+ <dt>expand_hosts</dt>
+
+ <dd>Aggiunge il <tt class="docutils literal"><span class=
+ "pre">nome</span> <span class="pre">host</span></tt> (
+ <tt class="docutils literal"><span class=
+ "pre">/etc/hostname</span></tt>) dei client al nome di
+ dominio per qualificarli in rete, senza bisogno di dover
+ comporre a un elenco statico di record nel file
+ <tt class="docutils literal"><span class=
+ "pre">/etc/hosts</span></tt> o nello stesso file di
+ configurazione di dnsmasq. Es: se un vostro client si
+ chiama <tt class="docutils literal"><span class=
+ "pre">chrome</span></tt> e il vostro dominio <tt class=
+ "docutils literal"><span class=
+ "pre">piffa.net</span></tt> dnsmasq rendera' disponibile
+ il campo <em>A</em> per il dominio <tt class=
+ "docutils literal"><span class=
+ "pre">chrome.piffa.net</span></tt> diretto all'ip che
+ verra' assegnato al client.</dd>
+ </dl>
+ </div>
+
+ <div class="section" id="dhcp">
+ <h2><a class="toc-backref" href=
+ "#id65">6.2 DHCP</a></h2>
+
+ <p>Per attivare il demone DHCP di Dnsmasq basta aggiungere
+ al file di configurazione il <em>range</em> degli IP che si
+ vuole assegnare ai client con il <em>lease time</em> (tempo
+ di rilascio: quanto a lungo saranno validi gli IP
+ assegnati) espresso in ore.</p>
+
+ <p>Si faccia <em>attenzione</em>: in una rete puo' essere
+ presente <strong>un solo server DHCP</strong>, o per meglio
+ dire qualunque server DHCP ascolta sul broadcast <tt class=
+ "docutils literal"><span class=
+ "pre">255.255.255.255</span></tt> e potrebbe rispondere a
+ un pacchetto di richiesta DHCP. Quindi non fate partire
+ inavvertitamente un server DHCP in una rete gia' servita e
+ <strong>non vi azzardate ad andare in giro con un portatile
+ con un server DHCP attivo</strong> nelle reti altrui.
+ Questo vale anche per i laboratori di informatica dei corsi
+ di reti: non fate partire il vostro server DHCP se siete
+ collegati alla rete interna!</p>
+
+ <p>/etc/dnsmasq.conf (riga 118):</p>
+ <pre class="literal-block">
+dhcp-range=192.168.0.20,192.168.0.50,24h
+</pre>
+ </div>
+
+ <div class="section" id="dns-cache">
+ <h2><a class="toc-backref" href=
+ "#id66">6.3 DNS cache</a></h2>
+
+ <p>Dnsmasq lavora di default come cache dns: inserire al
+ file <tt class="docutils literal"><span class=
+ "pre">/etc/resolv.conf</span></tt> il nameserver localhost
+ in cima alla lista dei <em>nameserver</em> disponibili.</p>
+
+ <blockquote>
+ nameserver 127.0.0.1
+ </blockquote>
+
+ <p>Questo pero' potrebbe essere problematico se un altro
+ servizio, ad esempio il DHCP client, riscrive il contenuto
+ del file <tt class="docutils literal"><span class=
+ "pre">/etc/resolv.conf</span></tt>. Per superare il
+ problema si aggiunga (riga 20) al file di configurazione
+ <tt class="docutils literal"><span class=
+ "pre">/etc/dhcp3/dhclient.conf</span></tt></p>
+ <pre class="literal-block">
+prepend domain-name-servers 127.0.0.1;
+</pre>
+
+ <p>Oppure potrebbe essere il nostro <em>PPP client</em>
+ (per la connessione ADSL) a intervenire sul file <tt class=
+ "docutils literal"><span class=
+ "pre">//etc/resolv.conf</span></tt>, si modifichi quindi
+ <tt class="docutils literal"><span class=
+ "pre">/etc/ppp/peers/dsl-provider</span></tt> commentando
+ <tt class="docutils literal"><span class=
+ "pre">usepeerdns</span></tt>. Se la vostra connessione ad
+ internet e' ADSL raramente dovreste aver bisogno di
+ cambiare i DNS una volta impostati (a meno che non usiate
+ un portatile!).</p>
+ </div>
+ </div>
+
+ <div class="section" id="bind-dns-autoritativo">
+ <h1><a class="toc-backref" href=
+ "#id67">7 Bind : DNS Autoritativo</a></h1>
+
+ <p>Le soluzioni viste possono bastare per la rete locale o
+ per fare delle prove, ma prima o poi verra' il momento in cui
+ si e' chiamati a gestire dei domini su internet: lo standard
+ e' da sempre <em>Bind</em> ( demone <em>named</em>), ora alla
+ versione 9.</p>
+
+ <p>Installare i pacchetti:</p>
+ <pre class="literal-block">
+bind9
+</pre>
+
+ <div class="section" id="id5">
+ <h2><a class="toc-backref" href=
+ "#id68">7.1 DNS cache</a></h2>
+
+ <p>Bind appena installato funzionera' come DNS cache: si
+ faccia un test con un <tt class=
+ "docutils literal"><span class="pre">dig</span>
+ <span class="pre">@localhost</span></tt> . Bind a
+ differenza di Dnsmasq e' autonomo: non ha bisogno di
+ forwardare (inoltrare) le query a un DNS esterno: queste
+ verranno risolte direttamente da Bind partendo dai <em>DNS
+ root servers</em>.</p>
+
+ <p>E' comunque possibile impostare dei DNS forwarders,
+ tipicamente i DNS server forniti dal proprio provider, per
+ velocizzare le query:</p>
+
+ <p>/etc/bind/named.conf.options (riga 13):</p>
+ <pre class="literal-block">
+forwarders {
+ 10.10.208.254;
+ };
+</pre>
+
+ <p>Nel caso si voglia usare Bind solo come server DNS cache
+ per la propria LAN senza ospitare delle zone DNS pubbliche
+ sara' il caso di limitare gli accessi al server alla sola
+ LAN:</p>
+
+ <p>/etc/bind/named.conf.options (riga 19):</p>
+ <pre class="literal-block">
+// Se il proprio server ha IP 10.10.208.254
+// sulla rete LAN privata:
+listen-on { 10.10.208.254; }
+</pre>
+
+ <p>E non si lasci il server in ascolto su uno degli
+ eventuali indirizzi IP pubblici.</p>
+
+ <p>Se questo non fosse possibile si puo' sempre lavorare su
+ una <em>acl</em>:</p>
+
+ <p>/etc/bind/named.conf</p>
+ <pre class="literal-block">
+acl "localnet" {
+ 10.10.208.0/24 ; 127.0.0.0/8 ;
+ } ;
+</pre>
+
+ <p>Per poi aggiungere all'interno della stanza options la
+ direttiva che abilita' l'entita' <tt class=
+ "docutils literal"><span class=
+ "pre">localnet</span></tt>:</p>
+
+ <p>/etc/bind/named.conf.options</p>
+ <pre class="literal-block">
+allow-query {"localnet" ;} ;
+</pre>
+ </div>
+
+ <div class="section" id="ospitare-una-zona">
+ <h2><a class="toc-backref" href=
+ "#id69">7.2 Ospitare una zona</a></h2>
+
+ <p>Se avete acquistato un nome di dominio e vi serve un
+ software DNS per gestirlo Bind e' la scelta piu' diffusa.
+ Ora vedremo come configurare una <em>zona</em> (come
+ piffa.net) in modo che Bind sia autoritativoper questa,
+ rispondendo alle query DNS di tutta la rete internet.</p>
+
+ <div class="section" id="named-conf-local">
+ <h3><a class="toc-backref" href=
+ "#id70">7.2.1 named.conf.local</a></h3>
+
+ <p>Prima di tutti impostiamo il server bind per gestire
+ la zona, per non fare confusione e' opportuno inserire le
+ propie zone DNS nel file <tt class=
+ "docutils literal"><span class=
+ "pre">named.conf.local</span></tt> e non in <tt class=
+ "docutils literal"><span class=
+ "pre">named.conf</span></tt>.</p>
+
+ <p>named.conf.local:</p>
+ <pre class="literal-block">
+/
+// Do any local configuration here
+//
+
+// Consider adding the 1918 zones here, if they are not used in your
+// organization
+//include "/etc/bind/zones.rfc1918";
+
+zone "piffa.net" {
+ type master;
+ file "/etc/bind/pz/piffa.net";
+ }
+</pre>
+
+ <dl class="docutils">
+ <dt>type master</dt>
+
+ <dd>Il nostro server DNS sara' il principale, al quale
+ poi potremo affiancare dei DNS secondari nel caso
+ questo non sia disponibile.</dd>
+
+ <dt>file "/etc/bind/pz/piffa.net"</dt>
+
+ <dd>Dove verranno inserite le informazioni vere e
+ propie di questa zona.</dd>
+ </dl>
+ </div>
+
+ <div class="section" id="configurazione-della-zona">
+ <h3><a class="toc-backref" href=
+ "#id71">7.2.2 Configurazione della
+ zona</a></h3>
+
+ <p>Ora dovremo preparare il file contenente i record DNS
+ della zona <em>piffa.net</em>, come abbiamo indicato
+ prima questi saranno contenuti nel file <tt class=
+ "docutils literal"><span class=
+ "pre">/etc/bind/pz/piffa.net</span></tt> . Tenere le zone
+ dentro una sottocartella e' buona abitudine, usare
+ <tt class="docutils literal"><span class=
+ "pre">pz</span></tt> per queste e' una vecchia
+ abitudine.</p>
+
+ <p>piffa.net:</p>
+ <pre class="literal-block">
+; Zona per il dominio di secondo livello piffa.net
+
+$TTL 3D ; 3 days
+@ IN SOA ns1.piffa.net. hostmaster.piffa.net. (
+ 200905245 ; serial
+ 8H ; refresh (8 hours)
+ 2H ; retry (2 hours)
+ 4W ; expire (4 weeks)
+ 1D ; minimum (1 day)
+ )
+;
+ NS ns1
+ NS ns2
+ A 94.23.63.105
+ MX 10 smtp
+ TXT "Piffanet main site"
+;
+ns1 A 94.23.63.105
+ns2 A 65.98.21.97
+zoo A 94.23.63.105
+smtp A 94.23.63.105
+test.piffa.net. A 94.23.63.105
+*.piffa.net. A 94.23.63.105 ; *catch all domain
+www CNAME zoo
+ftp CNAME zoo
+</pre>
+
+ <p>All'interno di questo file si possono inserire dei
+ commenti con il carattere <tt class=
+ "docutils literal"><span class="pre">;</span></tt>
+ (punto-e-virgola), si faccia attenzione alla rigida
+ sintassi: apertura e chiusura delle parentesi tonde nella
+ parte <tt class="docutils literal"><span class=
+ "pre">IN</span> <span class="pre">SOA</span></tt>, uso
+ del <tt class="docutils literal"><span class=
+ "pre">punto</span></tt> finale per precisare un nome di
+ dominio specifico (<em>FQDN</em>: Fully-qualified Domain
+ Name) come <tt class="docutils literal"><span class=
+ "pre">test.piffa.net.</span></tt> a differenza degli
+ altri domini di terzo livello come <tt class=
+ "docutils literal"><span class=
+ "pre">pop,imap,smtp</span></tt> .</p>
+
+ <p>La zona inizia con una direttiva <tt class=
+ "docutils literal"><span class="pre">$TTL</span>
+ <span class="pre">3D</span></tt> (RFC 2308) che indica la
+ durata (in questo caso tre giorni) che ogni record
+ dovrebbe avrebbe nella cache degli altri serber DNS.
+ Questo valore dovrebbe essere superiore a un giorno, se
+ non modificate spesso i valori dei vostri record DNS e'
+ consigliabile settarlo a 2/3 settimane in modo da
+ limitare la frequenza delle query al propio server.
+ Questo parametro puo' essere modificato per singoli
+ record:</p>
+ <pre class="literal-block">
+$TTL 3D ; 3 giorni: default se non specificato altrimenti
+rapido 5h IN A 94.23.63.105 ; usa un TTL di 5 ore
+lento 3w IN A 94.23.63.105 ; usa un TTL di 3 settimane
+normale IN A 94.23.63.105 ; usa il TTL di default: 3 giorni
+</pre>
+
+ <p>Segue poi il nome della zona, indicato con la
+ <tt class="docutils literal"><span class=
+ "pre">@</span></tt> per richiamare la zona originale
+ precisata nel file <tt class=
+ "docutils literal"><span class=
+ "pre">named.conf.options</span></tt> . Segue il campo
+ <tt class="docutils literal"><span class=
+ "pre">SOA</span></tt>.</p>
+
+ <div class="section" id="soa-start-of-authority-record">
+ <h4><a class="toc-backref" href=
+ "#id72">7.2.2.1 SOA: Start of
+ Authority Record</a></h4>
+
+ <p>Il record SOA puo' comparire solo una volta in una
+ zona, contiene informazioni relative all'autorita' del
+ server DNS.</p>
+
+ <dl class="docutils">
+ <dt>ns1.piffa.net. name-server</dt>
+
+ <dd>primary master DNS di questo dominio.</dd>
+
+ <dt>hostmaster.piffa.net. email-addr</dt>
+
+ <dd>email-addr: indirizzo email della persona
+ responsabile di questa zona, il primo punto viene
+ tradotto in una <em>chiocciola</em> <tt class=
+ "docutils literal"><span class="pre">@</span></tt>
+ dato che questo carattere ha un'altro utilizzo
+ all'interno di questo file. Il referente della zona
+ <strong>deve</strong> essere un email valido e
+ controllato, come consuetudine si usa <tt class=
+ "docutils literal"><span class=
+ "pre">hostmaster@dominio.tilde</span></tt> .</dd>
+
+ <dt>200905245 serial number</dt>
+
+ <dd>Questo valore serve per indicare quando e' stato
+ modificato questo file di configurazione, secondo il
+ formato <tt class="docutils literal"><span class=
+ "pre">yyyymmddss</span></tt>: <tt class=
+ "docutils literal"><span class="pre">yyyy</span></tt>
+ = anno, ''mm'' = mese, ''dd'' = giorno, ''ss'' =
+ seriale. Il seriale che deve essere sempre
+ specificato anche per una cifra, va incrementato di
+ una unita' nel caso vengano fatte piu' modifiche
+ <em>nello stesso giorno</em>.</dd>
+
+ <dt>8H refresh</dt>
+
+ <dd>Indica ai DNS secondari quanto tempo attendere
+ per cercare di aggiornare i loro dati con il DNS
+ master.</dd>
+
+ <dt>2H retry</dt>
+
+ <dd>Intervallo di tempo per il DNS slave (secondario)
+ da aspettare prima di cercare di ricontattare il
+ <em>master</em> in caso di problemi col
+ <em>refresh</em>.</dd>
+
+ <dt>4W expire</dt>
+
+ <dd>Indica quando i dati dei dns secondarinon sono
+ piu' autoritativi in caso di impossibilita' degli
+ <em>slaves</em> di ri-aggiornarsi con il
+ <em>master</em>. Consigliato un valore di 2/4
+ settimane.</dd>
+
+ <dt>1D minimum</dt>
+
+ <dd>Questo valore indicava il TTL fino alla versione
+ 8 di Bind, da Bind 9 e secondo la RFC2308 indica la
+ durata del <em>negative caching</em>, quanto i
+ resolvers (ad esempio un server dns cache) puo'
+ mantenere un record <em>negativo</em> (che non indica
+ la corrispondenza tra un nome di dominio e un ip, ma
+ la non esistenza del record). Nell'uso per il
+ negative caching viene fissato un valore massimo di 3
+ ore dalla RFC 2308.</dd>
+ </dl>
+ </div>
+
+ <div class="section" id="altri-campi">
+ <h4><a class="toc-backref" href=
+ "#id73">7.2.2.2 Altri campi:</a></h4>
+
+ <p>All'interno della zona possono essere utilizati vari
+ tipi di records (RR):</p>
+
+ <dl class="docutils">
+ <dt>TXT</dt>
+
+ <dd>Informazioni testuali associate ad un record</dd>
+
+ <dt>NS</dt>
+
+ <dd>Name Server della zona. Non deve essere un
+ cname.</dd>
+
+ <dt>A</dt>
+
+ <dd>Indirizzo ipv4 da associare al record</dd>
+
+ <dt>AAA</dt>
+
+ <dd>Indirizzo ipv6 da associare al record</dd>
+
+ <dt>CNAME</dt>
+
+ <dd>Canonical Name: un alias per un host: ad esempio
+ per il dominio piffa.net possiamo settare degli alias
+ come <tt class="docutils literal"><span class=
+ "pre">www.piffa.net,</span> <span class=
+ "pre">http.piffa.net,</span> <span class=
+ "pre">virtual.piffa.net,</span> <span class=
+ "pre">ftp.piffa.net,</span> <span class=
+ "pre">imap.piffa.net</span></tt>. Comodo quando
+ diversi alias sono sempre riferiti allo stesso
+ ip.</dd>
+
+ <dt>MX</dt>
+
+ <dd>Mail Exchanger: server di posta che si occupera'
+ della posta elettronica per questo dominio.E'
+ opportuno avere almeno un server di posta di back-up,
+ per indicare la priorita' di un MX rispettoad un
+ altro si usa un valore di 2 cifre: il valore piu'
+ basso indica priorita' piu' bassa. Es: <tt class=
+ "docutils literal"><span class=
+ "pre">MX</span> <span class=
+ "pre">10</span> <span class=
+ "pre">smtp.piffa.net.</span></tt> per il server SMTP
+ principale e <tt class=
+ "docutils literal"><span class="pre">MX</span>
+ <span class="pre">40</span> <span class=
+ "pre">smtp2.piffa.net</span></tt> per il secondario.
+ Non deve essere un cname.</dd>
+
+ <dt>PTR</dt>
+
+ <dd>Reverse look-up, usato per la mappatura inversa
+ di un indirizzo ip a una stringa identificativa
+ dell'host. Si noti che per poter modificare questi
+ record si deve avere <em>in gestione</em> la <em>zona
+ IP</em>, se cosi' non fosse si dovra' chiedere al
+ propio provider la modifica di questo record per il
+ propio ip. Links: <a class="reference external" href=
+ "http://www.zytrax.com/books/dns/ch3/">http://www.zytrax.com/books/dns/ch3/</a></dd>
+ </dl>
+ </div>
+ </div>
+ </div>
+
+ <div class="section" id="dns-slave">
+ <h2><a class="toc-backref" href=
+ "#id74">7.3 DNS slave</a></h2>
+
+ <p>Data l'importanza del servizio DNS e' necessario avere
+ ridondanza per i server DNS che ospitano i vostri dati: in
+ caso di indisponibilita' del server <em>master</em> (nel
+ caso fosse il solo a tenere i dati questo comporterebbe la
+ <em>scomparsa</em> di tutti i servizi / host da esso
+ seviti!) il client potrebbe contattare uno degli
+ <em>slave</em>.</p>
+
+ <p>Gli slave recuperano i dati dei recordos RR direttamente
+ dal master e non sara' quindi necessario dover mantenere
+ manualmente il file di configurazione della zona sugli
+ slaves, ogni volta che aggiorneremo il master questi dati
+ si propaghera' agli slaves automaticamente.</p>
+
+ <p>Per attivare uno <em>slave</em> per la nostra zona di
+ esempio <tt class="docutils literal"><span class=
+ "pre">piffa.net</span></tt> si inserisca nel file
+ <tt class="docutils literal"><span class=
+ "pre">named.conf.local</span></tt> dello slave server:</p>
+ <pre class="literal-block">
+zone "piffa.net" {
+ type slave;
+ file "/etc/bind/pz/piffa.net";
+ masters { 192.168.0.1; };
+ };
+</pre>
+
+ <p>Facendo ripartire Bind il file <tt class=
+ "docutils literal"><span class=
+ "pre">/etc/bind/pz/piffa.net</span></tt> viene creato
+ automaticamente.</p>
+
+ <p>Segue un estratto di <tt class=
+ "docutils literal"><span class=
+ "pre">/var/log/syslog</span></tt> al <tt class=
+ "docutils literal"><span class="pre">restart</span></tt> di
+ <tt class="docutils literal"><span class=
+ "pre">bind9</span></tt> sullo slave:</p>
+ <pre class="literal-block">
+... slave named[2256]: zone piffa.net/IN: loaded serial 200905245
+... slave named[2256]: running
+... slave named[2256]: zone piffa.net/IN: sending notifies (serial 200905245)
+... slave named[2256]: client 192.168.0.1#1464: received notify for zone 'piffa.net'
+... slave named[2256]: zone piffa.net/IN: notify from 192.168.0.1#1464: zone is up to date
+</pre>
+
+ <div class="warning">
+ <p class="first admonition-title">Avvertenza</p>
+
+ <p class="last">Bind9 (versione 9.3 presente in Debian
+ Lenny) richiede una esplicita autorizzazione alla
+ notifica per lo stesso server slave, che in fase di avvio
+ interroghera' (inviando un notify) se' stesso per
+ valutare se i dati relativi alla zona di cui e' slave
+ sono aggiornati. Si aggiunga quindi al file <tt class=
+ "docutils literal"><span class=
+ "pre">/etc/bind/named.conf.options</span></tt> dello
+ slave: <tt class="docutils literal"><span class=
+ "pre">allow-notify</span> <span class="pre">{</span>
+ <span class="pre">192.168.0.1;</span> <span class=
+ "pre">};</span></tt> all'interno della stanza <tt class=
+ "docutils literal"><span class="pre">options</span></tt>,
+ in cui l'inidirizzo IP inserito e' quello dello stesso
+ slave server.</p>
+ </div>
+ </div>
+
+ <div class="section" id="aggiornamento-dinamico-nsupdate">
+ <h2><a class="toc-backref" href=
+ "#id75">7.4 Aggiornamento dinamico:
+ nsupdate</a></h2>
+
+ <p>Dalla versione 8 di Bind e' dsponibile l'utility
+ <tt class="docutils literal"><span class=
+ "pre">nsupdate</span></tt> (disponibile nel pacchetto
+ <tt class="docutils literal"><span class=
+ "pre">dnsutils</span></tt>) per aggiornare automaticamente
+ i record di una zona secondo il paradigma client / server (
+ RFC2136 ) . Posto che abbiate a disposizione un server DNS
+ Bind on-line su un indirizzo IP fisso e un zona da gestire
+ (che potrebbe essere anche solo la delega di un dominio di
+ terzo livello come <em>casa.miodominio.net</em>) sara'
+ possibile aggiornare automaticamente i record che tirano a
+ degli indirizzi IP <em>pubblici ma dnamici</em>, come
+ quelli spesso messi a disposizione dei provider per le
+ connessioni ad internet residenziali, in modo da poter
+ rendere sempre raggiungibile la vostra workstation a casa
+ anche dopo un aggiornamento dell'ip dinamico associato alla
+ connessione.</p>
+
+ <p>L'auenticazione del client nsupdate che avra' la
+ possibilita' di aggiornare il server DNS master avviene
+ tramite <em>Transaction signatures</em> (TSIG, RFC2845)
+ usando un algoritmo di criptazione dati asimmetrico
+ <em>HMAC-MD5</em> : generata una coppia di chiavi sul
+ client / nsupdate con l'utility si dovra' trasferire la
+ chiave pubblica sul server <em>master</em>, che verra'
+ configurato per onorare gli aggiornamenti (eliminazione e
+ inserimento di record RR) autenticati dalla chiave
+ privata.</p>
+
+ <div class="section" id="configurazione-client-nsupdate">
+ <h3><a class="toc-backref" href=
+ "#id76">7.4.1 Configurazione client
+ (nsupdate)</a></h3>
+
+ <p>Sul client, sul quale non deve essere necessariamente
+ installato un server DNS Bind ma la sola utility
+ <tt class="docutils literal"><span class=
+ "pre">nsupdate</span></tt>, generiamo la coppia di chiavi
+ con l'utility <tt class="docutils literal"><span class=
+ "pre">dnssec-keygen</span></tt> installabile tramite il
+ pacchetto <tt class="docutils literal"><span class=
+ "pre">bind9utils</span></tt>:</p>
+ <pre class="literal-block">
+dnssec-keygen -a HMAC-MD5 -b 512 -n USER home.piffa.net.
+</pre>
+
+ <p>Otterremo le due chiavi <tt class=
+ "docutils literal"><span class=
+ "pre">Khome.piffa.net.+157+04331.key</span>
+ <span class=
+ "pre">Khome.piffa.net.+157+04331.private</span></tt>, la
+ chiave pubblica dovra' essere resa noto al server master
+ che ricevera' l'update dei records.</p>
+ </div>
+
+ <div class="section" id=
+ "configurazione-server-riconoscimento-chiave">
+ <h3><a class="toc-backref" href=
+ "#id77">7.4.2 Configurazione server:
+ riconoscimento chiave</a></h3>
+
+ <dl class="docutils">
+ <dt>Per rendere nota al server la chiave pubblica
+ generata sul client si aggiunga quindi al file
+ <tt class="docutils literal"><span class=
+ "pre">/etc/bind/named.conf</span></tt> sul
+ server::</dt>
+
+ <dd>
+ <dl class="first last docutils">
+ <dt>key home.piffa.net. {</dt>
+
+ <dd>algorithm HMAC-MD5; secret
+ "txfAkNTScANEu2V73mCeiDpXNc3pmf+7ONOoKnTKQKIZMzierSmeHjK5
+ Z8ntnByt/PJwv26jCIsVh8n+xzVsRw=="; };</dd>
+ </dl>
+ </dd>
+ </dl>
+
+ <div class="note">
+ <p class="first admonition-title">Nota</p>
+
+ <p class="last">La parte <tt class=
+ "docutils literal"><span class=
+ "pre">secret</span></tt>, che potete leggere
+ direttamente nel file *.key della chiave genearta, e'
+ scritto <em>tutto sulla stessa riga</em> senza ritorni
+ a capo.</p>
+ </div>
+ </div>
+
+ <div class="section" id="server-gestione-dell-intera-zona">
+ <h3><a class="toc-backref" href=
+ "#id78">7.4.3 Server: gestione
+ dell'intera zona</a></h3>
+
+ <p>Sul server modifichiamo il file di configurazione
+ <tt class="docutils literal"><span class=
+ "pre">named.conf.local</span></tt> della zona della quale
+ vogliamo concedere l'aggiornamento al client:</p>
+ <pre class="literal-block">
+zone "piffa.net" {
+ type master;
+ file "/etc/bind/pz/piffa.net" ;
+ allow-update {
+ key home.piffa.net;
+ };
+};
+</pre>
+
+ <dl class="docutils">
+ <dt>Sara' necessario assicurarsi che il demone di Bind
+ sia in grado di modificare il file <tt class=
+ "docutils literal"><span class=
+ "pre">/etc/bind/pz/piffa.net</span></tt>: dato che
+ questo file ora sara' gestito da lui si proceda a
+ cedergli la propieta' del file::</dt>