+ <div class="section" id="dns-cache">
+ <h2><a class="toc-backref" href=
+ "#id69">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=
+ "#id70">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=
+ "#id71">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=
+ "#id72">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=
+ "#id73">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=
+ "#id74">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=
+ "#id75">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=
+ "#id76">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=
+ "#id77">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=
+ "#id78">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=
+ "#id79">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=
+ "#id80">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=
+ "#id81">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>
+
+ <dd>chown bind /etc/bind/pz/piffa.net</dd>
+ </dl>
+
+ <p>Altro problema che si potrebbe porre: gli orologi di
+ sistema dei due host devono essere sincronizzati per
+ poter valutare l'opportunita' di un aggiornamento: si
+ consigla di installare su entrambi l'utility <tt class=
+ "docutils literal"><span class="pre">ntpdate</span></tt>
+ e di eseguirla facendo riferimento ai time server di
+ Debian:</p>
+ <pre class="literal-block">
+apt-get install ntpdate
+ntpdate-debian
+</pre>
+
+ <p>Ora possiamo provare dal client a effettuare
+ l'iserimento di un record per testarne il
+ funzionamento:</p>
+ <pre class="literal-block">
+# nsupdate -k Khome.piffa.net.+157+04331.private -v
+> server ns1.piffa.net
+> update add home.piffa.net. 86400 A 192.168.0.2
+> show
+Outgoing update query:
+;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: 0
+;; flags: ; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
+;; UPDATE SECTION:
+home.piffa.net. 86400 IN A 192.168.0.1
+
+
+> send
+</pre>
+
+ <p>Per comprendere meglio l'uso dell'utility <tt class=
+ "docutils literal"><span class="pre">nsupdate</span></tt>
+ si consiglia la lettura della relativa pagina man. Nella
+ prima riga viene invocato il comando <tt class=
+ "docutils literal"><span class="pre">nsupdate</span></tt>
+ impostando col flag <tt class=
+ "docutils literal"><span class="pre">-k</span></tt> la
+ chiave privata generata precedentemente, con <tt class=
+ "docutils literal"><span class="pre">server</span></tt>
+ si imposta quale server NS autoritario della zona (che
+ abbiamo precedentemente configurato per ricevere gli
+ aggiornamenti) vogliamo contattare. Alla riga sucessiva
+ <tt class="docutils literal"><span class=
+ "pre">update</span></tt> viene aggiunto un record
+ <tt class="docutils literal"><span class=
+ "pre">A</span></tt> per la il dominio <tt class=
+ "docutils literal"><span class=
+ "pre">home.piffa.net</span></tt> indirizzato all'IP
+ <tt class="docutils literal"><span class=
+ "pre">192.168.0.2</span></tt>, poi <tt class=
+ "docutils literal"><span class="pre">show</span></tt>
+ mostra quanto ci si prepara a comunicare al server con il
+ finale <tt class="docutils literal"><span class=
+ "pre">send</span></tt> .</p>
+
+ <p>Si noti che in questo modo <em>l'intera zona</em>
+ piffa.net e suscettibile di essere modificata dal client,
+ che potra' eliminare e inserire qualunque record. E'
+ possibile gestire in modo piu' granulare la zona, ad
+ esempio concedendo al client i privilegi per gestire solo
+ una parte della zona o i tipo di record da gestire.</p>
+ </div>
+
+ <div class="section" id=
+ "automatizzare-l-aggiornamento-dinamico">
+ <h3><a class="toc-backref" href=
+ "#id82">7.4.4 Automatizzare
+ l'aggiornamento dinamico</a></h3>
+
+ <p>Nsupdate risulta comodo per tenere aggiornati i record
+ DNS degli host connessi ad internet con indirizzi IP
+ dinamici (pubblici) assegnati dal provider. Il client
+ deve essere in grado di contattare autonomamente il
+ server DNS per comunicare un cambiamento del suo ip.
+ Vediamo innanzi tutto un primo script per nsupdate:</p>
+ <pre class="literal-block">
+#!/bin/bash
+# Diamo al demone ppp un po' di tempo per negoziare la connessione
+# prima di leggere l'IP ottenuto
+sleep 15
+IPADDR=$(/sbin/ifconfig ppp0 | awk '/inet/ { print $2 } ' | sed -e s/addr://)
+
+nsupdate -k /root/dns/Khome.piffa.net.+157+04331.private <<-EOF
+ server 192.168.0.254
+ zone home.piffa.net.
+ update delete home.piffa.net. A
+ update delete home.piffa.net. MX
+ update add home.piffa.net. 432000 A $IPADDR
+ update add home.piffa.net. 432000 MX 10 home.piffa.net.
+ show
+ send
+ EOF
+</pre>
+
+ <p>Questo script legge il valore del device di rete
+ <tt class="docutils literal"><span class=
+ "pre">ppp0</span></tt> creato dal <cite>pppoe</cite> di
+ una connessione ADSL per ottenere l'indirizzo IP ottenuto
+ dal provider (prima di farlo aspetta 15 secondi per dare
+ il tempo al <tt class="docutils literal"><span class=
+ "pre">pppoe</span></tt> di negoziare la
+ connessione).Vengono poi eliminati gli esistenti valori
+ <tt class="docutils literal"><span class=
+ "pre">A</span></tt> e <tt class=
+ "docutils literal"><span class="pre">MX</span></tt> per
+ <tt class="docutils literal"><span class=
+ "pre">home.piffa.net</span></tt> (si noti il punto finale
+ dopo <em>net</em>) e inseriti quelli attuali.</p>
+
+ <p>Resta da decidere quando richiamare questo script:
+ l'evento che causa l'assegnazione del nuovo IP in questo
+ caso e una nuova connessione <tt class=
+ "docutils literal"><span class="pre">pppoe</span></tt>,
+ quindi sarebbe consigliabile inserire lo script nelle
+ routine comprese in <tt class=
+ "docutils literal"><span class=
+ "pre">/etc/ppp/ip-up.d</span></tt> (si veda la
+ documentazione di ppp), nel caso questo non desse i
+ risultati sperati (per problemi di connessione) come via
+ estrema si consideri di mettere lo script nella routine
+ del demone <tt class="docutils literal"><span class=
+ "pre">cron</span></tt> in modo che venga eseguito
+ periodicamente (ad esempio ogni giorno).</p>
+ </div>
+ </div>
+
+ <div class="section" id="link-suggeriti">
+ <h2><a class="toc-backref" href=
+ "#id83">7.5 Link suggeriti:</a></h2>
+
+ <ul class="simple">
+ <li>DNS for Rocket Scientists <a class=
+ "reference external" href=
+ "http://www.zytrax.com/books/dns/">http://www.zytrax.com/books/dns/</a></li>
+
+ <li>DNS HOWTO <a class="reference external" href=
+ "http://www.langfeldt.net/DNS-HOWTO/BIND-9/">http://www.langfeldt.net/DNS-HOWTO/BIND-9/</a></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="section" id="samba">
+ <h1><a class="toc-backref" href=
+ "#id84">8 Samba</a></h1>
+
+ <p>Samba e' un progetto libero che fornisce servizi di
+ condivisione di file e stampanti a client SMB/CIFS.</p>
+
+ <p>Samba e' liberamente disponibile, al contrario di altre
+ implementazioni SMB/CIFS, e permette di ottenere
+ interoperabilita' tra Linux, Unix, Mac OS X e Windows.</p>
+
+ <p>Samba e' un software che puo' girare su piattaforme che
+ non siano Microsoft Windows, per esempio, UNIX, Linux, IBM
+ System 390, OpenVMS e altri sistemi operativi. Samba utilizza
+ il protocollo TCP/IP utilizzando i servizi offerti sul server
+ ospite. Quando correttamente configurato, permette di
+ interagire con client o server Microsoft Windows come se
+ fosse un file e print server Microsoft agendo da Primary
+ Domain Controller (PDC) o come Backup Domain Controller, puo'
+ inoltre prendere parte ad un dominio Active Directory.</p>
+
+ <div class="section" id="pacchetti">
+ <h2><a class="toc-backref" href=
+ "#id85">8.1 Pacchetti</a></h2>
+
+ <p>Pacchetti da installare per utilizzare Samba in
+ modalita' client <a class="footnote-reference" href="#id7"
+ id="id6" name="id6">[2]</a></p>
+ <pre class="literal-block">
+samba-client
+</pre>
+
+ <p>Pacchetti da installare per utilizzare Samba in
+ modalita' server:</p>
+ <pre class="literal-block">
+samba smbfs smbclient
+</pre>
+
+ <table class="docutils footnote" frame="void" id="id7"
+ rules="none">
+ <colgroup>
+ <col class="label">