Servizi, samba
[doc/.git] / servizi.html
1 <?xml version="1.0" encoding="utf-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
3
4 <html lang="it">
5 <head>
6   <meta name="generator" content=
7   "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org">
8   <meta http-equiv="Content-Type" content=
9   "text/html; charset=iso-8859-1">
10   <meta name="generator" content=
11   "Docutils 0.6: http://docutils.sourceforge.net/">
12
13   <title>Servizi di rete passo a passo</title>
14   <style type="text/css">
15
16   /*
17   Author: Peter Parente
18   Modyfied by: Andrea Manni
19   Date: 2010/01/22
20   Version: 1.1
21   Copyright: This stylesheet has been placed in the public domain - free to edit and use for all uses.
22   */
23
24   body {
25   font: 100% sans-serif;
26   background: #ffffff;
27   color: black;
28   margin: 2em;
29   padding: 0em 2em;
30   }
31   pre.literal-block {
32          overflow: auto;
33     padding: 5px;
34     background-color: #eeffcc;
35     color: #333333;
36     line-height: 120%;
37     border: 1px solid #ac9;
38     border-left: none;
39     border-right: none;
40   }
41
42   p.topic-title {
43   font-weight: bold;
44   }
45
46   table.docinfo {
47   text-align: left;
48   margin: 2em 0em;
49   }
50
51   a[href] {
52   color: #436976;
53   background-color: transparent;
54   }
55
56   a.toc-backref {
57         margin-left:20px;
58   text-decoration: none;
59   }
60
61   h1 a[href] {
62   color: #003a6b;
63   text-decoration: none;
64   background-color: transparent;
65   }
66
67   a.strong {
68   font-weight: bold;
69   }
70
71   img {
72   margin: 0;
73   border: 0;
74   }
75
76   p {
77   margin: 0.5em 0 1em 0;
78   text-align: justify;
79   line-height: 1.5em;
80   }
81
82
83   p a:visited {
84   color: purple;
85   background-color: transparent;
86   }
87
88   p a:active {
89   color: red;
90   background-color: transparent;
91   }
92
93   a:hover {
94   text-decoration: none;
95   }
96
97   p img {
98   border: 0;
99   margin: 0;
100   }
101
102   p.rubric {
103   font-weight: bold;
104   font-style: italic;
105   }
106
107   h1.title {
108   color: #003a6b;
109   font-size: 250%;
110   margin-bottom: 0em;
111   }
112
113   h2.subtitle {
114   color: #003a6b;
115   border-bottom: 0px;
116   }
117
118   h1, h2, h3, h4, h5, h6 {
119   color: #555;
120   background-color: transparent;
121   margin: 0em;
122   padding-top: 0.5em;
123   }
124
125   h1 {
126   font-size: 160%;
127   margin-bottom: 0.5em;
128   border-bottom: 2px solid #aaa;
129   }
130
131   h2 {
132   font-size: 140%;
133   margin-bottom: 0.5em;
134   border-bottom: 1px solid #aaa;
135   }
136
137   h3 {
138   font-size: 130%;
139   margin-bottom: 0.5em;
140   }
141
142   h4 {
143   font-size: 110%;
144   font-weight: bold;
145   margin-bottom: 0.5em;
146   }
147
148   h5 {
149   font-size: 105%;
150   font-weight: bold;
151   margin-bottom: 0.5em;
152   }
153
154   h6 {
155   font-size: 100%;
156   font-weight: bold;
157   margin-bottom: 0.5em;
158   }
159
160   dt {
161   font-style: italic;
162   }
163
164   dd {
165   margin-bottom: 1.5em;
166   }
167
168   div.admonition, div.note, div.tip, div.caution, div.important {
169   margin: 2em 2em;
170   padding: 0em 1em;
171   border-top: 1px solid #aaa;
172   border-left: 1px solid #aaa;
173   border-bottom: 2px solid #555;
174   border-right: 2px solid #555;
175   }
176
177   div.important {
178   background: transparent url('../images/important.png') 10px 2px no-repeat;
179   }
180
181   div.caution {
182   background: transparent url('../images/caution.png') 10px 2px no-repeat;
183   }
184
185   div.note {
186   background: transparent url('../images/note.png') 10px 2px no-repeat;
187   }
188
189   div.tip {
190   background: transparent url('../images/tip.png') 10px 2px no-repeat;
191   }
192
193   div.admonition-example {
194   background: transparent url('../images/tip.png') 10px 2px no-repeat;
195   }
196
197   div.admonition-critical-example {
198   background: transparent url('../images/important.png') 10px 2px no-repeat;
199   }
200
201   p.admonition-title {
202   font-weight: bold;
203   border-bottom: 1px solid #aaa;
204   padding-left: 30px;
205   }
206
207   table.docutils {
208   text-align: left;
209   border: 1px solid gray;
210   border-collapse: collapse;
211   width: 100%;
212   margin: 1.5em 0em;
213   }
214
215   table.docutils caption {
216   font-style: italic;
217   }
218
219   table.docutils td, table.docutils th {
220   padding: 0.25em 0.5em;
221   }
222
223   table.docutils th {
224   background-color: #dddddd;
225   }
226
227   div.sidebar {
228   width: 33%;
229   float: right;
230   margin: 0em 2em;
231   padding: 0em 1em;
232   border-top: 1px solid #aaa;
233   border-left: 1px solid #aaa;
234   border-bottom: 2px solid #555;
235   border-right: 2px solid #555;
236   }
237
238   p.sidebar-title {
239   margin-bottom: 0em;
240   color: #003a6b;
241   border-bottom: 1px solid #aaa;
242   font-weight: bold;
243   }
244
245   p.sidebar-subtitle {
246   margin-top: 0em;
247   font-style: italic;
248   color: #003a6b;
249   }
250
251   </style>
252 </head>
253
254 <body>
255   <div class="document" id="servizi-di-rete-passo-a-passo">
256     <h1 class="title">Servizi di rete passo a passo</h1>
257
258     <h2 class="subtitle" id=
259     "appunti-sulla-installazione-e-configurazione-dei-servizi-di-rete-in-ambiete-gnu-linx">
260     Appunti sulla installazione e configurazione dei servizi di
261     rete in ambiete Gnu/Linx</h2>
262
263     <blockquote>
264       <table class="docutils field-list" frame="void" rules="none">
265         <col class="field-name">
266         <col class="field-body">
267
268         <tbody valign="top">
269           <tr class="field">
270             <th class="field-name">Author:</th>
271
272             <td class="field-body">Andrea Manni</td>
273           </tr>
274
275           <tr class="field">
276             <th class="field-name">Copyright:</th>
277
278             <td class="field-body">GFDL</td>
279           </tr>
280
281           <tr class="field">
282             <th class="field-name">Version:</th>
283
284             <td class="field-body">0.95</td>
285           </tr>
286         </tbody>
287       </table>
288     </blockquote>
289
290     <p>Questa guida tratta la configurazione di base dei principali
291     servizi di rete utilizzati con sistemi operativi <em>Unix</em>
292     e derivati come <em>GNU/Linux</em> per gli studenti dei corsi
293     per amministratori di rete in ambiente <em>GNU/Linux</em>. In
294     particolare questa guida e' stata scritta usando come
295     riferimento la distribuzione <em>Debian GNU/Linux</em>. Gli
296     esempi presentati dovrebbero quindi essere direttamente
297     utilizzabili anche su distribuzioni derivate da Debian come
298     Ubuntu, per sistemi operativi diversi si presti attenzione ai
299     percorsi dei file citati.</p>
300
301     <div class="contents topic" id="indice-degli-argomenti">
302       <p class="topic-title first">Indice degli argomenti</p>
303
304       <ul class="auto-toc simple">
305         <li>
306           <a class="reference internal" href=
307           "#configurazione-sistema" id="id9" name=
308           "id9">1&nbsp;&nbsp;&nbsp;Configurazione sistema</a>
309
310           <ul class="auto-toc">
311             <li><a class="reference internal" href=
312             "#solo-per-uso-interno" id="id10" name=
313             "id10">1.1&nbsp;&nbsp;&nbsp;Solo per uso
314             interno</a></li>
315
316             <li>
317               <a class="reference internal" href="#rete" id="id11"
318               name="id11">1.2&nbsp;&nbsp;&nbsp;Rete</a>
319
320               <ul class="auto-toc">
321                 <li><a class="reference internal" href=
322                 "#interfaces" id="id12" name=
323                 "id12">1.2.1&nbsp;&nbsp;&nbsp;interfaces</a></li>
324               </ul>
325             </li>
326
327             <li><a class="reference internal" href=
328             "#bash-completion" id="id13" name=
329             "id13">1.3&nbsp;&nbsp;&nbsp;Bash completion</a></li>
330
331             <li><a class="reference internal" href="#vim" id="id14"
332             name="id14">1.4&nbsp;&nbsp;&nbsp;Vim</a></li>
333
334             <li><a class="reference internal" href="#vnc" id="id15"
335             name="id15">1.5&nbsp;&nbsp;&nbsp;VNC</a></li>
336
337             <li><a class="reference internal" href=
338             "#lista-dei-pacchetti-di-base" id="id16" name=
339             "id16">1.6&nbsp;&nbsp;&nbsp;Lista dei pacchetti di
340             base</a></li>
341
342             <li>
343               <a class="reference internal" href=
344               "#apt-configurazione" id="id17" name=
345               "id17">1.7&nbsp;&nbsp;&nbsp;Apt configurazione</a>
346
347               <ul class="auto-toc">
348                 <li><a class="reference internal" href=
349                 "#sources-list" id="id18" name=
350                 "id18">1.7.1&nbsp;&nbsp;&nbsp;sources.list</a></li>
351
352                 <li><a class="reference internal" href=
353                 "#etc-apt-apt-conf" id="id19" name=
354                 "id19">1.7.2&nbsp;&nbsp;&nbsp;/etc/apt/apt.conf</a></li>
355               </ul>
356             </li>
357           </ul>
358         </li>
359
360         <li>
361           <a class="reference internal" href="#squid" id="id20"
362           name="id20">2&nbsp;&nbsp;&nbsp;Squid</a>
363
364           <ul class="auto-toc">
365             <li>
366               <a class="reference internal" href=
367               "#configurazione-squid-conf" id="id21" name=
368               "id21">2.1&nbsp;&nbsp;&nbsp;Configurazione:
369               squid.conf</a>
370
371               <ul class="auto-toc">
372                 <li>
373                   <a class="reference internal" href="#cache-dir"
374                   id="id22" name=
375                   "id22">2.1.1&nbsp;&nbsp;&nbsp;Cache_dir</a>
376
377                   <ul class="auto-toc">
378                     <li><a class="reference internal" href=
379                     "#opzioni-del-file-system" id="id23" name=
380                     "id23">2.1.1.1&nbsp;&nbsp;&nbsp;Opzioni del
381                     file system</a></li>
382                   </ul>
383                 </li>
384
385                 <li><a class="reference internal" href=
386                 "#configurazioni-di-cache-dir" id="id24" name=
387                 "id24">2.1.2&nbsp;&nbsp;&nbsp;Configurazioni di
388                 Cache_dir</a></li>
389
390                 <li><a class="reference internal" href=
391                 "#tag-maximum-object-size" id="id25" name=
392                 "id25">2.1.3&nbsp;&nbsp;&nbsp;TAG:
393                 maximum_object_size</a></li>
394
395                 <li><a class="reference internal" href=
396                 "#tag-cache-mem" id="id26" name=
397                 "id26">2.1.4&nbsp;&nbsp;&nbsp;TAG:
398                 cache_mem</a></li>
399
400                 <li><a class="reference internal" href=
401                 "#tag-minimum-object-size" id="id27" name=
402                 "id27">2.1.5&nbsp;&nbsp;&nbsp;TAG:
403                 minimum_object_size</a></li>
404               </ul>
405             </li>
406
407             <li>
408               <a class="reference internal" href=
409               "#negoziazione-degli-accesi-al-servizio" id="id28"
410               name="id28">2.2&nbsp;&nbsp;&nbsp;Negoziazione degli
411               accesi al servizio</a>
412
413               <ul class="auto-toc">
414                 <li><a class="reference internal" href=
415                 "#acl-e-http-access" id="id29" name=
416                 "id29">2.2.1&nbsp;&nbsp;&nbsp;ACL e http
417                 access</a></li>
418               </ul>
419             </li>
420
421             <li>
422               <a class="reference internal" href="#testare-squid"
423               id="id30" name="id30">2.3&nbsp;&nbsp;&nbsp;Testare
424               Squid</a>
425
426               <ul class="auto-toc">
427                 <li><a class="reference internal" href=
428                 "#client-wgetrc" id="id31" name=
429                 "id31">2.3.1&nbsp;&nbsp;&nbsp;Client:
430                 ~/.wgetrc</a></li>
431
432                 <li><a class="reference internal" href=
433                 "#server-access-log" id="id32" name=
434                 "id32">2.3.2&nbsp;&nbsp;&nbsp;Server:
435                 access.log</a></li>
436               </ul>
437             </li>
438           </ul>
439         </li>
440
441         <li><a class="reference internal" href="#tiny-proxy" id=
442         "id33" name="id33">3&nbsp;&nbsp;&nbsp;Tiny proxy</a></li>
443
444         <li>
445           <a class="reference internal" href="#apache" id="id34"
446           name="id34">4&nbsp;&nbsp;&nbsp;Apache</a>
447
448           <ul class="auto-toc">
449             <li><a class="reference internal" href=
450             "#pacchetti-da-installare" id="id35" name=
451             "id35">4.1&nbsp;&nbsp;&nbsp;Pacchetti da
452             installare::</a></li>
453
454             <li><a class="reference internal" href=
455             "#configurazione-di-apache" id="id36" name=
456             "id36">4.2&nbsp;&nbsp;&nbsp;Configurazione di
457             Apache</a></li>
458
459             <li><a class="reference internal" href="#apache-conf"
460             id="id37" name=
461             "id37">4.3&nbsp;&nbsp;&nbsp;apache.conf</a></li>
462
463             <li>
464               <a class="reference internal" href=
465               "#installazione-di-php" id="id38" name=
466               "id38">4.4&nbsp;&nbsp;&nbsp;Installazione di PHP</a>
467
468               <ul class="auto-toc">
469                 <li><a class="reference internal" href=
470                 "#test-del-modulo-php" id="id39" name=
471                 "id39">4.4.1&nbsp;&nbsp;&nbsp;Test del modulo
472                 php</a></li>
473
474                 <li><a class="reference internal" href=
475                 "#installazione-del-supporto-per-mysql-a-php" id=
476                 "id40" name=
477                 "id40">4.4.2&nbsp;&nbsp;&nbsp;Installazione del
478                 supporto per Mysql a PHP</a></li>
479
480                 <li><a class="reference internal" href=
481                 "#phpmyadmin" id="id41" name=
482                 "id41">4.4.3&nbsp;&nbsp;&nbsp;phpmyadmin</a></li>
483
484                 <li><a class="reference internal" href=
485                 "#installazione-del-supporto-per-postgresql-a-php"
486                 id="id42" name=
487                 "id42">4.4.4&nbsp;&nbsp;&nbsp;Installazione del
488                 supporto per Postgresql a PHP</a></li>
489
490                 <li><a class="reference internal" href=
491                 "#phppgadmin" id="id43" name=
492                 "id43">4.4.5&nbsp;&nbsp;&nbsp;phppgadmin</a></li>
493               </ul>
494             </li>
495
496             <li>
497               <a class="reference internal" href="#virtual-hosts"
498               id="id44" name="id44">4.5&nbsp;&nbsp;&nbsp;Virtual
499               hosts</a>
500
501               <ul class="auto-toc">
502                 <li><a class="reference internal" href=
503                 "#gestione-dns" id="id45" name=
504                 "id45">4.5.1&nbsp;&nbsp;&nbsp;Gestione DNS</a></li>
505
506                 <li><a class="reference internal" href=
507                 "#eseguire-una-query-dns-con-dig" id="id46" name=
508                 "id46">4.5.2&nbsp;&nbsp;&nbsp;Eseguire una query
509                 DNS con <tt class=
510                 "docutils literal">dig</tt>::</a></li>
511
512                 <li><a class="reference internal" href="#id3" id=
513                 "id47" name="id47">4.5.3&nbsp;&nbsp;&nbsp;Virtual
514                 hosts</a></li>
515               </ul>
516             </li>
517
518             <li>
519               <a class="reference internal" href=
520               "#negoziazione-accessi" id="id48" name=
521               "id48">4.6&nbsp;&nbsp;&nbsp;Negoziazione accessi</a>
522
523               <ul class="auto-toc">
524                 <li><a class="reference internal" href=
525                 "#limiti-su-base-ip" id="id49" name=
526                 "id49">4.6.1&nbsp;&nbsp;&nbsp;Limiti su base
527                 IP</a></li>
528               </ul>
529             </li>
530
531             <li>
532               <a class="reference internal" href=
533               "#user-authentication" id="id50" name=
534               "id50">4.7&nbsp;&nbsp;&nbsp;User Authentication</a>
535
536               <ul class="auto-toc">
537                 <li><a class="reference internal" href=
538                 "#definire-la-cartella" id="id51" name=
539                 "id51">4.7.1&nbsp;&nbsp;&nbsp;Definire la
540                 cartella</a></li>
541
542                 <li><a class="reference internal" href=
543                 "#creazione-del-database-delle-passwords" id="id52"
544                 name="id52">4.7.2&nbsp;&nbsp;&nbsp;Creazione del
545                 database delle passwords</a></li>
546
547                 <li><a class="reference internal" href="#id4" id=
548                 "id53" name=
549                 "id53">4.7.3&nbsp;&nbsp;&nbsp;Configurazione di
550                 Apache</a></li>
551               </ul>
552             </li>
553
554             <li><a class="reference internal" href="#cavets" id=
555             "id54" name="id54">4.8&nbsp;&nbsp;&nbsp;Cavets</a></li>
556           </ul>
557         </li>
558
559         <li>
560           <a class="reference internal" href="#domain-name-system"
561           id="id55" name="id55">5&nbsp;&nbsp;&nbsp;Domain Name
562           System</a>
563
564           <ul class="auto-toc">
565             <li><a class="reference internal" href=
566             "#risoluzione-inversa" id="id56" name=
567             "id56">5.1&nbsp;&nbsp;&nbsp;Risoluzione
568             Inversa</a></li>
569
570             <li><a class="reference internal" href=
571             "#nomi-di-dominio" id="id57" name=
572             "id57">5.2&nbsp;&nbsp;&nbsp;Nomi di dominio</a></li>
573
574             <li><a class="reference internal" href=
575             "#tipologie-di-record" id="id58" name=
576             "id58">5.3&nbsp;&nbsp;&nbsp;Tipologie di
577             record</a></li>
578
579             <li><a class="reference internal" href="#utilizzo" id=
580             "id59" name=
581             "id59">5.4&nbsp;&nbsp;&nbsp;Utilizzo</a></li>
582
583             <li><a class="reference internal" href=
584             "#risoluzione-dei-nomi-di-dominio" id="id60" name=
585             "id60">5.5&nbsp;&nbsp;&nbsp;Risoluzione dei nomi di
586             dominio</a></li>
587
588             <li><a class="reference internal" href="#dig" id="id61"
589             name="id61">5.6&nbsp;&nbsp;&nbsp;Dig</a></li>
590
591             <li><a class="reference internal" href="#resolv-conf"
592             id="id62" name=
593             "id62">5.7&nbsp;&nbsp;&nbsp;resolv.conf</a></li>
594
595             <li><a class="reference internal" href="#etc-hosts" id=
596             "id63" name=
597             "id63">5.8&nbsp;&nbsp;&nbsp;/etc/hosts</a></li>
598
599             <li>
600               <a class="reference internal" href="#hostname" id=
601               "id64" name="id64">5.9&nbsp;&nbsp;&nbsp;Hostname</a>
602
603               <ul class="auto-toc">
604                 <li><a class="reference internal" href="#fqdn" id=
605                 "id65" name=
606                 "id65">5.9.1&nbsp;&nbsp;&nbsp;FQDN</a></li>
607               </ul>
608             </li>
609           </ul>
610         </li>
611
612         <li>
613           <a class="reference internal" href="#dnsmasq" id="id66"
614           name="id66">6&nbsp;&nbsp;&nbsp;DNSmasq</a>
615
616           <ul class="auto-toc">
617             <li><a class="reference internal" href=
618             "#configurazione" id="id67" name=
619             "id67">6.1&nbsp;&nbsp;&nbsp;Configurazione</a></li>
620
621             <li><a class="reference internal" href="#dhcp" id=
622             "id68" name="id68">6.2&nbsp;&nbsp;&nbsp;DHCP</a></li>
623
624             <li><a class="reference internal" href="#dns-cache" id=
625             "id69" name="id69">6.3&nbsp;&nbsp;&nbsp;DNS
626             cache</a></li>
627           </ul>
628         </li>
629
630         <li>
631           <a class="reference internal" href=
632           "#bind-dns-autoritativo" id="id70" name=
633           "id70">7&nbsp;&nbsp;&nbsp;Bind : DNS Autoritativo</a>
634
635           <ul class="auto-toc">
636             <li><a class="reference internal" href="#id5" id="id71"
637             name="id71">7.1&nbsp;&nbsp;&nbsp;DNS cache</a></li>
638
639             <li>
640               <a class="reference internal" href=
641               "#ospitare-una-zona" id="id72" name=
642               "id72">7.2&nbsp;&nbsp;&nbsp;Ospitare una zona</a>
643
644               <ul class="auto-toc">
645                 <li><a class="reference internal" href=
646                 "#named-conf-local" id="id73" name=
647                 "id73">7.2.1&nbsp;&nbsp;&nbsp;named.conf.local</a></li>
648
649                 <li>
650                   <a class="reference internal" href=
651                   "#configurazione-della-zona" id="id74" name=
652                   "id74">7.2.2&nbsp;&nbsp;&nbsp;Configurazione
653                   della zona</a>
654
655                   <ul class="auto-toc">
656                     <li><a class="reference internal" href=
657                     "#soa-start-of-authority-record" id="id75"
658                     name="id75">7.2.2.1&nbsp;&nbsp;&nbsp;SOA: Start
659                     of Authority Record</a></li>
660
661                     <li><a class="reference internal" href=
662                     "#altri-campi" id="id76" name=
663                     "id76">7.2.2.2&nbsp;&nbsp;&nbsp;Altri
664                     campi:</a></li>
665                   </ul>
666                 </li>
667               </ul>
668             </li>
669
670             <li><a class="reference internal" href="#dns-slave" id=
671             "id77" name="id77">7.3&nbsp;&nbsp;&nbsp;DNS
672             slave</a></li>
673
674             <li>
675               <a class="reference internal" href=
676               "#aggiornamento-dinamico-nsupdate" id="id78" name=
677               "id78">7.4&nbsp;&nbsp;&nbsp;Aggiornamento dinamico:
678               nsupdate</a>
679
680               <ul class="auto-toc">
681                 <li><a class="reference internal" href=
682                 "#configurazione-client-nsupdate" id="id79" name=
683                 "id79">7.4.1&nbsp;&nbsp;&nbsp;Configurazione client
684                 (nsupdate)</a></li>
685
686                 <li><a class="reference internal" href=
687                 "#configurazione-server-riconoscimento-chiave" id=
688                 "id80" name=
689                 "id80">7.4.2&nbsp;&nbsp;&nbsp;Configurazione
690                 server: riconoscimento chiave</a></li>
691
692                 <li><a class="reference internal" href=
693                 "#server-gestione-dell-intera-zona" id="id81" name=
694                 "id81">7.4.3&nbsp;&nbsp;&nbsp;Server: gestione
695                 dell'intera zona</a></li>
696
697                 <li><a class="reference internal" href=
698                 "#automatizzare-l-aggiornamento-dinamico" id="id82"
699                 name="id82">7.4.4&nbsp;&nbsp;&nbsp;Automatizzare
700                 l'aggiornamento dinamico</a></li>
701               </ul>
702             </li>
703
704             <li><a class="reference internal" href=
705             "#link-suggeriti" id="id83" name=
706             "id83">7.5&nbsp;&nbsp;&nbsp;Link suggeriti:</a></li>
707           </ul>
708         </li>
709
710         <li>
711           <a class="reference internal" href="#samba" id="id84"
712           name="id84">8&nbsp;&nbsp;&nbsp;Samba</a>
713
714           <ul class="auto-toc">
715             <li><a class="reference internal" href="#pacchetti" id=
716             "id85" name=
717             "id85">8.1&nbsp;&nbsp;&nbsp;Pacchetti</a></li>
718
719             <li><a class="reference internal" href=
720             "#passwords-e-autenticazione" id="id86" name=
721             "id86">8.2&nbsp;&nbsp;&nbsp;Passwords e
722             autenticazione</a></li>
723
724             <li><a class="reference internal" href=
725             "#creazione-utenti" id="id87" name=
726             "id87">8.3&nbsp;&nbsp;&nbsp;Creazione Utenti</a></li>
727
728             <li>
729               <a class="reference internal" href=
730               "#creare-la-condivisione" id="id88" name=
731               "id88">8.4&nbsp;&nbsp;&nbsp;Creare la
732               condivisione</a>
733
734               <ul class="auto-toc">
735                 <li><a class="reference internal" href=
736                 "#sicurezza-permessi-di-esecuzione-sul-server" id=
737                 "id89" name=
738                 "id89">8.4.1&nbsp;&nbsp;&nbsp;Sicurezza: permessi
739                 di esecuzione sul server</a></li>
740               </ul>
741             </li>
742
743             <li>
744               <a class="reference internal" href=
745               "#configurazione-dell-applicativo-samba-vero-e-proprio"
746               id="id90" name=
747               "id90">8.5&nbsp;&nbsp;&nbsp;Configurazione
748               dell'applicativo Samba vero e proprio.</a>
749
750               <ul class="auto-toc">
751                 <li><a class="reference internal" href=
752                 "#creazione-di-un-gruppo" id="id91" name=
753                 "id91">8.5.1&nbsp;&nbsp;&nbsp;Creazione di un
754                 gruppo</a></li>
755               </ul>
756             </li>
757
758             <li><a class="reference internal" href=
759             "#testare-il-servizio" id="id92" name=
760             "id92">8.6&nbsp;&nbsp;&nbsp;Testare il
761             Servizio</a></li>
762           </ul>
763         </li>
764
765         <li>
766           <a class="reference internal" href=
767           "#server-di-posta-postfix" id="id93" name=
768           "id93">9&nbsp;&nbsp;&nbsp;Server di posta: Postfix</a>
769
770           <ul class="auto-toc">
771             <li>
772               <a class="reference internal" href=
773               "#test-del-server-smtp" id="id94" name=
774               "id94">9.1&nbsp;&nbsp;&nbsp;Test del server smtp</a>
775
776               <ul class="auto-toc">
777                 <li><a class="reference internal" href="#swaks" id=
778                 "id95" name=
779                 "id95">9.1.1&nbsp;&nbsp;&nbsp;Swaks</a></li>
780               </ul>
781             </li>
782
783             <li><a class="reference internal" href="#imap-e-pop"
784             id="id96" name="id96">9.2&nbsp;&nbsp;&nbsp;Imap e
785             pop</a></li>
786
787             <li>
788               <a class="reference internal" href=
789               "#client-a-riga-di-comando" id="id97" name=
790               "id97">9.3&nbsp;&nbsp;&nbsp;Client a riga di
791               comando</a>
792
793               <ul class="auto-toc">
794                 <li><a class="reference internal" href="#mailx" id=
795                 "id98" name=
796                 "id98">9.3.1&nbsp;&nbsp;&nbsp;mailx</a></li>
797
798                 <li><a class="reference internal" href="#mutt" id=
799                 "id99" name=
800                 "id99">9.3.2&nbsp;&nbsp;&nbsp;Mutt</a></li>
801
802                 <li><a class="reference internal" href=
803                 "#web-client" id="id100" name=
804                 "id100">9.3.3&nbsp;&nbsp;&nbsp;Web client</a></li>
805               </ul>
806             </li>
807
808             <li>
809               <a class="reference internal" href="#graylisting" id=
810               "id101" name=
811               "id101">9.4&nbsp;&nbsp;&nbsp;Graylisting</a>
812
813               <ul class="auto-toc">
814                 <li><a class="reference internal" href=
815                 "#abilitazione-in-postfix" id="id102" name=
816                 "id102">9.4.1&nbsp;&nbsp;&nbsp;Abilitazione in
817                 Postfix</a></li>
818
819                 <li><a class="reference internal" href="#test" id=
820                 "id103" name=
821                 "id103">9.4.2&nbsp;&nbsp;&nbsp;Test</a></li>
822
823                 <li><a class="reference internal" href=
824                 "#statistiche" id="id104" name=
825                 "id104">9.4.3&nbsp;&nbsp;&nbsp;Statistiche</a></li>
826               </ul>
827             </li>
828           </ul>
829         </li>
830
831         <li>
832           <a class="reference internal" href="#firewall" id="id105"
833           name="id105">10&nbsp;&nbsp;&nbsp;Firewall</a>
834
835           <ul class="auto-toc">
836             <li><a class="reference internal" href="#links" id=
837             "id106" name=
838             "id106">10.1&nbsp;&nbsp;&nbsp;Links</a></li>
839
840             <li><a class="reference internal" href="#ipfilter" id=
841             "id107" name=
842             "id107">10.2&nbsp;&nbsp;&nbsp;Ipfilter</a></li>
843
844             <li>
845               <a class="reference internal" href=
846               "#progettazione-di-un-firewall" id="id108" name=
847               "id108">10.3&nbsp;&nbsp;&nbsp;Progettazione di un
848               firewall</a>
849
850               <ul class="auto-toc">
851                 <li><a class="reference internal" href=
852                 "#collocazione" id="id109" name=
853                 "id109">10.3.1&nbsp;&nbsp;&nbsp;Collocazione</a></li>
854
855                 <li><a class="reference internal" href=
856                 "#policy-di-default" id="id110" name=
857                 "id110">10.3.2&nbsp;&nbsp;&nbsp;Policy di
858                 default</a></li>
859
860                 <li><a class="reference internal" href="#hardware"
861                 id="id111" name=
862                 "id111">10.3.3&nbsp;&nbsp;&nbsp;Hardware</a></li>
863               </ul>
864             </li>
865
866             <li><a class="reference internal" href=
867             "#percorso-dei-pacchetti-tra-tabelle-e-catene" id=
868             "id112" name="id112">10.4&nbsp;&nbsp;&nbsp;Percorso dei
869             pacchetti tra tabelle e catene</a></li>
870
871             <li>
872               <a class="reference internal" href=
873               "#concetti-di-base" id="id113" name=
874               "id113">10.5&nbsp;&nbsp;&nbsp;Concetti di base</a>
875
876               <ul class="auto-toc">
877                 <li><a class="reference internal" href=
878                 "#tabelle-catene-regole" id="id114" name=
879                 "id114">10.5.1&nbsp;&nbsp;&nbsp;Tabelle, catene,
880                 regole</a></li>
881
882                 <li><a class="reference internal" href="#match" id=
883                 "id115" name=
884                 "id115">10.5.2&nbsp;&nbsp;&nbsp;Match</a></li>
885
886                 <li><a class="reference internal" href="#targets"
887                 id="id116" name=
888                 "id116">10.5.3&nbsp;&nbsp;&nbsp;Targets</a></li>
889               </ul>
890             </li>
891
892             <li><a class="reference internal" href=
893             "#tabella-filter" id="id117" name=
894             "id117">10.6&nbsp;&nbsp;&nbsp;Tabella Filter</a></li>
895
896             <li><a class="reference internal" href=
897             "#flush-automatico-per-macchine-remote" id="id118"
898             name="id118">10.7&nbsp;&nbsp;&nbsp;Flush automatico per
899             macchine remote</a></li>
900
901             <li><a class="reference internal" href=
902             "#gestione-regole-rules" id="id119" name=
903             "id119">10.8&nbsp;&nbsp;&nbsp;Gestione regole
904             (rules)</a></li>
905
906             <li>
907               <a class="reference internal" href=
908               "#salvataggio-regole" id="id120" name=
909               "id120">10.9&nbsp;&nbsp;&nbsp;Salvataggio regole</a>
910
911               <ul class="auto-toc">
912                 <li><a class="reference internal" href=
913                 "#iptables-save" id="id121" name=
914                 "id121">10.9.1&nbsp;&nbsp;&nbsp;Iptables-save</a></li>
915
916                 <li><a class="reference internal" href=
917                 "#iptables-restore" id="id122" name=
918                 "id122">10.9.2&nbsp;&nbsp;&nbsp;Iptables-restore</a></li>
919               </ul>
920             </li>
921
922             <li>
923               <a class="reference internal" href="#esempi" id=
924               "id123" name=
925               "id123">10.10&nbsp;&nbsp;&nbsp;Esempi</a>
926
927               <ul class="auto-toc">
928                 <li><a class="reference internal" href=
929                 "#bloccare-i-ping-dall-esterno" id="id124" name=
930                 "id124">10.10.1&nbsp;&nbsp;&nbsp;Bloccare i ping
931                 dall'esterno</a></li>
932
933                 <li><a class="reference internal" href=
934                 "#masquerading-snat" id="id125" name=
935                 "id125">10.10.2&nbsp;&nbsp;&nbsp;Masquerading
936                 (sNAT)</a></li>
937
938                 <li><a class="reference internal" href=
939                 "#brute-force" id="id126" name=
940                 "id126">10.10.3&nbsp;&nbsp;&nbsp;Brute
941                 force</a></li>
942               </ul>
943             </li>
944
945             <li>
946               <a class="reference internal" href="#proc-filesystem"
947               id="id127" name="id127">10.11&nbsp;&nbsp;&nbsp;Proc
948               filesystem</a>
949
950               <ul class="auto-toc">
951                 <li><a class="reference internal" href=
952                 "#ip-forward" id="id128" name=
953                 "id128">10.11.1&nbsp;&nbsp;&nbsp;ip_forward</a></li>
954
955                 <li><a class="reference internal" href=
956                 "#ip-default-ttl" id="id129" name=
957                 "id129">10.11.2&nbsp;&nbsp;&nbsp;ip_default_ttl</a></li>
958
959                 <li><a class="reference internal" href=
960                 "#ip-local-port-range" id="id130" name=
961                 "id130">10.11.3&nbsp;&nbsp;&nbsp;ip_local_port_range</a></li>
962               </ul>
963             </li>
964           </ul>
965         </li>
966
967         <li>
968           <a class="reference internal" href="#ftp-server" id=
969           "id131" name="id131">11&nbsp;&nbsp;&nbsp;FTP Server</a>
970
971           <ul class="auto-toc">
972             <li><a class="reference internal" href="#id8" id=
973             "id132" name=
974             "id132">11.1&nbsp;&nbsp;&nbsp;Pacchetti</a></li>
975
976             <li><a class="reference internal" href="#sessioni-ftp"
977             id="id133" name="id133">11.2&nbsp;&nbsp;&nbsp;Sessioni
978             ftp</a></li>
979
980             <li><a class="reference internal" href=
981             "#configurazione-iniziale" id="id134" name=
982             "id134">11.3&nbsp;&nbsp;&nbsp;Configurazione
983             iniziale</a></li>
984
985             <li><a class="reference internal" href=
986             "#abilitare-gli-utenti-locali" id="id135" name=
987             "id135">11.4&nbsp;&nbsp;&nbsp;Abilitare gli utenti
988             locali</a></li>
989
990             <li><a class="reference internal" href="#jail-chroot"
991             id="id136" name="id136">11.5&nbsp;&nbsp;&nbsp;Jail
992             chroot</a></li>
993
994             <li><a class="reference internal" href=
995             "#permessi-sul-filesystem" id="id137" name=
996             "id137">11.6&nbsp;&nbsp;&nbsp;Permessi sul
997             filesystem</a></li>
998
999             <li><a class="reference internal" href=
1000             "#shell-dell-utente" id="id138" name=
1001             "id138">11.7&nbsp;&nbsp;&nbsp;Shell
1002             dell'utente</a></li>
1003
1004             <li><a class="reference internal" href="#altre-opzioni"
1005             id="id139" name="id139">11.8&nbsp;&nbsp;&nbsp;Altre
1006             opzioni</a></li>
1007           </ul>
1008         </li>
1009       </ul>
1010     </div>
1011
1012     <p>Generato il 2010-05-19 con: <a class="reference external"
1013     href=
1014     "http://docutils.sourceforge.net/rst.html">http://docutils.sourceforge.net/rst.html</a></p>
1015
1016     <div class="section" id="configurazione-sistema">
1017       <h1><a class="toc-backref" href=
1018       "#id9">1&nbsp;&nbsp;&nbsp;Configurazione sistema</a></h1>
1019
1020       <div class="section" id="solo-per-uso-interno">
1021         <h2><a class="toc-backref" href=
1022         "#id10">1.1&nbsp;&nbsp;&nbsp;Solo per uso interno</a></h2>
1023
1024         <p>Impostazioni di base per la configurazione del sistema
1025         operativo e della rete nel laboratorio 208 facente parte
1026         della rete piffa.net .</p>
1027
1028         <p>Sono qui riportati i parametri della rete locale per
1029         comodita' degli studenti, gli altri lettori possono
1030         considerarli come riferimento per comprendere i valori
1031         espressi nei vari file di configurazione. Ad esempio:
1032         quando leggerete <tt class=
1033         "docutils literal">10.10.208.248:3128</tt> saprete che si
1034         tratta del nostro <em>proxy http</em> in ascolto sulla
1035         porta <cite>3128</cite>, stara' quindi a voi sostituire i
1036         dati con gli equivalenti <em>IP</em> della vostra rete.</p>
1037       </div>
1038
1039       <div class="section" id="rete">
1040         <h2><a class="toc-backref" href=
1041         "#id11">1.2&nbsp;&nbsp;&nbsp;Rete</a></h2>
1042
1043         <p>Parametri della rete attualmente in uso:</p>
1044
1045         <table border="1" class="docutils">
1046           <colgroup>
1047             <col width="45%">
1048             <col width="55%">
1049           </colgroup>
1050
1051           <tbody valign="top">
1052             <tr>
1053               <td colspan="2">Parametri della rete</td>
1054             </tr>
1055
1056             <tr>
1057               <td>rete</td>
1058
1059               <td>10.10.208.0/24</td>
1060             </tr>
1061
1062             <tr>
1063               <td>netmask</td>
1064
1065               <td>255.255.255.0</td>
1066             </tr>
1067
1068             <tr>
1069               <td>broadcast</td>
1070
1071               <td>10.10.208.255</td>
1072             </tr>
1073
1074             <tr>
1075               <td>gateway</td>
1076
1077               <td>10.10.208.248</td>
1078             </tr>
1079
1080             <tr>
1081               <td>DNS</td>
1082
1083               <td>10.10.208.248</td>
1084             </tr>
1085           </tbody>
1086         </table>
1087
1088         <p>Dal server locale degli studeti,
1089         <strong>Bender</strong>, corrispondente all'IP <tt class=
1090         "docutils literal">10.10.208.248</tt>, vengono erogati i
1091         servizi DHCP, DNS, gateway (con NAT), proxy http e mirror
1092         della distribuzione Debian ( <a class="reference external"
1093         href=
1094         "http://debian.piffa.net">http://debian.piffa.net</a>).
1095         Altri servizi in esecuzione sul server:</p>
1096
1097         <ul class="simple">
1098           <li>Rsync server e altri software di aggiornamento /
1099           installazione di massa</li>
1100
1101           <li>Server imap / pop3 / webmail / smtp</li>
1102
1103           <li>Server ssh per i test degli studenti</li>
1104
1105           <li>File server Samba, NFS e controller di qualsiasi
1106           altro FS distribuito</li>
1107
1108           <li>Print server per la gestione delle stampanti</li>
1109
1110           <li>DNS server</li>
1111
1112           <li>Mirror locale delle *.iso dei sistemi operativi e dei
1113           vari software usati durante le lezioni</li>
1114
1115           <li>Spazi web con PHP, MySQL, Postgresql (altri DB o
1116           framework vengono attivati a seconda dei corsi
1117           attivi)</li>
1118         </ul>
1119
1120         <p>Durante il corso delle lezioni e' opportuno che le
1121         macchine degli studenti si appoggino al server Bender
1122         (ottetto finale <tt class="docutils literal">248</tt>), nel
1123         caso questo non fosse raggiungibile (ad esempio per
1124         permettere impostazioni di DHCP / routing diverse) sara'
1125         comunque disponibile il <tt class=
1126         "docutils literal">10.10.208.254</tt> come gateway | DNS
1127         per la rete <tt class=
1128         "docutils literal">10.10.208.10</tt>.</p>
1129
1130         <p><strong>Non e' piu' possibile</strong> raggiungere
1131         Bender tramite l'IP pubblico <tt class=
1132         "docutils literal">212.22.136.248</tt> o <em>qualsiasi
1133         altro ip</em> della classe <tt class="docutils literal">C
1134         212.22.136.0/24</tt> precedentemente disponibile.</p>
1135
1136         <p>Il computer del docente con il server VNC e' sempre
1137         configurato con l'ottetto finale: <tt class=
1138         "docutils literal">177</tt> della rete utilizzata durante
1139         le lezioni (quindi generalmente la VNC sara' disponibile
1140         sul <tt class="docutils literal">10.10.208.177:1</tt>.</p>
1141
1142         <p>Gli studenti sono pregati di non impedire l'accesso SSH
1143         alla propria macchina dal computer del docente, e non
1144         modificare la password dell'utente <tt class=
1145         "docutils literal">root</tt> del sistema operativo
1146         <em>pre-istallato</em> (ad es: <em>Diurno</em>).</p>
1147
1148         <div class="section" id="interfaces">
1149           <h3><a class="toc-backref" href=
1150           "#id12">1.2.1&nbsp;&nbsp;&nbsp;interfaces</a></h3>
1151
1152           <p>Segue un esempio del file di configurazione della
1153           scheda di rete con configurazione statica:</p>
1154
1155           <p>/etc/network/interfaces:</p>
1156           <pre class="literal-block">
1157 # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
1158
1159 # The loopback interface
1160 iface lo inet loopback
1161
1162 # La prima scheda di rete (se si chiama eth0)
1163 iface etho inet static
1164   # esempio con dhcp:
1165   # iface etho inet dhcp
1166 address 10.10.208.101
1167 netmask 255.255.255.0
1168 network 10.10.208.0
1169 broadcast 10.10.208.255
1170 gateway 10.10.208.254
1171
1172 # Quali interfaccie devono partire automaticamente:
1173 auto lo eth0
1174 </pre>
1175
1176           <p>Controllare il nome della propria scheda di rete: a
1177           volte <em>udev</em> rinomina la prima scheda a <tt class=
1178           "docutils literal">eth1</tt>, oppure potreste avere piu'
1179           di una scheda di rete (anche un'interfaccia
1180           <em>firewire</em> puo' essere automaticamente abilitata
1181           come scheda di rete).</p>
1182
1183           <p>Se si usano <em>schede di rete virtuali</em> ( eth0:1
1184           , eth0:1 , ...) ricordarsi che queste dipendono dalla
1185           scheda fisica a cui sono associate: abbattere con
1186           <tt class="docutils literal">ifconfig down eth0</tt> la
1187           scheda principale fara' cadere anche queste. Tornando ad
1188           attivare la scada principale con <tt class=
1189           "docutils literal">ifconfig eth0 up</tt> la virtuale
1190           tornera' attiva: nel caso voleste disabilitarla dovrete
1191           quindi sempre abbattere manualmente la scheda virtuale
1192           <em>prima</em> della scheda reale.</p>
1193
1194           <p>I DNS vanno indicati nel file <tt class=
1195           "docutils literal">/etc/resolv.conf</tt> , la cui
1196           sintassi e' spiegata al punto 4.6 . Come DNS si
1197           <em>deve</em> usare il server Bender, alcuni parametri
1198           dei software di installazione, risoluzione dei mirror,
1199           vengono opportunamente modificatia da questo DNS.</p>
1200         </div>
1201       </div>
1202
1203       <div class="section" id="bash-completion">
1204         <h2><a class="toc-backref" href=
1205         "#id13">1.3&nbsp;&nbsp;&nbsp;Bash completion</a></h2>
1206
1207         <p>Il completamento automatico della shell (che si attiva
1208         premendo il tasto tab una o due volte mentre si sta
1209         scrivendo un termine) permette di comporre automaticamente
1210         i nomi dei comandi e i percorsi dei file, sopratutto la
1211         composizione automatica dei percorsi dei file e' di grande
1212         importanza.</p>
1213
1214         <p>Bash_completion permette di integrare il completamento
1215         automatico con i nomi dei pacchetti e oggetti dei comandi:
1216         ad es. volendo digitare <tt class=
1217         "docutils literal"><span class="pre">apt-get</span>
1218         inst[TAB] xtigh[TAB]</tt> ora verra' completato
1219         automaticamente sia la parola <tt class=
1220         "docutils literal">install</tt> che il nome del pacchetto
1221         <tt class="docutils literal">xtightvncviewer</tt>.</p>
1222
1223         <p>Abilitare /etc/bash_completion nel file <tt class=
1224         "docutils literal">/etc/bash.bashrc</tt> oppure includerlo
1225         nel proprio <tt class="docutils literal"><span class=
1226         "pre">~/.bashrc</span></tt> (che sarebbe il file
1227         <em>nascosto</em>, quindi con un punto all'inizio del nome
1228         del file, di configurazione della shell bash per ogni
1229         utente, presente nella propria <em>home
1230         directory</em>):</p>
1231         <pre class="literal-block">
1232 echo ". /etc/bash_completion" &gt;&gt; ~/.bashrc
1233 </pre>
1234
1235         <p>Esempio di ~/.bahsrc</p>
1236         <pre class="literal-block">
1237 # ~/.bashrc: executed by bash(1) for non-login shells.
1238
1239 export PS1='\h:\w\$ '
1240 umask 022
1241
1242 # De-commentare le seguenti righe per abilitare la colorazione dei
1243 # nomi dei file:
1244  export LS_OPTIONS='--color=auto'
1245  eval "`dircolors`"
1246  alias ls='ls $LS_OPTIONS'
1247  alias ll='ls $LS_OPTIONS -l'
1248  alias l='ls $LS_OPTIONS -lA'
1249
1250 # Abilitare i seguenti alias per impostare la conferma per cancellare file
1251 # alias rm='rm -i'
1252 # alias cp='cp -i'
1253 # alias mv='mv -i'
1254
1255 # questo abilita bash completion
1256 . /etc/bash_completion
1257 </pre>
1258
1259         <p>Il file <tt class=
1260         "docutils literal">/etc/bash_completion</tt> deve essere
1261         presente nel sistema, in caso contrario installare il
1262         pacchetto: <tt class="docutils literal"><span class=
1263         "pre">bash-completion</span></tt>. Generalmente l'utente
1264         <tt class="docutils literal">root</tt> ha un file
1265         <tt class="docutils literal">.bashrc</tt> preimpostato
1266         analogo a quello citato sopra, a differenza dei normali
1267         utenti di sistema.</p>
1268
1269         <p>Links:</p>
1270
1271         <ul class="simple">
1272           <li><a class="reference external" href=
1273           "http://www.debian-administration.org/articles/316">An
1274           introduction to bash completion</a></li>
1275
1276           <li><a class="reference external" href=
1277           "http://www.caliban.org/bash/">Working more productively
1278           with bash 2.x/3.x</a></li>
1279
1280           <li>UNIX / Linux Shell Scripting Tutorial: <a class=
1281           "reference external" href=
1282           "http://steve-parker.org/sh/sh.shtml">http://steve-parker.org/sh/sh.shtml</a></li>
1283         </ul>
1284       </div>
1285
1286       <div class="section" id="vim">
1287         <h2><a class="toc-backref" href=
1288         "#id14">1.4&nbsp;&nbsp;&nbsp;Vim</a></h2>
1289
1290         <p>Vim e' l'editor di testo preferito dai sistemisti,
1291         quindi sara' conveniente impostare fin da subito alcune
1292         impostazioni per renderlo piu' comodo.</p>
1293
1294         <p>Assicurarsi che sia installata nel sistema la versione
1295         completa dell'editor installando il pacchetto <tt class=
1296         "docutils literal">vim</tt>:</p>
1297         <pre class="literal-block">
1298 # apt-get install vim
1299 </pre>
1300
1301         <p>Modificare poi il file di configurazione generale
1302         <tt class="docutils literal">/etc/vim/vimrc</tt></p>
1303         <pre class="literal-block">
1304 " All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
1305 " /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
1306 " you can find below.  If you wish to change any of those settings, you should
1307 " do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
1308 " everytime an upgrade of the vim packages is performed.  It is recommended to
1309 " make changes after sourcing debian.vim since it alters the value of the
1310 " 'compatible' option.
1311
1312 " This line should not be removed as it ensures that various options are
1313 " properly set to work with the Vim-related packages available in Debian.
1314 runtime! debian.vim
1315
1316 " Uncomment the next line to make Vim more Vi-compatible
1317 " NOTE: debian.vim sets 'nocompatible'.  Setting 'compatible' changes numerous
1318 " options, so any other options should be set AFTER setting 'compatible'.
1319 "set compatible
1320
1321 " Vim5 and later versions support syntax highlighting. Uncommenting the next
1322 " line enables syntax highlighting by default.
1323 syntax on
1324
1325 " If using a dark background within the editing area and syntax highlighting
1326 " turn on this option as well.
1327 set background=dark
1328
1329 " Uncomment the following to have Vim jump to the last position when
1330 " reopening a file
1331
1332 if has("autocmd")
1333   au BufReadPost * if line("'\"") &gt; 0 &amp;&amp; line("'\"") &lt;= line("$")
1334     \| exe "normal! g'\"" | endif
1335 endif
1336
1337 " Uncomment the following to have Vim load indentation rules and plugins
1338 " according to the detected filetype.
1339 " This is not recommanded if you often copy and paste into vim,
1340 " as it messes all the indentation.
1341 if has("autocmd")
1342   filetype plugin indent on
1343 endif
1344
1345 " This goes for comments folding: use co to expnad and zc to compress,
1346 " zi to toggle on/off
1347 set fdm=expr
1348 set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
1349
1350 " The following are commented out as they cause vim to behave a lot
1351 " differently from regular Vi. They are highly recommended though.
1352 set showcmd             " Show (partial) command in status line.
1353 "set showmatch          " Show matching brackets.
1354 # Ignorecase is quite userfull
1355 set ignorecase          " Do case insensitive matching
1356 "set smartcase          " Do smart case matching
1357 "set incsearch          " Incremental search
1358 set autowrite           " Automatically save before commands like :next and :make
1359 "set hidden             " Hide buffers when they are abandoned
1360 "set mouse=a            " Enable mouse usage (all modes) in terminals
1361
1362 " Source a global configuration file if available
1363 " XXX Deprecated, please move your changes here in /etc/vim/vimrc
1364 if filereadable("/etc/vim/vimrc.local")
1365   source /etc/vim/vimrc.local
1366 endif
1367 </pre>
1368
1369         <p>I principianti faranno bene ad esercitarsi con
1370         <tt class="docutils literal">vimtutor it</tt>.</p>
1371
1372         <p>Altri link per VIM:</p>
1373
1374         <ul class="simple">
1375           <li>Vim Introduction and Tutorial: <a class=
1376           "reference external" href=
1377           "http://blog.interlinked.org/tutorials/vim_tutorial.html">
1378           http://blog.interlinked.org/tutorials/vim_tutorial.html</a></li>
1379
1380           <li><a class="reference external" href=
1381           "http://blog.smr.co.in/category/vim/">http://blog.smr.co.in/category/vim/</a></li>
1382
1383           <li><a class="reference external" href=
1384           "http://vimdoc.sourceforge.net/">http://vimdoc.sourceforge.net/</a></li>
1385         </ul>
1386       </div>
1387
1388       <div class="section" id="vnc">
1389         <h2><a class="toc-backref" href=
1390         "#id15">1.5&nbsp;&nbsp;&nbsp;VNC</a></h2>
1391
1392         <p>I Virtual Network Computing (o VNC) sono software di
1393         controllo remoto e servono per amministrare un computer a
1394         distanzai. Nel nostro caso la VNC sara' utilizzata per
1395         visualizzare la sessione di lavoro di un altro computer sul
1396         proprio a scopo didattico.</p>
1397
1398         <p>Per collegarvi al server del docente usate lo script
1399         <tt class="docutils literal">guarda.sh</tt> che dovrebbe
1400         gia essere disponibili sui sistemi preconfigurati, oppure
1401         potete invocare direttamente il collegamento con:</p>
1402         <pre class="literal-block">
1403 xtightvncviewer -viewonly 10.10.208.177:1
1404 </pre>
1405
1406         <p>Se il comando non fosse disponibile installate il
1407         pacchetto <tt class=
1408         "docutils literal">xtightvncviewer</tt>. Potete anche
1409         scaricare lo script <tt class=
1410         "docutils literal">guarda.sh</tt> e renderlo eseguibile, ed
1411         eventualmente creare una voce nel menu di KDE per
1412         richiamarlo.</p>
1413
1414         <p>Procedura:</p>
1415         <pre class="literal-block">
1416 su root
1417 cd /usr/local/bin
1418 wget http://bender/guarda.sh
1419 chmod +x guarda.sh
1420 exit
1421 </pre>
1422
1423         <p>Per eseguire lo script digitare semplicemente <tt class=
1424         "docutils literal">guarda.sh</tt>, oppure creare un link /
1425         collegamento sul Desktop allo script <tt class=
1426         "docutils literal">/usr/local/bin/guarda.sh</tt>.</p>
1427
1428         <p>Le impostazioni del server VNC sono:</p>
1429
1430         <table border="1" class="docutils">
1431           <colgroup>
1432             <col width="55%">
1433             <col width="45%">
1434           </colgroup>
1435
1436           <thead valign="bottom">
1437             <tr>
1438               <th class="head">Parametro</th>
1439
1440               <th class="head">Valore</th>
1441             </tr>
1442           </thead>
1443
1444           <tbody valign="top">
1445             <tr>
1446               <td>IP</td>
1447
1448               <td>10.10.208.177:1</td>
1449             </tr>
1450
1451             <tr>
1452               <td>Server grafico</td>
1453
1454               <td>:1</td>
1455             </tr>
1456
1457             <tr>
1458               <td>password</td>
1459
1460               <td>password</td>
1461             </tr>
1462           </tbody>
1463         </table>
1464
1465         <p>Si noti che non e' possibile lanciare un applicativo sul
1466         server grafico di un utente da una shell in cui si sta
1467         lavorando come altro utente, anche se root. E' quindi
1468         necessario essere l'utente di sistema che si e' loggato
1469         inizialmente nella sessione grafica per poter lanciare lo
1470         script guarda.sh da una shell.</p>
1471
1472         <p>Controllare con <tt class="docutils literal">whoami</tt>
1473         di essere l'utente normale (es <tt class=
1474         "docutils literal">utente | studente | proprio nome</tt> ),
1475         in caso si sia assunta una altra <tt class=
1476         "docutils literal">id</tt> si apra un altra shell o si esca
1477         da quella attuale con <tt class=
1478         "docutils literal">exit</tt> .</p>
1479       </div>
1480
1481       <div class="section" id="lista-dei-pacchetti-di-base">
1482         <h2><a class="toc-backref" href=
1483         "#id16">1.6&nbsp;&nbsp;&nbsp;Lista dei pacchetti di
1484         base</a></h2>
1485
1486         <p>I pacchetti installati generalmente <a class=
1487         "footnote-reference" href="#id2" id="id1" name=
1488         "id1">[1]</a> per poter seguire le lezioni sono:</p>
1489         <pre class="literal-block">
1490 kde-core kdm kde-i18n-it xorg vim less xtightvncviewer
1491 </pre>
1492
1493         <table class="docutils footnote" frame="void" id="id2"
1494         rules="none">
1495           <colgroup>
1496             <col class="label">
1497             <col>
1498           </colgroup>
1499
1500           <tbody valign="top">
1501             <tr>
1502               <td class="label"><a class="fn-backref" href=
1503               "#id1">[1]</a></td>
1504
1505               <td><tt class="docutils literal"><span class=
1506               "pre">kde-core</span></tt> e' piu' leggero del
1507               pacchetto <tt class="docutils literal">kde</tt>.
1508               Esiste un equivalente <tt class=
1509               "docutils literal"><span class=
1510               "pre">gnome-core</span></tt> per chi preferisce
1511               Gnome, nel caso si potrebbe installare il log-in
1512               manager <cite>gdm</cite> al posto di
1513               <cite>kdm</cite>.</td>
1514             </tr>
1515           </tbody>
1516         </table>
1517       </div>
1518
1519       <div class="section" id="apt-configurazione">
1520         <h2><a class="toc-backref" href=
1521         "#id17">1.7&nbsp;&nbsp;&nbsp;Apt configurazione</a></h2>
1522
1523         <p>Vediamo i due file principali di apt:</p>
1524
1525         <ul class="simple">
1526           <li><tt class=
1527           "docutils literal">/etc/apt/sources.list</tt></li>
1528
1529           <li><tt class=
1530           "docutils literal">/etc/apt/apt.conf</tt></li>
1531         </ul>
1532
1533         <div class="section" id="sources-list">
1534           <h3><a class="toc-backref" href=
1535           "#id18">1.7.1&nbsp;&nbsp;&nbsp;sources.list</a></h3>
1536
1537           <p>Questo file contiene i sorgenti da cui <em>apt</em>
1538           preleva i pacchetti da installare tramite <em>dpkg</em>,
1539           vengono quindi precisati i metodi (ad es. http / ftp /
1540           cdrom / file), la release che si vuole tracciare (es
1541           <tt class="docutils literal">stable, testing,
1542           unstable</tt> oppure i corrispondenti release name es:
1543           <tt class="docutils literal">Lenny, Squeeze, Sid</tt>), i
1544           rami di interesse (es: <tt class=
1545           "docutils literal">main</tt> che e' l'archivio
1546           principale, <tt class="docutils literal"><span class=
1547           "pre">non-free</span></tt> per il software non libero,
1548           <tt class="docutils literal">contrib</tt> per i pacchetti
1549           non realizzati dai manutentori ufficiali).</p>
1550
1551           <p>Gli archivi sono generalmente:</p>
1552
1553           <ul class="simple">
1554             <li><tt class="docutils literal">deb</tt> per pacchetti
1555             Debian binari, pronti per l'installazione.</li>
1556
1557             <li><tt class="docutils literal"><span class=
1558             "pre">deb-src</span></tt> per i pacchetti sorgenti
1559             (quindi da compilare, come il kernel) degli stessi
1560             pacchetti binari. In genere se non compilate spesso
1561             potete evitare di tracciare i sorgenti per risparmiare
1562             tempo e banda.</li>
1563           </ul>
1564
1565           <p><tt class=
1566           "docutils literal">/etc/apt/sources.list</tt></p>
1567           <pre class="literal-block">
1568 # esempio di accesso a un CDROM:
1569 # cdrom:[Debian GNU/Linux 5.0.1 _Lenny_ - Official i386 kde-CD Binary-1 20090$
1570
1571 # ftp.it.debian.org viene rediretto su un mirror interno
1572 # quando vi trovate nella rete interna piffa.net
1573 deb http://ftp.it.debian.org/debian/ lenny main
1574 # Sono disponibili anche i rami non-free contrib
1575 # deb http://ftp.it.debian.org/debian/ lenny  non-free contrib
1576 # Sono disponibili anche le release unstable e testing
1577 # deb http://ftp.it.debian.org/debian/ testing  main non-free contrib
1578 # deb http://ftp.it.debian.org/debian/ sid  main non-free contrib
1579
1580 # Sorgenti dei pacchetti:
1581 # deb-src http://ftp.bononia.it/debian/ lenny main
1582
1583 # Mirror da kernel.org europa da usare a casa:
1584 deb http://mirrors.eu.kernel.org/debian/ lenny main
1585
1586 # Security dal sito principale
1587 deb http://security.debian.org/ lenny/updates main
1588 # deb-src http://security.debian.org/ lenny/updates main
1589
1590 # Debian volatile per i pacchetti soggetti a frequanti cambiamenti
1591 # non legati a dinamiche di sicurezza
1592 deb http://volatile.debian.org/debian-volatile Lenny/volatile main
1593 # deb-src http://volatile.debian.org/debian-volatile Lenny/volatile main
1594
1595 # Esempio di accesso a un file system locale contenente i pacchetti:
1596 # Potete scaricarei in aula con debmirror  da debian.piffa.net
1597 # un mirror locale da usare poi a casa anche senza internet
1598 # deb file:/mnt/mirror sid main non-free contrib
1599 </pre>
1600         </div>
1601
1602         <div class="section" id="etc-apt-apt-conf">
1603           <h3><a class="toc-backref" href=
1604           "#id19">1.7.2&nbsp;&nbsp;&nbsp;/etc/apt/apt.conf</a></h3>
1605
1606           <p>Questo file contiene le opzioni di apt, come ad
1607           esempio il proxy:</p>
1608           <pre class="literal-block">
1609 Acquire::http::Proxy "http://10.10.208.248:3128";
1610 </pre>
1611
1612           <p>Si tenga conto che se si imposta un proxy per apt sul
1613           proprio portatile e tornati a casa propria si vuole
1614           scaricare nuovi pacchetti si dovra' disabilitare il proxy
1615           commentando la riga con ";" (''punto-e-virgola''). Su un
1616           portatile vi conviene tracciare il mirror <tt class=
1617           "docutils literal">ftp.it.debian.org</tt> senza impostare
1618           il proxy: in aula verra' rediretto al mirror locale e a
1619           casa vi appoggerete al mirror ufficiale.</p>
1620
1621           <p>E' consigliabile impostare il proxy per apt anche in
1622           presenza di un proxy-http <em>trasparente</em>.</p>
1623         </div>
1624       </div>
1625     </div>
1626
1627     <div class="section" id="squid">
1628       <h1><a class="toc-backref" href=
1629       "#id20">2&nbsp;&nbsp;&nbsp;Squid</a></h1>
1630
1631       <p>Squid e' un proxy cache http (ma puo' anche gestire i
1632       protocolli FTP e https) robusto e strutturato, grazie alla
1633       sua flessibilita' puo' essere utilizzato sia in piccole reti
1634       locali che in scenari piu' complessi. E' molto semplice
1635       configurarlo per la semplice <em>condivisione della
1636       navigazione internet</em> all'interno di una rete locale, per
1637       poi poter sucessivamente implementare la autenticazione degli
1638       utenti, il filtraggio dei contenuti (Squid e' una
1639       applicazione che si muove nel 4' livello del modello TCP/IP a
1640       differenza di un <em>ipfilter</em> limitato al 2'), il
1641       bilanciamento del carico tra piu' server proxy.</p>
1642
1643       <p>Se il server Squid e' in grado di accedere a internet
1644       puor' permette la navigazione web a una rete basata su
1645       indirizzi IP privati (es una 192.168.0.0/24). E se la rete
1646       privata deve solo navigare in internet, non serve introdurre
1647       nella rete un NAT (si veda la sezione sui firewall) per
1648       condividere la connessione: basta il solo Squid. Per altro
1649       non servira' neanche un servizio DNS accessibile dai clients
1650       dato che sara' il solo Squid a risolvere i nomi di dominio
1651       per i suoi client http.</p>
1652
1653       <p>Inoltre Squid svolge la funzione di <em>anonymizer</em>:
1654       nasconde i client http alla rete internet: e' solo il server
1655       proxy ad accedere ai server web frequentati dai client:
1656       questi non sono percepiti ed esposti all'esterno della rete
1657       locale ma si relazionano solo con Squid. Dal punto di vista
1658       della sicurezza della rete locale questo e' preferibile ad un
1659       approccio alla navigazione basato su NAT.</p>
1660
1661       <p>Squid ascolta di default sulla porta <tt class=
1662       "docutils literal">3128</tt>, per quanto in genere la porta
1663       preferita per i servizi di caching http sia la <tt class=
1664       "docutils literal">8080</tt>. Per utilizzarlo subito anche
1665       per apt si aggiunga ad <tt class=
1666       "docutils literal">/etc/apt/apt.conf</tt></p>
1667       <pre class="literal-block">
1668 Acquire::http::Proxy "10.10.208.254:3128";
1669 </pre>
1670
1671       <p>Per installare Squid si usi il pacchetto:</p>
1672       <pre class="literal-block">
1673 squid3
1674 </pre>
1675
1676       <div class="section" id="configurazione-squid-conf">
1677         <h2><a class="toc-backref" href=
1678         "#id21">2.1&nbsp;&nbsp;&nbsp;Configurazione:
1679         squid.conf</a></h2>
1680
1681         <p>egue un estratto delle direttive principali viste in
1682         aula presenti nel file di configurazione <tt class=
1683         "docutils literal">/etc/squid3/squid.conf</tt> .</p>
1684
1685         <div class="section" id="cache-dir">
1686           <h3><a class="toc-backref" href=
1687           "#id22">2.1.1&nbsp;&nbsp;&nbsp;Cache_dir</a></h3>
1688
1689           <p>Cache dir serve per impostare caratteristiche
1690           fondamentali della cache creata sul supporto di storaggio
1691           quali dimensione e percorso nel file-system. Essendo la
1692           dimensione di default della cache pari a ~``100 MB`` e'
1693           altamente consigliabili aumentare questo parametro se si
1694           vuole godere dei vantaggi della funzione di cache per
1695           piu' clients.</p>
1696
1697           <p>Per stabilire il dimensionamento della cache si tenga
1698           conto dello spazio disponibile, dimensioni tipiche e
1699           massime degli oggetti che si vuole tenere in cache (un
1700           solo file .iso occupa circa <tt class=
1701           "docutils literal">700 MB</tt>, il pacchetto
1702           Openoffice.org circa 150 MB, un pacchetto Debian circa 20
1703           MB), e in fine del numero dei client.</p>
1704
1705           <p>Si presti poi attenzione alla natura dei dati che
1706           saranno salvati nella cache: sono tutti dati facilmente
1707           sostituibili (gli originali sono on-line) la cui perdita
1708           causerebbe solo la necessita' di ripopolare la cache.
1709           Questo rende la cache di Squid un possibile candidato ad
1710           un RAID stirpe (livello 0) a ad un file system che
1711           prediliga le performance a scapito della consistenza, con
1712           vantaggi sia per le prestazioni (e la velocita' di
1713           navigazione e' uno dei motivi per cui si installa Squid)
1714           che per l'utilizzo estensivo dello spazio di
1715           storaggio.</p>
1716
1717           <p>Questo fino al momento in cui per voi non sia piu'
1718           importante garantire la disponibilita' del servizio: se
1719           il RAID stripe dovesse rompersi gli utenti non potrebbero
1720           piu' navigare, cosa che per natura dello stripe e' piu'
1721           probabile rispetto ad un filesytem normale.</p>
1722
1723           <div class="section" id="opzioni-del-file-system">
1724             <h4><a class="toc-backref" href=
1725             "#id23">2.1.1.1&nbsp;&nbsp;&nbsp;Opzioni del file
1726             system</a></h4>
1727
1728             <p>I dati che compongono la cache vengono salvati sul
1729             filesytem del server dietro richiesta dei client http
1730             degli utenti della rete locale. Come per i servizi di
1731             file sharing o per la posta elettronica non c'e' motivo
1732             che il filesystem su cui sono ospitati questi dati
1733             abbiano i privilegi di eseguibilita' o suid (in genere
1734             si possono anche usare opzioni come noatime per rendere
1735             i file-systems piu' veloci, scegliere di utilizzare un
1736             journal dipende dalla dimesione della cache dalle
1737             preferenze: affidabilita' oppure prestazioni):</p>
1738
1739             <p>/etc/fstab</p>
1740             <pre class="literal-block">
1741 ...
1742 # Filesystem per Squid http cache
1743 /dev/md3/       /var/spool/squid/       ext2,noexec,nosuid,noatime  0 3
1744 </pre>
1745           </div>
1746         </div>
1747
1748         <div class="section" id="configurazioni-di-cache-dir">
1749           <h3><a class="toc-backref" href=
1750           "#id24">2.1.2&nbsp;&nbsp;&nbsp;Configurazioni di
1751           Cache_dir</a></h3>
1752
1753           <p>Ora possiamo impostare la cache nel file di
1754           configurazione <tt class=
1755           "docutils literal">/etc/squid3/squid.conf</tt>:</p>
1756           <pre class="literal-block">
1757 #TAG: cache_dir (riga 1628)
1758 #       Usage:
1759 #
1760 #       cache_dir Type Directory-Name Fs-specific-data [options]
1761 #
1762 #       You can specify multiple cache_dir lines to spread the
1763 #       cache among different disk partitions.
1764 #       ...
1765 #Default:
1766 # cache_dir ufs /var/spool/squid3 100 16 256
1767 cache_dir aufs /var/spool/squid3 300 24 256
1768 #         |    |                 |   |  secondo livello di directory
1769 #         |    |                 |   directory primo livello
1770 #         |    |                 dimensione in MB
1771 #         |    path della cache
1772 #         algoritmo
1773 </pre>
1774
1775           <p>Se si modifica la struttura della cache di Squid, ad
1776           esempio variando il numero delle directory, puo' essere
1777           opportuno cancellare e rigenerare la cache. Tipicamente
1778           e' consigliabile cancellare (se si ha ridotto il numero
1779           delle directory) la vecchia cache e poi generare una
1780           nuova struttura. Se si vuole star nel sicuro ogni volta
1781           che si modifica l'impostazione delle directory si svuoti
1782           la vecchia cache e se ne generi una nuova:</p>
1783           <pre class="literal-block">
1784 # /etc/init.d/squid3 stop
1785 # rm -r /var/spool/squid3/??
1786 # squid3 -z
1787 # /etc/init.d/squid3 start
1788 </pre>
1789         </div>
1790
1791         <div class="section" id="tag-maximum-object-size">
1792           <h3><a class="toc-backref" href=
1793           "#id25">2.1.3&nbsp;&nbsp;&nbsp;TAG:
1794           maximum_object_size</a></h3>
1795
1796           <p>Questa direttiva imposta la dimensione massima degli
1797           oggetti che vengono salvati sul supporto di storaggio,
1798           oggetti di dimensioni superiori saranno comunque
1799           scaricati ma non tenuti in cache.</p>
1800
1801           <p>TAG: maximum_object_size (1760):</p>
1802           <pre class="literal-block">
1803 # TAG: maximum_object_size (1760)
1804 #       Objects larger than this size will NOT be saved on disk.  The
1805 #       value is specified in kilobytes, and the default is 4MB.  If
1806 #       you wish to get a high BYTES hit ratio, you should probably
1807 #       increase this (one 32 MB object hit counts for 3200 10KB
1808 #       hits).  If you wish to increase speed more than your want to
1809 #       save bandwidth you should leave this low.
1810 #
1811 #       NOTE: if using the LFUDA replacement policy you should increase
1812 #       this value to maximize the byte hit rate improvement of LFUDA!
1813 #       See replacement_policy below for a discussion of this policy.
1814 #
1815 #Default:
1816 # maximum_object_size 4096 KB
1817 maximum_object_size 150 MB
1818 </pre>
1819         </div>
1820
1821         <div class="section" id="tag-cache-mem">
1822           <h3><a class="toc-backref" href=
1823           "#id26">2.1.4&nbsp;&nbsp;&nbsp;TAG: cache_mem</a></h3>
1824
1825           <p><strong>Cache_mem</strong> imposta quanta memoria RAM
1826           venga dedicata alla cache di Squid. Si consideri non solo
1827           quanta RAM sia disponibile sul sistema, ma anche quale
1828           sia l'utilizzo tipico di questo: altri servizi
1829           fondamentali necessitano di molta memoria?</p>
1830
1831           <p>Questo parametro per altro influisce sulle prestazioni
1832           e sul degrado dei supporti di storaggio (sopratutto se
1833           magnetici). Ad esempio se si stanno utilizzando dischi
1834           rigidi esterni USB per la cache sara' preferibile cercare
1835           di usare quanta piu' RAM possibile per evitare il
1836           sovraccarico computazionale dovuto alla gestione dello
1837           stack USB, fenomeno evidente sui sistemi embedded come
1838           NAS.</p>
1839
1840           <p>Se si stesse pensando di usare dell'hardware
1841           <em>embedded</em> a basse prestazioni / consumo per
1842           realizzare un server gateway / NAT / Squid si tenga
1843           presente che Squid e' relativamente esoso di risorse
1844           rispetto agli altri servizi: avra' bisogno di <tt class=
1845           "docutils literal">~25MB</tt> (MegaByte) di RAM e
1846           <em>~150MHZ di CPU ARM</em> per servire decorosamente una
1847           decina di client http su una rete ethernet 10/100. In
1848           questo caso non fate scendere <tt class=
1849           "docutils literal">cache_mem</tt> sotto i <tt class=
1850           "docutils literal">2/4 MB</tt> pena un accesso continuo
1851           al supporto di storaggio.</p>
1852
1853           <p>Se invece si disponesse di una macchina dedicata a
1854           Squid con gigabytes di RAM non si esiti a dedicarne buona
1855           parte a <em>cache_mem</em>.</p>
1856
1857           <p>TAG: cache_mem (1566):</p>
1858           <pre class="literal-block">
1859 #       'cache_mem' specifies the ideal amount of memory to be used
1860 #       for:
1861 #               * In-Transit objects
1862 #               * Hot Objects
1863 #               * Negative-Cached objects
1864 #Default:
1865 # cache_mem 8 M
1866 cache_mem 100 M
1867 </pre>
1868         </div>
1869
1870         <div class="section" id="tag-minimum-object-size">
1871           <h3><a class="toc-backref" href=
1872           "#id27">2.1.5&nbsp;&nbsp;&nbsp;TAG:
1873           minimum_object_size</a></h3>
1874
1875           <p>Questo parametro imposta la dimensione minima degli
1876           oggetti salvati nella cache. Settato a <tt class=
1877           "docutils literal">0</tt> o a valori molto piccoli puo'
1878           influire negativamente sulla frammentazione del filesytem
1879           e consumare un numero elevato di <em>inode</em> (cosa non
1880           piu' importante con ext4 o altri filesytem).</p>
1881
1882           <p>In scenari con connessioni molto veloci ( &gt;~10Mb),
1883           pochi client (una decina) e server poco performanti nella
1884           velocita' di accesso ai filesystem ( ~20MB/s, per quanto
1885           il limte sia piuttosto il <em>seek-time</em> ) tenere in
1886           cache i file piu' piccoli finisce per aumentare la
1887           latenza della navigazione.</p>
1888
1889           <p>TAG: minimum_object_size:</p>
1890           <pre class="literal-block">
1891 #  TAG: minimum_object_size     (bytes)
1892 #       Objects smaller than this size will NOT be saved on disk.  The
1893 #       value is specified in kilobytes, and the default is 0 KB, which
1894 #       means there is no minimum.
1895 #
1896 #Default:
1897 # minimum_object_size 0 KB
1898 minimum_object_size 0 KB
1899 </pre>
1900         </div>
1901       </div>
1902
1903       <div class="section" id=
1904       "negoziazione-degli-accesi-al-servizio">
1905         <h2><a class="toc-backref" href=
1906         "#id28">2.2&nbsp;&nbsp;&nbsp;Negoziazione degli accesi al
1907         servizio</a></h2>
1908
1909         <p>Squid fa parte di quei servizi suscettibili di diventare
1910         un open relay, sara' quindi necessario prestare attenzione
1911         a delimitare la rete che puo' accedere al servizio.</p>
1912
1913         <dl class="docutils">
1914           <dt>Open Relay:</dt>
1915
1916           <dd>Un servizio a cui possono accedere tutti
1917           indiscriminatamente. La cosa puo' andare bene per servizi
1918           come i server web, che aspirano per loro natura al
1919           maggior numero possibile di utenti, ma non a servizi come
1920           i proxy http oppure ai server di posta elettronica
1921           (adibiti ai soli utenti della rete locale).</dd>
1922         </dl>
1923
1924         <p>Generalmente non volete che il vostro proxy http venga
1925         usato da persone sconosciute ed esterne alla vostra rete,
1926         le quali sostanzialmente <em>navigherebbero sotto
1927         l'identita' del vostro proxy</em> (probabilmente per
1928         visionare materiali che non vorrebbero fossero ricondotti
1929         direttamente a loro) generando traffico e consumando banda
1930         della vostra connessione a internet. Tenere Squid in
1931         modalita' <em>Open relay</em> e' al giorno d'oggi un buon
1932         modo per essere inseriti in una <em>black list</em>.</p>
1933
1934         <p>Per poter limitare gli accessi a Squid dal punto di
1935         vista dell'applicazione (quarto livello TCP/IP) si
1936         identifichera' inizialmente l'entita' <em>rete locale</em>
1937         (es: <tt class="docutils literal">localnet</tt>) con una
1938         ACL di tipo <em>src</em> (indirizzi IP sorgenti) indicando
1939         la <em>classe / range di IP</em> della nostra rete.</p>
1940
1941         <blockquote>
1942           Dopodiche l'accesso (<tt class=
1943           "docutils literal">http_access</tt>) si concedera'
1944           (<em>allow</em>) a questa entita' (es: <tt class=
1945           "docutils literal">localnet</tt>) negando chiunque altro.
1946         </blockquote>
1947
1948         <p>Per maggiori dettagli sulla sintassi utilizzabile per
1949         esprimere i range di IP: <a class="reference external"
1950         href="http://www.visolve.com/squid/squid24s1/access_controls.php">
1951         http://www.visolve.com/squid/squid24s1/access_controls.php</a></p>
1952
1953         <p>E' poi sempre possibile tenere il proxy in ascolto su un
1954         solo indirizzo IP, nel caso si disponga di piu' device di
1955         rete, oppure settare un IP firewall per limitare il
1956         traffico in base al protocollo IP.</p>
1957
1958         <div class="section" id="acl-e-http-access">
1959           <h3><a class="toc-backref" href=
1960           "#id29">2.2.1&nbsp;&nbsp;&nbsp;ACL e http access</a></h3>
1961
1962           <p>Si proceda a creare una <tt class=
1963           "docutils literal">ACL</tt> di tipo <tt class=
1964           "docutils literal">src</tt> per identificare la nostra
1965           rete locale, poi si abiliti l'accesso a questa con la
1966           direttiva <tt class="docutils literal">http_access</tt>.
1967           Tutto quanto non e' espressamente autorizzato viene poi
1968           negato da un <tt class="docutils literal">http_access
1969           deny all</tt> finale.</p>
1970           <pre class="literal-block">
1971 #  TAG: acl
1972 #       Defining an Access List
1973 #
1974 #       Every access list definition must begin with an aclname and acltype,
1975 #       followed by either type-specific arguments or a quoted filename that
1976 #       they are read from.
1977 #       ...
1978 #       ***** ACL TYPES AVAILABLE *****
1979 #
1980 #       acl aclname src ip-address/netmask ...          # clients IP address
1981 # riga 588
1982
1983 # Example rule allowing access from your local networks.
1984 # Adapt to list your (internal) IP networks from where browsing
1985 # should be allowed
1986 #acl localnet src 10.0.0.0/8    # RFC1918 possible internal network
1987 #acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
1988 #acl localnet src 192.168.0.0/16        # RFC1918 possible internal network
1989 #
1990 acl localnet src 10.10.208.0/24
1991
1992 # Riga 606
1993 #  TAG: http_access
1994 #       Allowing or Denying access based on defined access lists
1995 #
1996 #       Access to the HTTP port:
1997 #       http_access allow|deny [!]aclname ...
1998 #
1999 #       NOTE on default values:
2000 #
2001 #       If there are no "access" lines present, the default is to deny
2002 #       the request.
2003
2004 # Riga 643
2005 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
2006
2007 # Example rule allowing access from your local networks.
2008 # Adapt localnet in the ACL section to list your (internal) IP networks
2009 # from where browsing should be allowed
2010 #http_access allow localnet
2011 http_access allow localnet
2012 </pre>
2013         </div>
2014       </div>
2015
2016       <div class="section" id="testare-squid">
2017         <h2><a class="toc-backref" href=
2018         "#id30">2.3&nbsp;&nbsp;&nbsp;Testare Squid</a></h2>
2019
2020         <p>Dopo aver configurato squid e' fondamentale testarne il
2021         corretto funzionamento per assicurarsi di non aver creato
2022         un <em>open-relay</em>. Per fare dei test significativi
2023         serve utilizzare degli host remoti: ci si connetta via ssh
2024         a questi e si usi <tt class="docutils literal">wget</tt> da
2025         riga di comando.</p>
2026
2027         <div class="section" id="client-wgetrc">
2028           <h3><a class="toc-backref" href=
2029           "#id31">2.3.1&nbsp;&nbsp;&nbsp;Client: ~/.wgetrc</a></h3>
2030
2031           <p>Nel file <tt class="docutils literal">.wgetrc</tt> (si
2032           noti il punto iniziale: e' un file nascosto) si puo'
2033           impostare il proxy per wget. Si utilizzi l'indirizzo IP
2034           del server che si vuole testare, e si seguano i log
2035           <tt class=
2036           "docutils literal">/var/log/squid3/access.log</tt> sul
2037           server.</p>
2038
2039           <p>Da notare che la prova va' fatta su una macchina della
2040           rete che si vuole testare, non da <em>localhost</em>. Per
2041           altro se si utilizzasse <em>direttamente</em> <tt class=
2042           "docutils literal">localhost</tt> non si testerebbe la
2043           <em>ACL</em> predisposta, dato che si si rientrerebbe
2044           nella ACL (pre-configurata di default) <tt class=
2045           "docutils literal">localhost</tt>.</p>
2046
2047           <dl class="docutils">
2048             <dt>.wgetrc</dt>
2049
2050             <dd>http_proxy=10.10.208.178:3128</dd>
2051           </dl>
2052
2053           <p>Si proceda a scaricare dal client scelto con un
2054           wget:</p>
2055           <pre class="literal-block">
2056 wget http://www.google.it
2057 </pre>
2058         </div>
2059
2060         <div class="section" id="server-access-log">
2061           <h3><a class="toc-backref" href=
2062           "#id32">2.3.2&nbsp;&nbsp;&nbsp;Server:
2063           access.log</a></h3>
2064
2065           <p>Si puo' controllare il corretto funzionamento del
2066           server seguendo i log di accesso a Squid:</p>
2067           <pre class="literal-block">
2068 # tail -f /var/log/squid3/access.log
2069 </pre>
2070
2071           <p>In oltre e' possibile configurare diversi
2072           <em>analizzatori di log</em> come <tt class=
2073           "docutils literal">Webalizer</tt> per studiare i log di
2074           Squid.</p>
2075         </div>
2076       </div>
2077     </div>
2078
2079     <div class="section" id="tiny-proxy">
2080       <h1><a class="toc-backref" href=
2081       "#id33">3&nbsp;&nbsp;&nbsp;Tiny proxy</a></h1>
2082
2083       <p>Se avete l'esigenza di un proxy server per la condivisione
2084       della connessione ad internet ma non avete la necessita' o le
2085       risorse di un <em>caching</em> proxy come Squid potete
2086       considerare <strong>tinyproxy</strong>, questo e' molto piu'
2087       leggero (utilizza circa ~2MB di RAM e ovviamente non deve
2088       accedere continuamente ad un file system per lo storaggio
2089       della cache) e risulta piu' semplice nella
2090       configurazione.</p>
2091
2092       <p>TinyProxy puo' essere utilizzato come sostituto di
2093       emergenza in una rete in cui Squid e' momentaneamente non
2094       disponibile.</p>
2095
2096       <p>File di configurazione: <tt class=
2097       "docutils literal">/etc/tinyproxy/tinyproxy.conf</tt></p>
2098       <pre class="literal-block">
2099 # Porta su cui ascoltare
2100 Port 3128
2101 # IP su cui ascoltare
2102 Listen 10.10.208.160
2103 # Negoziazione accessi
2104 Allow 10.10.208.0/24
2105 </pre>
2106     </div>
2107
2108     <div class="section" id="apache">
2109       <h1><a class="toc-backref" href=
2110       "#id34">4&nbsp;&nbsp;&nbsp;Apache</a></h1>
2111
2112       <p>Apache HTTP Server, o piu' comunemente Apache (<em>a
2113       patchy NCSA web server</em> ), e' il server web modulare piu'
2114       diffuso e strutturato disponibile con licenza libera, in
2115       grado di operare da sistemi operativi UNIX/Linux e
2116       Microsoft.</p>
2117
2118       <p>Un server web e' un processo, e per estensione il computer
2119       su cui e' in esecuzione, che si occupa di fornire, su
2120       richiesta del browser, una pagina web (spesso scritta in
2121       HTML). Le informazioni inviate dal server web viaggiano in
2122       rete trasportate dal protocollo HTTP. L'insieme di server web
2123       da' vita al World Wide Web, uno dei servizi piu' utilizzati
2124       di Internet.</p>
2125
2126       <div class="section" id="pacchetti-da-installare">
2127         <h2><a class="toc-backref" href=
2128         "#id35">4.1&nbsp;&nbsp;&nbsp;Pacchetti da
2129         installare::</a></h2>
2130
2131         <blockquote>
2132           apache2 apache2-doc
2133         </blockquote>
2134
2135         <p>Con la release 2.0 di Apache viene automaticamente resa
2136         disponibile anche la versione SSL (Secure Socket Layer,
2137         connessioni criptate ) del web server senza che ci sia la
2138         necessita' di installare altri pacchetti.</p>
2139       </div>
2140
2141       <div class="section" id="configurazione-di-apache">
2142         <h2><a class="toc-backref" href=
2143         "#id36">4.2&nbsp;&nbsp;&nbsp;Configurazione di
2144         Apache</a></h2>
2145
2146         <p>I file di configurazione di apache si trovano nella
2147         cartella: <tt class="docutils literal">/etc/apache2</tt> e
2148         sono strutturati come descritto nel file <tt class=
2149         "docutils literal">/usr/share/doc/apache2/README.Debian.gz</tt>
2150         . Sostanzialmente lo schema e' il seguente:</p>
2151
2152         <dl class="docutils">
2153           <dt>apache2.conf</dt>
2154
2155           <dd>
2156             <p class="first">File di configurazione principale del
2157             servizio.</p>
2158
2159             <p class="last">httpd.conf e' il vecchio file di
2160             configurazione di Apache1, presente per motivi di
2161             retrocompatibilita' e' generalmente vuoto.</p>
2162           </dd>
2163
2164           <dt>ports.conf</dt>
2165
2166           <dd>In questo file vengono specificate le porte sulle
2167           quali resta in ascolto il server web. Si noti che
2168           utilizzando dei virtual hosts generalmente viene
2169           specificata per questi la porta su cui ascoltare nel file
2170           di configurazione del virtual host, ad es: <tt class=
2171           "docutils literal">&lt;VirtualHost *:80&gt;</tt></dd>
2172
2173           <dt>sites-available</dt>
2174
2175           <dd>In questa cartella vengono raccolti i file di
2176           configurazione dei virtual host disponibili.</dd>
2177
2178           <dt>sites-enabled</dt>
2179
2180           <dd>In questa cartella sono contenuti dei link simbolici
2181           ai files in ../sites-available : se il link e' presente
2182           in questa cartella il virtual host e' abilitato.</dd>
2183
2184           <dt>mods-available</dt>
2185
2186           <dd>Stesso metodo per i moduli: in questa cartella ci
2187           sono i moduli veri e propri che verranno poi abilitati
2188           grazie all'esistenza di link simbolici nella cartella
2189           mods-enabled .</dd>
2190
2191           <dt>mods-enabled</dt>
2192
2193           <dd>Moduli abilitati, effettivamente caricati.</dd>
2194         </dl>
2195       </div>
2196
2197       <div class="section" id="apache-conf">
2198         <h2><a class="toc-backref" href=
2199         "#id37">4.3&nbsp;&nbsp;&nbsp;apache.conf</a></h2>
2200
2201         <p>File di configurazione del servizio Apache, contiene le
2202         impostazioni generiche (ad esempio utilizzo della RAM e
2203         risorse di sistema) dell'intero servizio. Nella
2204         configurazione di default per Debian non viene definito un
2205         vero e proprio sito di default ma solo dei virtual
2206         hosts.</p>
2207
2208         <p>Guardiamo alcune direttive interessanti:</p>
2209
2210         <dl class="docutils">
2211           <dt>Timeout</dt>
2212
2213           <dd>Numero di secondi da aspettare prima di chiudere la
2214           connessione con il client. Questo parametro serve a
2215           liberare le risorse di sistema nel caso che un client,
2216           magari a causa di una connessione particolarmente lenta o
2217           instabili, tenga attivo indefinitamente un processo di
2218           apache.</dd>
2219
2220           <dt>KeepAlive</dt>
2221
2222           <dd>L'estensione keep-alive (http 1.0) congiuntamente
2223           alle connessioni persistenti (http 1.1) permettono al
2224           server di rispondere a piu' richieste dei client mediante
2225           la stessa connessione. Il protocollo http per sua natura
2226           e' senza stato (<em>stateless</em> ), quindi ogni risorsa
2227           richiesta (per pagine web si pensi ad esempio alle
2228           immagini) dal client necessita di una connessione
2229           autonoma. Keep-alive permette di ottimizzare la
2230           connessione anche fino al 50% a seconda delle situazioni
2231           e contenuti.</dd>
2232
2233           <dt>Server-Pool Size Regulation</dt>
2234
2235           <dd>Questi parametri (StartServers, MinSpareServers, ecc.
2236           Tutti spiegati nel manuale di apache) servono per
2237           attribuire le risorse di sistema disponibili al server
2238           Apache. Tenere questi parametri bassi serve a limitare il
2239           rischio di Denial of Service per il server, nel caso
2240           offra altri servizi. I settagli di default sono come
2241           sempre abbastanza conservativi, se si conta di usare il
2242           proprio Apache per servire un sito web con molti
2243           visitatori sara' necessario aumentare sensibilmente le
2244           impostazioni di base.</dd>
2245
2246           <dt>AccessFileName</dt>
2247
2248           <dd>Il nome del file che viene onorato per modificare le
2249           impostazioni per una singola directory, legato alla
2250           direttiva AllowOverride .</dd>
2251         </dl>
2252       </div>
2253
2254       <div class="section" id="installazione-di-php">
2255         <h2><a class="toc-backref" href=
2256         "#id38">4.4&nbsp;&nbsp;&nbsp;Installazione di PHP</a></h2>
2257
2258         <p>Pacchetti da installare: <tt class=
2259         "docutils literal">php5 <span class=
2260         "pre">php-pear</span></tt></p>
2261
2262         <div class="section" id="test-del-modulo-php">
2263           <h3><a class="toc-backref" href=
2264           "#id39">4.4.1&nbsp;&nbsp;&nbsp;Test del modulo
2265           php</a></h3>
2266
2267           <p>Creare nella cartella <tt class=
2268           "docutils literal">/var/www</tt> (o altra cartella
2269           visibile) un file con estensione *.php (es <tt class=
2270           "docutils literal">/var/www/info.php</tt> contenete
2271           codice php eseguibile dall'interprete, ad es:</p>
2272           <pre class="literal-block">
2273 &lt;?php phpinfo() ; ?&gt;
2274 </pre>
2275
2276           <p>Questa funzione di php generera' la tipica pagina con
2277           le impostazioni attuali per PHP. Richiamando la pagina
2278           (es: <tt class="docutils literal"><span class=
2279           "pre">http://localhost/info.php</span></tt> ) verra'
2280           generata dall'interprete PHP la pagina HTML e resa
2281           disponibile tramite Apache ai client HTTP, a prova del
2282           corretto funzionamento del modulo di PHP e della sua
2283           integrazione con il server web Apache. In caso contrario
2284           se il client http proporra' di scaricare la pagina invece
2285           che visualizzarla nel browser: non funziona l'interprete
2286           di php o sono mal configurati i MIME-type. prima di tutto
2287           assicurarsi di aver fatto ripartire Apache.</p>
2288         </div>
2289
2290         <div class="section" id=
2291         "installazione-del-supporto-per-mysql-a-php">
2292           <h3><a class="toc-backref" href=
2293           "#id40">4.4.2&nbsp;&nbsp;&nbsp;Installazione del supporto
2294           per Mysql a PHP</a></h3>
2295
2296           <p>Installare i pacchetti:</p>
2297           <pre class="literal-block">
2298 php5-mysql phpmyadmin
2299 </pre>
2300
2301           <p>Controllare tramite la pagina php.info che sia
2302           abilitato il supporto per Mysql (ripartito Apache,
2303           ricaricare la pagina e cercare con CTRL+f <tt class=
2304           "docutils literal">mysql</tt>).</p>
2305         </div>
2306
2307         <div class="section" id="phpmyadmin">
2308           <h3><a class="toc-backref" href=
2309           "#id41">4.4.3&nbsp;&nbsp;&nbsp;phpmyadmin</a></h3>
2310
2311           <p>L'interfaccia web Phpmyadmin non richiede
2312           necessariamente la presenza di un database Mysql locale,
2313           puo' infatti essere utilizzata per gestire database
2314           remoti (il suo file di configurazione: <tt class=
2315           "docutils literal">/etc/phpmyadmin/config.inc.php</tt> ).
2316           Nel caso si voglia installare localmente Mysql si
2317           utilizzi il pacchetto <tt class=
2318           "docutils literal"><span class=
2319           "pre">mysql-server</span></tt> .</p>
2320
2321           <p>Phpmyadmin dovrebbe essere disponibile all'URL:
2322           <tt class="docutils literal"><span class=
2323           "pre">http://localhost/phpmyadmin/</span></tt>, se cosi
2324           non fosse controllare che sia incluso il file <tt class=
2325           "docutils literal">/etc/phpmyadmin/apache.conf</tt> in
2326           <tt class="docutils literal">/etc/apache2/conf.d/</tt>
2327           .</p>
2328         </div>
2329
2330         <div class="section" id=
2331         "installazione-del-supporto-per-postgresql-a-php">
2332           <h3><a class="toc-backref" href=
2333           "#id42">4.4.4&nbsp;&nbsp;&nbsp;Installazione del supporto
2334           per Postgresql a PHP</a></h3>
2335
2336           <p>Installare i pacchetti:</p>
2337           <pre class="literal-block">
2338 php5-pgsql phppgadmin
2339 </pre>
2340
2341           <p>Controllare tramite la pagina php.info che sia
2342           abilitato il supporto per PostgreSQL (ripartito Apache,
2343           ricaricare la pagina e cercare con CTRL+f <tt class=
2344           "docutils literal">pgsql</tt>).</p>
2345         </div>
2346
2347         <div class="section" id="phppgadmin">
2348           <h3><a class="toc-backref" href=
2349           "#id43">4.4.5&nbsp;&nbsp;&nbsp;phppgadmin</a></h3>
2350
2351           <p>L'interfaccia web Phppgadmin per il database server
2352           PostgreSQL non richiede necessariamente la presenza di un
2353           database locale, puo' infatti essere utilizzata per
2354           gestire database remoti (il suo file di configurazione:
2355           <tt class=
2356           "docutils literal">/etc/phppgadmin/config.inc.php</tt> ).
2357           Nel caso si voglia installare localmente Mysql si
2358           utilizzi il pacchetto <tt class=
2359           "docutils literal">postgresql</tt> .</p>
2360
2361           <p>Phpmyadmin dovrebbe essere disponibile all'URL:
2362           <tt class="docutils literal"><span class=
2363           "pre">http://localhost/phppgadmin/</span></tt>, se cosi
2364           non fosse controllare che sia incluso il file <tt class=
2365           "docutils literal">/etc/phppgadmin/apache.conf</tt> in
2366           <tt class="docutils literal">/etc/apache2/conf.d/</tt>
2367           .</p>
2368         </div>
2369       </div>
2370
2371       <div class="section" id="virtual-hosts">
2372         <h2><a class="toc-backref" href=
2373         "#id44">4.5&nbsp;&nbsp;&nbsp;Virtual hosts</a></h2>
2374
2375         <blockquote>
2376           <ul class="simple">
2377             <li><a class="reference external" href=
2378             "http://www.apacheweek.com/features/vhost">http://www.apacheweek.com/features/vhost</a></li>
2379
2380             <li><a class="reference external" href=
2381             "http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html">
2382             http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html</a></li>
2383           </ul>
2384         </blockquote>
2385
2386         <p>I virtual host permettono di avere piu' siti internet
2387         disponibili tramite lo stesso server web, eventualmente
2388         mappati su un solo indirizzo IP. Sono generalmente di due
2389         tipi:</p>
2390
2391         <blockquote>
2392           <ul class="simple">
2393             <li>Basati su <em>indirizzi IP</em>. Se si ha la
2394             possibilita' di avere piu' indirizzi IP dedicati per i
2395             diversi siti che si vuole servire. ES: <tt class=
2396             "docutils literal">&lt;VirtualHost
2397             192.168.0.2:80&gt;</tt> . Soluzione dispendiosa, si
2398             tende ad usarla solo se servono certificati di
2399             sicurezza (SSL ) dedicati per ogni sito.</li>
2400
2401             <li>Basati su <em>nomi di dominio</em> che puntano allo
2402             stesso IP. Soluzione piu' economica e diffusa che si
2403             basa sulle funzionalita' di http 1.1 .</li>
2404           </ul>
2405         </blockquote>
2406
2407         <p>Prenderemo in esame la gestione di virtual hosts basati
2408         su nomi di dominio.</p>
2409
2410         <div class="section" id="gestione-dns">
2411           <h3><a class="toc-backref" href=
2412           "#id45">4.5.1&nbsp;&nbsp;&nbsp;Gestione DNS</a></h3>
2413
2414           <p>Prima di tutto per poter impostare i virtual hosts
2415           dovete avere un server DNS che risolva i vostri nomi di
2416           dominio sull'indirizzo IP del server. Questo si puo'
2417           ottenere in vari modi, ad es:</p>
2418
2419           <blockquote>
2420             <dl class="docutils">
2421               <dt><tt class="docutils literal">/etc/hosts</tt></dt>
2422
2423               <dd>Per prove sul proprio sistema potete impostare i
2424               nomi dei vostri virtual server nel file /etc/hosts
2425               .</dd>
2426
2427               <dt><em>Dnsmasq</em> (DNS server)</dt>
2428
2429               <dd>Utilizzabile al livello della rete locale per
2430               fare dei test, utilizzando direttive come: <tt class=
2431               "docutils literal"><span class=
2432               "pre">address=/davide.piffa.net/10.10.208.178</span></tt></dd>
2433
2434               <dt><em>Servizio DNS dinamico on line</em>.</dt>
2435
2436               <dd>Utilizzare un servizio come ad es: <a class=
2437               "reference external" href=
2438               "https://www.dyndns.com/">https://www.dyndns.com/</a>
2439               per mappare nomi di dominio sul proprio indirizzo IP,
2440               comodo ad esempio se si dispone di un indirizzo IP
2441               pubblico (anche se dinamico) per la propria
2442               connessione ad internet.</dd>
2443
2444               <dt><em>Bind</em> (DNS server)</dt>
2445
2446               <dd>Impostare i campi A nelle proprie zone gestite
2447               dal server DNS Bind. Ad es: <tt class=
2448               "docutils literal">papo&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2449               A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2450               212.22.136.248</tt></dd>
2451             </dl>
2452           </blockquote>
2453         </div>
2454
2455         <div class="section" id="eseguire-una-query-dns-con-dig">
2456           <h3><a class="toc-backref" href=
2457           "#id46">4.5.2&nbsp;&nbsp;&nbsp;Eseguire una query DNS con
2458           <tt class="docutils literal">dig</tt>::</a></h3>
2459
2460           <p>Per testare la corretta risoluzione dei vostri nomi di
2461           dominio sui relaivi indirizzi IP si usi dig (o altre
2462           utlity, vedere la sezione relativa i DNS). Dig e'
2463           contenuto nel pacchetto <tt class=
2464           "docutils literal">dnsutils</tt>.</p>
2465
2466           <blockquote>
2467             <p># dig 177.piffa.net</p>
2468
2469             <p>; &lt;&lt;&gt;&gt; DiG 9.5.1-P1 &lt;&lt;&gt;&gt;
2470             177.piffa.net ;; global options: printcmd ;; Got
2471             answer: ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY,
2472             status: NOERROR, id: 38036 ;; flags: qr aa rd ra;
2473             QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0</p>
2474
2475             <p>;; QUESTION SECTION: ;177.piffa.net. IN A</p>
2476
2477             <p>;; ANSWER SECTION: 177.piffa.net. 0 IN A
2478             10.10.208.177</p>
2479
2480             <p>;; SERVER: 10.10.208.248#53(10.10.28.248)</p>
2481           </blockquote>
2482
2483           <p>La parte interessante e' l'<em>ANSWER SECTION</em>:
2484           <tt class=
2485           "docutils literal">177.piffa.net.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2486           0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2487           IN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2488           A&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.208.177</tt>
2489           . Il nome di dominio 177.piffa.net viene risolto sull'ip
2490           10.10.208.177 , nel nostro Apache (che risponde all'ip
2491           10.10.208.177 ) dovra' essere disponibile un virtual host
2492           che corrisponde al nome <tt class=
2493           "docutils literal">177.piffa.net</tt> (<tt class=
2494           "docutils literal">ServerName</tt>) .</p>
2495
2496           <p>Il server DNS utilizzato dal sistema e' evidenziato
2497           dalla stringa: <tt class="docutils literal">;; SERVER:
2498           10.10.28.248#53(10.10.28.248)</tt> che dovrebbe
2499           corrispondere a quanto impostato nel vostro <tt class=
2500           "docutils literal">/etc/resolv.conf</tt>. Se il vostro
2501           browser web utilizza un proxy http sara questo a
2502           risolvere i nomi di dominio, tipicamente potete
2503           disabilitare l'uso del proxy per determinati domini nella
2504           sezione di configurazione del browser.</p>
2505         </div>
2506
2507         <div class="section" id="id3">
2508           <h3><a class="toc-backref" href=
2509           "#id47">4.5.3&nbsp;&nbsp;&nbsp;Virtual hosts</a></h3>
2510
2511           <p>Esempio di Virtual host:</p>
2512           <pre class="literal-block">
2513 &lt;VirtualHost *:80 &gt;
2514     ServerName 177.piffa.net
2515     DocumentRoot /var/www/177.piffa.net/
2516     ServerAdmin webmaster@177.piffa.net
2517 &lt;/VirtualHost&gt;
2518 </pre>
2519
2520           <ol class="arabic simple">
2521             <li><tt class="docutils literal">&lt;VirtualHost
2522             <span class="pre">\*:80</span> &gt;</tt> La prima riga
2523             indica l'inizio della stanza relativa al nostro virtual
2524             host, che ascoltera' su qualunque indirizzo IP (nel
2525             caso il server abbia piu' indirizzi dai quali e'
2526             raggiungibile) sulla porta <tt class=
2527             "docutils literal">80</tt>.</li>
2528
2529             <li><tt class="docutils literal">Server/name</tt>
2530             precisa quale sara' il nome di dominio a cui verra'
2531             associato questo sito rispetto ad altri eventualmente
2532             presenti sullo stesso server web.</li>
2533
2534             <li><tt class="docutils literal">DocumentRoot</tt> : il
2535             path della directory che contiene le pagine del
2536             sito.</li>
2537
2538             <li><tt class="docutils literal">ServerAdmin</tt>:
2539             l'indirizzo del webmaster, in modo da poterlo
2540             contattare in caso di problemi col sito.</li>
2541
2542             <li><tt class=
2543             "docutils literal">&lt;/VirtualHost&gt;</tt>:
2544             <em>tag</em> di chiusura della stanza di definizione
2545             del virtual host.</li>
2546           </ol>
2547
2548           <p>Quelle che abbiamo appena visto sono le direttive
2549           essenziali per definire un sito virtuale, potrebbe essere
2550           utile aggiungere altre:</p>
2551
2552           <ul>
2553             <li>
2554               <dl class="first docutils">
2555                 <dt><tt class="docutils literal">ErrorLog
2556                 /var/log/apache2/177.piffa.net/error.log</tt></dt>
2557
2558                 <dd>
2559                   <p class="first last">Log degli errori separato
2560                   dai restanti siti web ospitati dal server.</p>
2561                 </dd>
2562               </dl>
2563             </li>
2564
2565             <li>
2566               <dl class="first docutils">
2567                 <dt><tt class="docutils literal">LogLevel
2568                 warn</tt></dt>
2569
2570                 <dd>
2571                   <p class="first last">Livello di importanza degli
2572                   eventi loggati: warning <em>attenzione</em> .</p>
2573                 </dd>
2574               </dl>
2575             </li>
2576
2577             <li>
2578               <dl class="first docutils">
2579                 <dt><tt class="docutils literal">CustomLog
2580                 /var/log/apache2/177.piffa.net/access.log
2581                 combined</tt></dt>
2582
2583                 <dd>
2584                   <p class="first last">Log di accesso separati
2585                   dagli altri siti, utile anche qua per statistiche
2586                   di accesso per il solo sito virtuale.</p>
2587                 </dd>
2588               </dl>
2589             </li>
2590           </ul>
2591
2592           <p>Potrebbe essere utile modificare le impostazioni di
2593           una intera directory, ad esempio per abilitare
2594           l'<tt class="docutils literal">AuthConfig</tt>:</p>
2595           <pre class="literal-block">
2596 &lt;Directory "/var/www/miosito.net/privata"&gt;
2597         AllowOverride AuthConfig
2598         Options ExecCGI Indexes MultiViews FollowSymLinks
2599         Order allow,deny
2600         Allow from all
2601 &lt;/Directory&gt;
2602 </pre>
2603
2604           <p><tt class="docutils literal">AllowOverride
2605           AuthConfig</tt> ora vale per l'intera directory, come le
2606           altre opzioni.</p>
2607         </div>
2608       </div>
2609
2610       <div class="section" id="negoziazione-accessi">
2611         <h2><a class="toc-backref" href=
2612         "#id48">4.6&nbsp;&nbsp;&nbsp;Negoziazione accessi</a></h2>
2613
2614         <p>Tipicamente quando si installa un server web il proprio
2615         desiderio e' di dare accesso ai materiali disponibili al
2616         maggior numero di visitatori possibile. Talvolta pero' puo'
2617         essere utile poter limitare questi accessi, ad esempio per
2618         escludere un <em>bot</em> indesiderato che scansiona
2619         ininterrottamente le nostre pagine o per creare una
2620         <em>Area Riservata</em> i cui materiali non devono essere
2621         disponibile a tutti.</p>
2622
2623         <div class="section" id="limiti-su-base-ip">
2624           <h3><a class="toc-backref" href=
2625           "#id49">4.6.1&nbsp;&nbsp;&nbsp;Limiti su base IP</a></h3>
2626
2627           <p>La forma piu' semplice di restrizione degli accessi e'
2628           su base degli indirizzi IP dei client: tipicamente i siti
2629           web sono settati per dare accesso a chiunque:</p>
2630           <pre class="literal-block">
2631 &lt;VirtualHost *:80 &gt;
2632        # ...
2633        &lt;Directory "/var/www/177.piffa.net"&gt;
2634          Order allow,deny
2635          Allow from all
2636        &lt;/Directory&gt;
2637 &lt;/VirtualHost&gt;
2638 </pre>
2639
2640           <p>Potremmo negare l'accesso a uno o piu' indirizzi IP in
2641           questo modo:</p>
2642           <pre class="literal-block">
2643 &lt;VirtualHost *:80 &gt;
2644        # ...
2645        &lt;Directory "/var/www/177.piffa.net"&gt;
2646          Order allow,deny
2647          Allow from all
2648          Deny from 192.168.0.1
2649        &lt;/Directory&gt;
2650 &lt;/VirtualHost&gt;
2651 </pre>
2652
2653           <p>Ora l'IP 192.168.0.1 non potra' piu' accedere ai
2654           materiali dell'intero sito virtuale, oppure potremmo
2655           lavorare su una sola directory:</p>
2656           <pre class="literal-block">
2657 &lt;Directory "/var/www/miosito.net/limitata"&gt;
2658        Order allow,deny
2659        Allow from 192.168.0.0./24
2660        Deny from all
2661 &lt;/Directory&gt;
2662 </pre>
2663
2664           <p>In questo modo solo la classe IP <tt class=
2665           "docutils literal">192.168.0.0/24</tt> potra' accedere
2666           alla directory <tt class=
2667           "docutils literal">/limitata</tt> Si tenga pero' conto
2668           che e' relativamente facile per un malintenzionato
2669           cambiare il proprio indirizzo IP, oppure collegarsi da un
2670           altra zona. Meno facile e' accedere ad una classe privata
2671           trovandosi all'esterno di questa, ma ci sono comunque
2672           soluzioni piu' eleganti.</p>
2673
2674           <ul class="simple">
2675             <li>Mod_access: <a class="reference external" href=
2676             "http://httpd.apache.org/docs/2.0/mod/mod_access.html">http://httpd.apache.org/docs/2.0/mod/mod_access.html</a></li>
2677
2678             <li>mod_authz_hosti(Available in Apache 2.1 and later):
2679             <a class="reference external" href=
2680             "http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html">
2681             http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html</a></li>
2682           </ul>
2683         </div>
2684       </div>
2685
2686       <div class="section" id="user-authentication">
2687         <h2><a class="toc-backref" href=
2688         "#id50">4.7&nbsp;&nbsp;&nbsp;User Authentication</a></h2>
2689
2690         <p>Si puo' negoziare gli accessi ad un area del sito
2691         tramite autenticazione basata su <em>nome utente /
2692         password</em>. Questo puo' venire utile per creare una area
2693         download <em>intranet</em>, alla quale possano accedere
2694         solo gli utenti previsti a prescindere dagli indirizzi IP
2695         dei loro client.</p>
2696
2697         <p>Tramite il modulo di Apache <em>mod-auth</em> e'
2698         possibile implementare questo paradigma, per quanto
2699         esistano soluzioni piu' granulari e sofisticate, che
2700         richiedono pero' l'implementazione di interpreti di
2701         linguaggi di programmazione, criptazione delle passwords,
2702         gestione degli utenti ed eventualmente delle sessioni. Mod
2703         auth non richiede l'installazione di niente di tutto
2704         questo.</p>
2705
2706         <p>link: <a class="reference external" href=
2707         "http://www.apacheweek.com/features/userauth">http://www.apacheweek.com/features/userauth</a></p>
2708
2709         <div class="section" id="definire-la-cartella">
2710           <h3><a class="toc-backref" href=
2711           "#id51">4.7.1&nbsp;&nbsp;&nbsp;Definire la
2712           cartella</a></h3>
2713
2714           <p>Decidere quale sara' il <em>path</em> della cartella
2715           da sottoporre ad autenticazione:</p>
2716
2717           <blockquote>
2718             <tt class="docutils literal">mkdir
2719             /var/www/177.piffa.net/privata</tt>
2720           </blockquote>
2721         </div>
2722
2723         <div class="section" id=
2724         "creazione-del-database-delle-passwords">
2725           <h3><a class="toc-backref" href=
2726           "#id52">4.7.2&nbsp;&nbsp;&nbsp;Creazione del database
2727           delle passwords</a></h3>
2728
2729           <p>Un modo semplice per gestire una database di
2730           <em>user-id / passwords</em> e' utilizzare l'utility
2731           <tt class="docutils literal">htpasswd</tt> di Apache.
2732           Questa crea un file in cui un <em>crypt</em> delle
2733           password viene associato agli utenti.</p>
2734
2735           <p>Si dovra' decidere dove tenere questo file, la cosa
2736           importante e' che non sia visibile nel sito web: non deve
2737           essere scaricabile dai visitatori. Deve essere cioe'
2738           all'esterno della <em>DocumentRoot</em>: un buon posto
2739           potrebbe essere la /home dell'utente.</p>
2740
2741           <p>Creiamo (con il <em>flag</em> <tt class=
2742           "docutils literal"><span class="pre">-c</span></tt>) il
2743           file <tt class=
2744           "docutils literal">/home/utente/passwords</tt> con
2745           l'utente <tt class="docutils literal">luca</tt>:</p>
2746           <pre class="literal-block">
2747 htpasswd -c /home/utente/passwords luca
2748 </pre>
2749
2750           <p><tt class="docutils literal">htpasswd</tt> ci
2751           chiedera' la password da associare all'utente <tt class=
2752           "docutils literal">luca</tt>. Per successive modifiche
2753           della password o aggiunta di nuovi utenti non sara'
2754           necessario usare il flag <tt class=
2755           "docutils literal"><span class="pre">-c</span></tt>.</p>
2756         </div>
2757
2758         <div class="section" id="id4">
2759           <h3><a class="toc-backref" href=
2760           "#id53">4.7.3&nbsp;&nbsp;&nbsp;Configurazione di
2761           Apache</a></h3>
2762
2763           <p>Ora possiamo passare alla configurazione vera e
2764           propria di Apache, ma con una novita': andremo a inserire
2765           la voce in un <tt class="docutils literal">.htaccess</tt>
2766           invece che modificare (tramite una direttiva <tt class=
2767           "docutils literal">&lt;Directory&gt;</tt> ) il file di
2768           impostazione del virtual-host.</p>
2769
2770           <p>Questo per motivi pratici: solo l'utente <em>root</em>
2771           puo' modificare l'impostazione del virtual host nel file
2772           <tt class="docutils literal"><span class=
2773           "pre">/etc/apache2/sites-enabled/177.piffa.net</span></tt>,
2774           ma spesso il motivo per cui creiamo i virtual hosts e'
2775           ospitare i siti di altri utenti, che possono solo
2776           pubblicare (generalmente tramite <em>FTP</em>) i loro
2777           documenti nella loro <em>DocumentRoot</em>, senza poter
2778           quindi modificare in alcun modo la configurazione del
2779           virtual host.</p>
2780
2781           <p>Dando agli utenti la possibilita' di modificare
2782           (<em>AllowOverride</em>) autonomamente alcuni parametri
2783           (in questo caso solo l'<em>AuthConfig</em>) relativi al
2784           funzionamento del loro spazio web ci togliera'
2785           l'incombenza di dover intervenire continuamente sui vari
2786           virtual host.</p>
2787
2788           <p>Abilitiamo l'AllowOverride nel file di configurazione
2789           del virtual host per la sola directory <tt class=
2790           "docutils literal">privata</tt>:</p>
2791           <pre class="literal-block">
2792 &lt;VirtualHost *:80 &gt;
2793     ServerName 177.piffa.net
2794     DocumentRoot /var/www/177.piffa.net/
2795     ServerAdmin webmaster@177.piffa.net
2796     &lt;Directory "/var/www/177.piffa.net/privata"&gt;
2797         AllowOverride AuthConfig
2798     &lt;/Directory&gt;
2799 &lt;/VirtualHost&gt;
2800 </pre>
2801
2802           <p>Per rendere il cambiamento effettivo sara' necessario
2803           fare un restart / reload di Apache.</p>
2804
2805           <p>Ora sara' possibile, anche per l'utente di sistema,
2806           creare un file <tt class=
2807           "docutils literal">.htaccess</tt> che sara' onorato da
2808           Apache.</p>
2809
2810           <p>/var/www/177.piffa.net/privata/.htaccess</p>
2811           <pre class="literal-block">
2812 # Messaggio visualizzato al prompt per l'autenticazione
2813 AuthName "Area privata soggetta ad autentizazione"
2814 # tipo di autenticazione da usarsi
2815 AuthType Basic
2816 # File precedentemente generato con htpasswd
2817 AuthUserFile  /home/utente/passwords
2818
2819 # Negoziazione degli accessi
2820 # valid users permette l'accesso agli utenti specificati
2821 # nel file generato da htpasswd
2822 require valid-user
2823 </pre>
2824
2825           <p>Si noti che non e' necessario fare ripartire Apache
2826           per onorare i cambiamenti (un utente non avrebbe la
2827           possibilita' di farlo!).</p>
2828
2829           <dl class="docutils">
2830             <dt>Oltre a <tt class="docutils literal"><span class=
2831             "pre">valid-users</span></tt> si potrebbe scegliere di
2832             usare la formula <tt class=
2833             "docutils literal">users</tt> che permette di elencare
2834             esplicitamente gli utenti::</dt>
2835
2836             <dd>require user pippo pluto</dd>
2837           </dl>
2838
2839           <p>L'utente <em>paperino</em> che fosse comunque presente
2840           nel file generato da htpasswd non potrebbe accedere alla
2841           risorsa.</p>
2842
2843           <dl class="docutils">
2844             <dt>Nel caso ci fossero molti utenti conviene gestirli
2845             tramite <em>gruppi</em>::</dt>
2846
2847             <dd>require group staff studenti</dd>
2848           </dl>
2849
2850           <p>I gruppi vengono definiti in un file in modo simile a
2851           <tt class="docutils literal">/etc/groups</tt> per gli
2852           utenti di sistema:</p>
2853           <pre class="literal-block">
2854 staff:andrea sara
2855 studenti: lucap federico luca
2856 </pre>
2857
2858           <p>da richiamare tramite la direttiva <tt class=
2859           "docutils literal">AuthGroupFile</tt>.</p>
2860         </div>
2861       </div>
2862
2863       <div class="section" id="cavets">
2864         <h2><a class="toc-backref" href=
2865         "#id54">4.8&nbsp;&nbsp;&nbsp;Cavets</a></h2>
2866
2867         <p>Problemi di cache:</p>
2868
2869         <blockquote>
2870           <ul class="simple">
2871             <li>Proxy: nei settaggi del browser specificare di non
2872             utilizzare un server proxy http per il sito web locale
2873             (o per gli altri che si stanno monitorando). Se si ha
2874             il controllo del proxy server: stopparlo, ricaricare la
2875             pagina (operazione che fallira'), far ripartire il
2876             proxy, ricaricare la pagina.</li>
2877
2878             <li>Provare con un altro browser, o cercare di svuotare
2879             la cache chiudere/riaprire l'applicativo. Provare a
2880             fermare Apache, ricaricare la pagina (operazione che
2881             fallira'), far ripartire Apache, ricaricare la
2882             pagina.</li>
2883           </ul>
2884         </blockquote>
2885       </div>
2886     </div>
2887
2888     <div class="section" id="domain-name-system">
2889       <h1><a class="toc-backref" href=
2890       "#id55">5&nbsp;&nbsp;&nbsp;Domain Name System</a></h1>
2891
2892       <p>Domain Name System (spesso indicato con DNS) e' un
2893       servizio utilizzato per la risoluzione di nomi di host in
2894       indirizzi IP e viceversa. Il servizio e' realizzato tramite
2895       un sistema <strong>gerarchico</strong> (quindi una struttura
2896       ad albero, simile ai <em>file system</em>)
2897       <strong>distribuito</strong> (ogni server DNS facente parte
2898       del sistema puo' mantenere solo una parte delle informazioni,
2899       ad esempio per la sua sola <em>zona</em>), costituito dai
2900       server DNS.</p>
2901
2902       <p>I DNS sono un servizio <em>core</em> (fondamentale) per la
2903       rete internet come per qualunque rete locale. Ad esempio
2904       durante la navigazione web un client vorrebbe vedere
2905       l'<em>URL</em> <tt class="docutils literal"><span class=
2906       "pre">http://ww.piffa.net/</span></tt>, quindi per potersi
2907       connettere via <em>http</em> al server web deve prima
2908       ottenere l'indirizzo IP del <em>server http</em>
2909       corrispondente a <em>www.piffa.net</em>. Se il DNS gli
2910       fornisce un IP sbagliato l'utente non potra' raggiungere il
2911       servizio: di fatto e' come se il serve http fosse spento.</p>
2912
2913       <p>Stessa cosa vale per gli altri servizi, come la posta
2914       elettronica, ssh, ecc. : <em>prima si deve effettuare una
2915       query DNS</em>.</p>
2916
2917       <p>Potrebbe verificarsi uno scenario simile a questo: i
2918       vostri server per i siti web funzionano correttamente come i
2919       siti ospitati, stessa cosa per i vostri server di posta, IMAP
2920       e POP3, e tutto il resto. Ma se poi un errore nella
2921       configurazione del DNS non rende raggiungibile l'intero
2922       <em>sito</em>: per l'utente finale e' come se nulla
2923       funzionasse.</p>
2924
2925       <p>Infatti quando si parla di un intervento della Polizia
2926       Postale per l'<em>oscuramento</em> di un sito dal punto di
2927       vista pratico questo si traduce generalmente nella rimozione
2928       o mistificazione del record DNS relativo a quel dominio (la
2929       <em>PP</em> ha facolta' di chiedere un simile intervento ai
2930       principali provider internet che forniscono connettivita'
2931       agli utenti italiani, oltre che poter agire direttamente sul
2932       NIC italiano per i domini della TLD <em>.it</em>)</p>
2933
2934       <p>L'operazione di convertire un nome in un indirizzo e'
2935       detta risoluzione DNS, convertire un indirizzo IP in nome e'
2936       detto risoluzione inversa.</p>
2937
2938       <blockquote>
2939         Un <em>Registar</em> e' un operatore che ha la facolta'
2940         (accreditamento da parte dell ICANN) di registrare i domini
2941         di secondo livello per gli utenti finali, dietro compenso
2942         di una modica cifra (una decina di euro) che vale come
2943         contributo su base annuale per il mantenimento
2944         dell'infrastruttura.
2945       </blockquote>
2946
2947       <div class="section" id="risoluzione-inversa">
2948         <h2><a class="toc-backref" href=
2949         "#id56">5.1&nbsp;&nbsp;&nbsp;Risoluzione Inversa</a></h2>
2950
2951         <p>Per la risoluzione inversa sono invece i provider di
2952         connettivita' a gestire i DNS: se volete impostare il
2953         <em>PTR</em> associato al vostro indirizzo IP dovete
2954         contattare il vostro provider (tipo <em>telecom</em> per
2955         una connessione ADSL) e <em>non il Registar del vostro
2956         dominio</em>.</p>
2957
2958         <p>Ad esempio all'IP <tt class=
2959         "docutils literal">212.22.136.248</tt> era associato un PTR
2960         <tt class="docutils literal">bender.piffa.net</tt>,
2961         corrispondente al record <tt class=
2962         "docutils literal">212</tt> facente parte della zona
2963         <tt class="docutils literal"><span class=
2964         "pre">136.22.212.in-addr.arpa</span></tt> gestito dal
2965         provider Tiscali/Nextra proprietario della classe C
2966         <tt class="docutils literal">212.22.136.0</tt>. Se avete un
2967         solo IP conviene lasciare al fornitore la gestire del PTR,
2968         ma se avete a disposizione un'itera classe potete chiedere
2969         sempre al vostro provider che vi <em>deleghi</em> la
2970         gestione della zona tramite i vostri DNS.</p>
2971
2972         <p>Per alcuni servizi, ad esempio la spedizione della posta
2973         elettronica, e' richiedeiesto che venga impostata
2974         correttamente l'associazione tra il PTR dell'indirizzo IP
2975         usato dal server di postai e il record A RR al quale questo
2976         punta( RFC1912 sezione 2.1, paragrafo 2).</p>
2977
2978         <p>Si veda:</p>
2979
2980         <ul class="simple">
2981           <li><a class="reference external" href=
2982           "http://www.faqs.org/rfcs/rfc1912.html">http://www.faqs.org/rfcs/rfc1912.html</a>
2983           2.1 Inconsistent, Missing, or Bad Data</li>
2984
2985           <li><a class="reference external" href=
2986           "http://www.ietf.org/rfc/rfc2505.txt">http://www.ietf.org/rfc/rfc2505.txt</a></li>
2987         </ul>
2988       </div>
2989
2990       <div class="section" id="nomi-di-dominio">
2991         <h2><a class="toc-backref" href=
2992         "#id57">5.2&nbsp;&nbsp;&nbsp;Nomi di dominio</a></h2>
2993
2994         <p>Un nome a dominio e' costituito da una serie di stringhe
2995         separate da punti, ad esempio bender.piffa.net. I nomi di
2996         dominio si leggono da destra verso sinistra: <em>TLD</em> o
2997         dominio di primo livello <tt class=
2998         "docutils literal">net</tt>, secondo livello <tt class=
2999         "docutils literal">piffa</tt>, terzo livello <tt class=
3000         "docutils literal">bender</tt>. Il dominio di primo livello
3001         (o TLD, Top Level Domain, pronunciato <em>tilde</em> in
3002         Italia), per esempio .net o .it sono limitati e decisi
3003         direttamente dall'ente assegnatario ICANN ( Internet
3004         Corporation for Assigned Names and Numbers).</p>
3005
3006         <p>L'utente finale potra' chiedere l'assegnazione (pagando
3007         un contributo al Register preferito per il mantenimento
3008         delle spese dell'infrastruttura) di un dominio di
3009         <em>secondo</em> livello (es <tt class=
3010         "docutils literal">piffa</tt>) di una delle varie TLD
3011         disponibili (noi italiani diciamo <em>tildi</em>), sempre
3012         che non sia gia' stato assegnato a qualcun altro.</p>
3013
3014         <p>Ottenuto il secondo livello sara' l'utente a gestirlo:
3015         potra' in stanziare domini di terzo livello (es <tt class=
3016         "docutils literal">bender</tt>) e anche oltre (es
3017         www.andrea.bender.piffa.net). Tali records saranno
3018         mantenuti dall'utente, sotto la sua responsbilita': se il
3019         proprio server DNS non fosse raggiungibile o risultasse mal
3020         configurato gli utenti non potrebbero risolvere /
3021         raggiungere i siti di loro interesse.</p>
3022
3023         <p>Tipicamente si ha almeno un server DNS secondario per
3024         garantire la sussistenza del servizio in caso di guasto del
3025         DNS principale. I secondari <em>replicano</em> i dati
3026         presenti nei DNS principali.</p>
3027       </div>
3028
3029       <div class="section" id="tipologie-di-record">
3030         <h2><a class="toc-backref" href=
3031         "#id58">5.3&nbsp;&nbsp;&nbsp;Tipologie di record</a></h2>
3032
3033         <p>Ad un nome DNS possono corrispondere diversi tipi di
3034         informazioni. Per questo motivo, esistono diversi tipi di
3035         record DNS. Ogni voce del database DNS deve essere
3036         caratterizzata da un tipo. I principali tipi sono:</p>
3037
3038         <ul class="simple">
3039           <li>Record A - Indica la corrispondenza tra un nome ed
3040           uno (o piu') indirizzi IP (per la precisione indirizzi
3041           IPv4, ovvero la versione attualmente in uso).</li>
3042
3043           <li>Record MX - (Mail eXchange) indica a quali server
3044           debba essere inviata la posta elettronica per un certo
3045           dominio.</li>
3046
3047           <li>Record CNAME - Sono usati per creare un alias, ovvero
3048           per fare in modo che lo stesso calcolatore sia noto con
3049           piu' nomi. Uno degli utilizzi di questo tipo di record
3050           consiste nell'attribuire ad un host che offre piu'
3051           servizi un nome per ciascun servizio. In questo modo, i
3052           servizi possono poi essere spostati su altri host senza
3053           dover riconfigurare i client, ma modificando solo il
3054           DNS.</li>
3055
3056           <li>Record PTR - Il DNS viene utilizzato anche per
3057           realizzare la risoluzione inversa, ovvero per far
3058           corrispondere ad un indirizzo IP il corrispondente nome a
3059           dominio. Per questo si usano i record di tipo "PTR" (e
3060           una apposita zona dello spazio dei nomi
3061           in-addr.arpa).</li>
3062
3063           <li>Record AAAA - Restituisce un indirizzo IPv6.</li>
3064
3065           <li>Record SRV - Identificano il server per un
3066           determinato servizio all'interno di un dominio. Possono
3067           essere considerati una generalizzazione dei record
3068           MX.</li>
3069
3070           <li>Record TXT - Associano campi di testo arbitrari ad un
3071           dominio. Questi campi possono contenere una descrizione
3072           informativa oppure essere utilizzati per realizzare
3073           servizi.</li>
3074         </ul>
3075
3076         <p>Vi sono anche tipi di record "di servizio", necessari al
3077         funzionamento del database distribuito: * Record NS -
3078         Utilizzato per indicare quali siano i server DNS
3079         autoritativi per un certo dominio, ovvero per delegarne la
3080         gestione. * Record SOA - (Start of Authority) usato per la
3081         gestione delle zone DNS.</p>
3082       </div>
3083
3084       <div class="section" id="utilizzo">
3085         <h2><a class="toc-backref" href=
3086         "#id59">5.4&nbsp;&nbsp;&nbsp;Utilizzo</a></h2>
3087
3088         <p>I computer vengono identificati in rete grazie agli
3089         indirizzi <em>IP</em>, questi pero' non sono comodi per gli
3090         utenti come riferimento per i vari server. Ad esempio
3091         sarebbe scomodo riferirsi al motore di ricerca Goggle con
3092         uno dei suoi IP: <tt class=
3093         "docutils literal">74.125.43.104</tt>, e' preferibile usare
3094         il nome di dominio <em>www.google.com</em>:</p>
3095         <pre class="literal-block">
3096 ping -c 1 www.google.com
3097 PING www.l.google.com (74.125.43.104) 56(84) bytes of data.
3098 </pre>
3099       </div>
3100
3101       <div class="section" id="risoluzione-dei-nomi-di-dominio">
3102         <h2><a class="toc-backref" href=
3103         "#id60">5.5&nbsp;&nbsp;&nbsp;Risoluzione dei nomi di
3104         dominio</a></h2>
3105
3106         <p>Ci sono vari strumenti per interrogare i server DNS e
3107         ottenere l'indirizzo IP associato al nome di dominio che ci
3108         interessa:</p>
3109         <pre class="literal-block">
3110 $ host www.piffa.net
3111 www.piffa.net is an alias for piffa.net.
3112 piffa.net has address 65.98.21.97
3113 piffa.net mail is handled by 10 65.98.21.97
3114
3115
3116 $ nslookup www.piffa.net
3117 Server:         192.168.0.10
3118 Address:        192.168.0.10#53
3119
3120 Non-authoritative answer:
3121 www.piffa.net   canonical name = piffa.net.
3122 Name:   piffa.net
3123 Address: 65.98.21.97
3124
3125
3126 $ dig www.piffa.net
3127
3128 ; &lt;&lt;&gt;&gt; DiG 9.6.0-P1 &lt;&lt;&gt;&gt; www.piffa.net
3129 ;; global options: +cmd
3130 ;; Got answer:
3131 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 47751
3132 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 4
3133
3134 ;; QUESTION SECTION:
3135 ;www.piffa.net.                 IN      A
3136
3137 ;; ANSWER SECTION:
3138 www.piffa.net.          3489    IN      CNAME   piffa.net.
3139 piffa.net.              3489    IN      A       65.98.21.97
3140
3141 ;; AUTHORITY SECTION:
3142 piffa.net.              86289   IN      NS      ns2.mydomain.com.
3143 piffa.net.              86289   IN      NS      ns1.mydomain.com.
3144 piffa.net.              86289   IN      NS      ns4.mydomain.com.
3145 piffa.net.              86289   IN      NS      ns3.mydomain.com.
3146
3147 ;; ADDITIONAL SECTION:
3148 ns1.mydomain.com.       96208   IN      A       64.94.117.193
3149 ns2.mydomain.com.       96208   IN      A       64.94.31.67
3150 ns3.mydomain.com.       96208   IN      A       66.150.161.137
3151 ns4.mydomain.com.       96208   IN      A       63.251.83.74
3152
3153 ;; Query time: 1 msec
3154 ;; SERVER: 192.168.0.10#53(192.168.0.10)
3155 ;; WHEN: Sun May 10 21:23:11 2009
3156 ;; MSG SIZE  rcvd: 209
3157 </pre>
3158
3159         <p>Lo strumento piu' esaustivo e' <tt class=
3160         "docutils literal">dig</tt>, installabile con il pacchetto
3161         <tt class="docutils literal">dnsutils</tt> .</p>
3162       </div>
3163
3164       <div class="section" id="dig">
3165         <h2><a class="toc-backref" href=
3166         "#id61">5.6&nbsp;&nbsp;&nbsp;Dig</a></h2>
3167
3168         <p>Vediamo alcune opzioni utili nell'utilizzo di <tt class=
3169         "docutils literal">dig</tt> per l'interrogazione dei DNS
3170         Server:</p>
3171         <pre class="literal-block">
3172 $ dig www.google.it
3173
3174 ; &lt;&lt;&gt;&gt; DiG 9.6.0-P1 &lt;&lt;&gt;&gt; www.google.it
3175 ;; global options: +cmd
3176 ;; Got answer:
3177 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 18816
3178 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 7, ADDITIONAL: 0
3179
3180 ;; QUESTION SECTION:
3181 ;www.google.it.                 IN      A
3182
3183 ;; ANSWER SECTION:
3184 www.google.it.          250683  IN      CNAME   www.google.com.
3185 www.google.com.         334819  IN      CNAME   www.l.google.com.
3186 www.l.google.com.       186     IN      A       74.125.43.103
3187 www.l.google.com.       186     IN      A       74.125.43.104
3188 www.l.google.com.       186     IN      A       74.125.43.147
3189 www.l.google.com.       186     IN      A       74.125.43.99
3190
3191 ;; AUTHORITY SECTION:
3192 l.google.com.           80856   IN      NS      f.l.google.com.
3193 l.google.com.           80856   IN      NS      d.l.google.com.
3194 l.google.com.           80856   IN      NS      b.l.google.com.
3195 l.google.com.           80856   IN      NS      c.l.google.com.
3196 l.google.com.           80856   IN      NS      a.l.google.com.
3197 l.google.com.           80856   IN      NS      e.l.google.com.
3198 l.google.com.           80856   IN      NS      g.l.google.com.
3199
3200 ;; Query time: 1 msec
3201 ;; SERVER: 192.168.0.10#53(192.168.0.10)
3202 ;; WHEN: Sun May 10 21:34:47 2009
3203 ;; MSG SIZE  rcvd: 255
3204 </pre>
3205
3206         <dl class="docutils">
3207           <dt>$ dig</dt>
3208
3209           <dd>(senza opzioni o oggetti) Fornisce l'elenco dei
3210           <em>root server</em> utilizzati. I root server sono i
3211           server che mantengono le informazioni sui domini di primo
3212           livello (TLD) e sono quindi il punto di partenza per
3213           scorrere nella directory dei DNS per recuperare le
3214           informazioni (tipicamente un campo <tt class=
3215           "docutils literal">A</tt> per un indirizzo IP) che ci
3216           servono per raggiungere un certo servizio.</dd>
3217         </dl>
3218
3219         <p>$ dig</p>
3220
3221         <blockquote>
3222           <p>...</p>
3223
3224           <p>;; ANSWER SECTION: . 192032 IN NS C.ROOT-SERVERS.NET.
3225           . 192032 IN NS E.ROOT-SERVERS.NET. . 192032 IN NS
3226           B.ROOT-SERVERS.NET. . 192032 IN NS L.ROOT-SERVERS.NET. .
3227           192032 IN NS A.ROOT-SERVERS.NET. . 192032 IN NS
3228           F.ROOT-SERVERS.NET. . 192032 IN NS H.ROOT-SERVERS.NET. .
3229           192032 IN NS G.ROOT-SERVERS.NET. . 192032 IN NS
3230           K.ROOT-SERVERS.NET. . 192032 IN NS M.ROOT-SERVERS.NET. .
3231           192032 IN NS I.ROOT-SERVERS.NET. . 192032 IN NS
3232           J.ROOT-SERVERS.NET. . 192032 IN NS
3233           D.ROOT-SERVERS.NET.</p>
3234
3235           <p>...</p>
3236         </blockquote>
3237
3238         <dl class="docutils">
3239           <dt>dig @nome_dns</dt>
3240
3241           <dd>Permette di fare una query ad un server dns
3242           particolare. Es: <tt class="docutils literal">dig
3243           @151.99.25.1 www.google.it</tt></dd>
3244
3245           <dt>dig MX www.google.it</dt>
3246
3247           <dd>Chiede un campo in particolare, in questo caso il
3248           campo MX</dd>
3249
3250           <dt>dig ANY www.google.it</dt>
3251
3252           <dd>Chiede tutti i campi, non solo i campi
3253           <em>a</em></dd>
3254
3255           <dt>dig -x 74.125.43.104</dt>
3256
3257           <dd>Effettua una richiesta inversa: dall'IP al PTR
3258           associato.</dd>
3259         </dl>
3260       </div>
3261
3262       <div class="section" id="resolv-conf">
3263         <h2><a class="toc-backref" href=
3264         "#id62">5.7&nbsp;&nbsp;&nbsp;resolv.conf</a></h2>
3265
3266         <p>Il file <tt class=
3267         "docutils literal">/etc/resolv.conf</tt> contiene le
3268         impostazioni sul dns usato dal sistema, in genere anche
3269         altre applicazioni che devono effettuare query DNS leggono
3270         resolv.conf per conoscere l'ubicazione del DNS.</p>
3271
3272         <p>/etc/resolv.conf:</p>
3273
3274         <blockquote>
3275           <ul class="simple">
3276             <li><tt class="docutils literal">nameserver</tt>:
3277             indica il nameserver da utilizzare, indicato con
3278             l'indirizzo IP.</li>
3279
3280             <li><tt class="docutils literal">domain</tt>: indica il
3281             nome di dominio della rete attuale, vedi voce
3282             successiva.</li>
3283
3284             <li><tt class="docutils literal">search</tt>: nome di
3285             dominio usato dalla rete sul quale cercare gli hosts.
3286             Ad esempio se impostato su <tt class=
3287             "docutils literal">piffa.net</tt> pingando l' host
3288             <tt class="docutils literal">bender</tt> viene
3289             automaticamente fatto un tentativo di ricerca per
3290             <tt class=
3291             "docutils literal">bender.piffa.net</tt>.</li>
3292           </ul>
3293         </blockquote>
3294
3295         <p>Predisponendo l'infrastruttura di rete della vostra LAN
3296         e' consigliabile impostare sempre almeno un DNS cache sul
3297         vostro server locale per i vari client. In questo modo in
3298         caso di malfunzionamento del DNS o necessita' di
3299         intervenire / sostituire i DNS non sara' piu' necessario
3300         dover reimpostare ogni singolo client della LAN: bastera'
3301         intervenire sul server DNS cache, ad esempio per utilizzare
3302         un nuovo forwarder, o modificare al volo un record DNS. La
3303         modifica, anche detta <em>mascheramento</em>, di un record
3304         come il <em>server smtp</em> o un <em>MX</em> potrebbe
3305         tirarvi rapidamente fuori dai guai nel caso di un problema
3306         improvviso con la posta elettronica o qualunque altro
3307         servizio che possiate reindirizzare col DNS.</p>
3308
3309         <p>Utilizzare un server DHCP e una DNS cache come
3310         <tt class="docutils literal">Dnsmasq</tt> possono
3311         permettervi di risolvere al volo molte delle problematiche
3312         relative alla configurazione della vostra LAN: ad esempio
3313         dover intervenire manualmente su decine di client per
3314         modificare le impostazioni di SMTP | gateway | DNS |
3315         proxy.</p>
3316
3317         <p>Si veda anche la pagina man di resolv.conf.</p>
3318
3319         <div class="warning">
3320           <p class="first admonition-title">Avvertenza</p>
3321
3322           <p class="last">Attenzione: se si usa un client DHCP, ppp
3323           (ADSL compresa) o simile questo file potrebbe' essere
3324           riscritto automaticamente in base a quanto ottenuto dal
3325           DHCP. Si veda la documentazione del pacchetto <tt class=
3326           "docutils literal">resolvconf</tt>.</p>
3327         </div>
3328       </div>
3329
3330       <div class="section" id="etc-hosts">
3331         <h2><a class="toc-backref" href=
3332         "#id63">5.8&nbsp;&nbsp;&nbsp;/etc/hosts</a></h2>
3333
3334         <p>Tabella statica per l'associazione tra IP e nomi di
3335         dominio:</p>
3336         <pre class="literal-block">
3337 # cat /etc/hosts
3338 </pre>
3339
3340         <blockquote>
3341           127.0.0.1 localhost.localdomain localhost 10.10.208.162
3342           daniela daniela.piffa.net 10.10.208.254 mirror
3343           mirror.piffa.net 91.191.138.15 thepiratebay.org
3344           192.168.0.11 chrome chrome.mydomain.com
3345         </blockquote>
3346
3347         <p>Il contenuto del file e' un associazione tra un
3348         <em>IP</em> e stringhe di testo (anche piu' di una per IP)
3349         es: <tt class="docutils literal">mirror</tt> o veri e propi
3350         nomi di dominio <tt class=
3351         "docutils literal">mirror.piffa.net</tt>. Si puo inserire
3352         un nome semplice come <em>casa</em> per riferirsi ad un
3353         host che si ha necessita' di contattare spesso, oppure
3354         mappare un nome di dominio completo su un indirizzo IP.</p>
3355
3356         <p>Il problema e' la gestione di questo file su molti
3357         hosts: quando gli host cambiano IP si devono aggiornare
3358         manualmente i records, operazione in se' non
3359         particolarmente gravosa ma che andra' fatta per ogni client
3360         della vostra LAN. Un metodo semplice per distribuire questo
3361         file e' utilizzare <tt class=
3362         "docutils literal">Dnsmasq</tt>: questo infatti legge e
3363         onora il file <tt class="docutils literal">hosts</tt> che
3364         avete prodotto e lo rende disponibile ai clients tramite le
3365         query DNS.</p>
3366
3367         <p>Dnsmasq lavora come un server DNS, i vostri client lo
3368         interrogheranno per tradurre nomi di host e domini in
3369         indirizzi IP, risolvendo il problema della
3370         <em>distribuzione</em> del file <tt class=
3371         "docutils literal">hosts</tt> tra molteplici clients.
3372         Infatti il servizio DNS indica appunto una <em>directory
3373         distribuita</em> per la risoluzione dei nomi di dominio,
3374         risolvendo i problemi dell'aggiornamento e diffusione dei
3375         continui cambiamenti di questa.</p>
3376
3377         <p>Modificare la risoluzione di un nome di dominio
3378         esistente (ad esempio riconducendola a un IP interno) e' un
3379         modo drastico e funzionale per <em>annullarlo</em>
3380         rendendolo non disponibile alla propria rete locale. Ad
3381         esempio aggiungere al file <tt class=
3382         "docutils literal">/etc/hosts</tt>:</p>
3383         <pre class="literal-block">
3384 127.0.0.1       www.facebook.com
3385 </pre>
3386
3387         <p>Impedira' agli utenti della LAN di raggiungere
3388         <em>facebook</em>, ora reindirizzato a <tt class=
3389         "docutils literal">localhost</tt>.</p>
3390
3391         <p>Oppure si potrebbe ricondurre l'indirizzo IP di un
3392         server HTTP pubblico usato per i downloads (ad esempio un
3393         mirror della propia distribuzione come <tt class=
3394         "docutils literal">ftp.it.debian.org</tt>) a un equivalente
3395         mirror creato all'interno della rete locale, riducendo il
3396         traffico verso l'esterno e aumentando notevolmente la
3397         velocita' di scaricamento.</p>
3398       </div>
3399
3400       <div class="section" id="hostname">
3401         <h2><a class="toc-backref" href=
3402         "#id64">5.9&nbsp;&nbsp;&nbsp;Hostname</a></h2>
3403
3404         <p>Ogni computer ha un <em>proprio nome</em> visualizzabile
3405         (e modificabile) con il comando <tt class=
3406         "docutils literal">hostname</tt>. Quando utilizzate a una
3407         shell su un host in genere l'hostname compare nel prompt
3408         della shell.</p>
3409
3410         <p>Per visualizzare il nome dell'host su cui si sta
3411         operando si digiti semplicemnte <tt class=
3412         "docutils literal">hostname</tt>, lo stesso comando con un
3413         oggetto modifica temporaneamente il nome dell'host. Per
3414         modificare in modo permanente il nome del computer si
3415         modifichi il contenuto del file <tt class=
3416         "docutils literal">/etc/hostname</tt>.</p>
3417
3418         <p>Si faccia attenzione a non aver un hostname puramente
3419         numerico: ad es. <tt class="docutils literal">161</tt>. E'
3420         opportuno che il nome sia comunque un alfanumerico:
3421         <tt class="docutils literal"><span class=
3422         "pre">host-161</span></tt> o simile.</p>
3423
3424         <div class="section" id="fqdn">
3425           <h3><a class="toc-backref" href=
3426           "#id65">5.9.1&nbsp;&nbsp;&nbsp;FQDN</a></h3>
3427
3428           <p>Per semplicita' gli host sono generalemente
3429           raggiungibili dall'esterno mappando il loro IP su un nome
3430           di dominio FQDN: fully qualified domain name, composto
3431           generalmente da <em>hostname</em>.``domain-name``, ad es.
3432           <em>bender</em>.``piffa.net``.</p>
3433
3434           <p>Alcuni servizi internet fanno affidamento sul PTR
3435           dell'IP del server per cercare una conferma che il
3436           <em>servizio</em> sia veramente chi afferma di essere (ad
3437           esempio STMP).</p>
3438
3439           <p>Non e' automatico che un servizio, ad esempio un
3440           server di posta, si qualifichi leggendo il contenuto del
3441           file <tt class="docutils literal">hostname</tt>
3442           aggiungendo come suffisso il dominio della rete di cui fa
3443           parte l' host: a volte questo parametro puo' essere
3444           specificato nel file di configurazione del servizio:</p>
3445           <pre class="literal-block">
3446 * Squid (HTTP proxy): ``visible_hostname``
3447
3448 * Postfix (SMTP server): ``myhostname``
3449 </pre>
3450
3451           <p>I motivi sono diversi, senza entrare nel dettaglio dei
3452           vari protocolli si pensi comunque che un host ha sempre
3453           un solo nome, ma puo' avere un numero variabile di
3454           <em>device di rete</em> sia fisici che virtuali con
3455           relativi <em>indirizzi IP</em>, e piu' servizi in ascolto
3456           sui vari IP.</p>
3457         </div>
3458       </div>
3459     </div>
3460
3461     <div class="section" id="dnsmasq">
3462       <h1><a class="toc-backref" href=
3463       "#id66">6&nbsp;&nbsp;&nbsp;DNSmasq</a></h1>
3464
3465       <p>Dnsmasq puo' svolgere le funzioni di un DNS cache /
3466       forwarder, server DHCP, e' caratterizzato dalla facilita' di
3467       configurazione, limitato uso di risorse, adattabilita' a
3468       connessioni <em>dinamiche</em> come ADSL o altre punto a
3469       punto (anche via cellulari) per condividere rapidamente la
3470       rete (cosa molto utile se ci dovesse trovare a ridare
3471       connettetivita' a una rete momentaneamente sprovvista), dalla
3472       possibilita' di modificare rapidamente i record DNS serviti
3473       alla rete anche grazie alla distribuzione del file <tt class=
3474       "docutils literal">/etc/hosts</tt> locale. Puo' essere anche
3475       utilizzato come <cite>server per il boot da rete
3476       &lt;http://www.debian-administration.org/articles/478&gt;_</cite>
3477       .</p>
3478
3479       <p>Dnsmasq e' un interessante alternativa all'uso del server
3480       DNS Bind in modalita' <em>forwarding e cache-only</em> (non
3481       autoritativo) accompagnato dal server DHCPd. I vantaggi
3482       sono:</p>
3483
3484       <ul class="simple">
3485         <li>Leggerezza: puo' essere fatto girare su una macchina
3486         relativamente debole in caso di bisogno.</li>
3487
3488         <li>Rapidita' di configurazione (in particolare per servire
3489         dei record A / MX alla rete, modificando al volo i valori
3490         originali ospitati sul server DNS pubblico).</li>
3491
3492         <li>Ben integrato con connessioni PPP : e' ingrado di
3493         rilevare i cambiamenti dei dns suggeriti e impostarli come
3494         forwarders (utile se dovete rendere disponibile rapidamente
3495         una connessione a internet a una rete in difficolta').</li>
3496       </ul>
3497
3498       <p>Tutto cio' rende Dnsmasq una soluzione valida in
3499       particolare quando si deve intervenire in una rete
3500       pre-esistente in cui il server principale e' in crisi: si
3501       potra' utilizzare Dnsmasq anche su una macchina piu' debole e
3502       <em>mascherare</em> i servizi al momento non disponibili.
3503       Molto utile per scopi didattici, sopratutto per testare
3504       server SMTP impostando al volo i campi MX per nomi di dominio
3505       fittizi.</p>
3506
3507       <div class="section" id="configurazione">
3508         <h2><a class="toc-backref" href=
3509         "#id67">6.1&nbsp;&nbsp;&nbsp;Configurazione</a></h2>
3510
3511         <p>Vediamo alcune direttive di basi del file di
3512         configurazione <tt class=
3513         "docutils literal">/etc/dnsmasq.conf</tt> utili per la
3514         configurazione sia del DNS cache che per il DHCP
3515         server:</p>
3516
3517         <dl class="docutils">
3518           <dt>domain-needed</dt>
3519
3520           <dd>Non inoltrare query ai server DNS esterni per nomi
3521           semplici (es andrea, portatile, pippo) che verranno
3522           risolti solo in locale o causeranno direttamente una
3523           risposta <em>not found</em> .</dd>
3524
3525           <dt>bogus-priv</dt>
3526
3527           <dd>Simile alla voce precedente ma per i reverse
3528           look-up.</dd>
3529
3530           <dt>domain</dt>
3531
3532           <dd>Nome di dominio della rete da passare ai client.</dd>
3533
3534           <dt>expand_hosts</dt>
3535
3536           <dd>Aggiunge il <tt class="docutils literal">nome
3537           host</tt> ( <tt class=
3538           "docutils literal">/etc/hostname</tt>) dei client al nome
3539           di dominio per qualificarli in rete, senza bisogno di
3540           dover comporre a un elenco statico di record nel file
3541           <tt class="docutils literal">/etc/hosts</tt> o nello
3542           stesso file di configurazione di dnsmasq. Es: se un
3543           vostro client si chiama <tt class=
3544           "docutils literal">chrome</tt> e il vostro dominio
3545           <tt class="docutils literal">piffa.net</tt> dnsmasq
3546           rendera' disponibile il campo <em>A</em> per il dominio
3547           <tt class="docutils literal">chrome.piffa.net</tt>
3548           diretto all'ip che verra' assegnato al client.</dd>
3549         </dl>
3550       </div>
3551
3552       <div class="section" id="dhcp">
3553         <h2><a class="toc-backref" href=
3554         "#id68">6.2&nbsp;&nbsp;&nbsp;DHCP</a></h2>
3555
3556         <p>Per attivare il demone DHCP di Dnsmasq basta aggiungere
3557         al file di configurazione il <em>range</em> degli IP che si
3558         vuole assegnare ai client con il <em>lease time</em> (tempo
3559         di rilascio: quanto a lungo saranno validi gli IP
3560         assegnati) espresso in ore.</p>
3561
3562         <p>Si faccia <em>attenzione</em>: in una rete puo' essere
3563         presente <strong>un solo server DHCP</strong>, o per meglio
3564         dire qualunque server DHCP ascolta sul broadcast <tt class=
3565         "docutils literal">255.255.255.255</tt> e potrebbe
3566         rispondere a un pacchetto di richiesta DHCP. Quindi non
3567         fate partire inavvertitamente un server DHCP in una rete
3568         gia' servita e <strong>non vi azzardate ad andare in giro
3569         con un portatile con un server DHCP attivo</strong> nelle
3570         reti altrui. Questo vale anche per i laboratori di
3571         informatica dei corsi di reti: non fate partire il vostro
3572         server DHCP se siete collegati alla rete interna!</p>
3573
3574         <p>/etc/dnsmasq.conf (riga 118):</p>
3575         <pre class="literal-block">
3576 dhcp-range=192.168.0.20,192.168.0.50,24h
3577 </pre>
3578       </div>
3579
3580       <div class="section" id="dns-cache">
3581         <h2><a class="toc-backref" href=
3582         "#id69">6.3&nbsp;&nbsp;&nbsp;DNS cache</a></h2>
3583
3584         <p>Dnsmasq lavora di default come cache dns: inserire al
3585         file <tt class="docutils literal">/etc/resolv.conf</tt> il
3586         nameserver localhost in cima alla lista dei
3587         <em>nameserver</em> disponibili.</p>
3588
3589         <blockquote>
3590           nameserver 127.0.0.1
3591         </blockquote>
3592
3593         <p>Questo pero' potrebbe essere problematico se un altro
3594         servizio, ad esempio il DHCP client, riscrive il contenuto
3595         del file <tt class=
3596         "docutils literal">/etc/resolv.conf</tt>. Per superare il
3597         problema si aggiunga (riga 20) al file di configurazione
3598         <tt class=
3599         "docutils literal">/etc/dhcp3/dhclient.conf</tt></p>
3600         <pre class="literal-block">
3601 prepend domain-name-servers 127.0.0.1;
3602 </pre>
3603
3604         <p>Oppure potrebbe essere il nostro <em>PPP client</em>
3605         (per la connessione ADSL) a intervenire sul file <tt class=
3606         "docutils literal">//etc/resolv.conf</tt>, si modifichi
3607         quindi <tt class="docutils literal"><span class=
3608         "pre">/etc/ppp/peers/dsl-provider</span></tt> commentando
3609         <tt class="docutils literal">usepeerdns</tt>. Se la vostra
3610         connessione ad internet e' ADSL raramente dovreste aver
3611         bisogno di cambiare i DNS una volta impostati (a meno che
3612         non usiate un portatile!).</p>
3613       </div>
3614     </div>
3615
3616     <div class="section" id="bind-dns-autoritativo">
3617       <h1><a class="toc-backref" href=
3618       "#id70">7&nbsp;&nbsp;&nbsp;Bind : DNS Autoritativo</a></h1>
3619
3620       <p>Le soluzioni viste possono bastare per la rete locale o
3621       per fare delle prove, ma prima o poi verra' il momento in cui
3622       si e' chiamati a gestire dei domini su internet: lo standard
3623       e' da sempre <em>Bind</em> ( demone <em>named</em>), ora alla
3624       versione 9.</p>
3625
3626       <p>Installare i pacchetti:</p>
3627       <pre class="literal-block">
3628 bind9
3629 </pre>
3630
3631       <div class="section" id="id5">
3632         <h2><a class="toc-backref" href=
3633         "#id71">7.1&nbsp;&nbsp;&nbsp;DNS cache</a></h2>
3634
3635         <p>Bind appena installato funzionera' come DNS cache: si
3636         faccia un test con un <tt class="docutils literal">dig
3637         @localhost</tt> . Bind a differenza di Dnsmasq e' autonomo:
3638         non ha bisogno di forwardare (inoltrare) le query a un DNS
3639         esterno: queste verranno risolte direttamente da Bind
3640         partendo dai <em>DNS root servers</em>.</p>
3641
3642         <p>E' comunque possibile impostare dei DNS forwarders,
3643         tipicamente i DNS server forniti dal proprio provider, per
3644         velocizzare le query:</p>
3645
3646         <p>/etc/bind/named.conf.options (riga 13):</p>
3647         <pre class="literal-block">
3648 forwarders {
3649                  10.10.208.254;
3650            };
3651 </pre>
3652
3653         <p>Nel caso si voglia usare Bind solo come server DNS cache
3654         per la propria LAN senza ospitare delle zone DNS pubbliche
3655         sara' il caso di limitare gli accessi al server alla sola
3656         LAN:</p>
3657
3658         <p>/etc/bind/named.conf.options (riga 19):</p>
3659         <pre class="literal-block">
3660 // Se il proprio server ha IP 10.10.208.254
3661 // sulla rete LAN privata:
3662 listen-on { 10.10.208.254; }
3663 </pre>
3664
3665         <p>E non si lasci il server in ascolto su uno degli
3666         eventuali indirizzi IP pubblici.</p>
3667
3668         <p>Se questo non fosse possibile si puo' sempre lavorare su
3669         una <em>acl</em>:</p>
3670
3671         <p>/etc/bind/named.conf</p>
3672         <pre class="literal-block">
3673 acl "localnet" {
3674         10.10.208.0/24 ; 127.0.0.0/8 ;
3675         } ;
3676 </pre>
3677
3678         <p>Per poi aggiungere all'interno della stanza options la
3679         direttiva che abilita' l'entita' <tt class=
3680         "docutils literal">localnet</tt>:</p>
3681
3682         <p>/etc/bind/named.conf.options</p>
3683         <pre class="literal-block">
3684 allow-query {"localnet" ;} ;
3685 </pre>
3686       </div>
3687
3688       <div class="section" id="ospitare-una-zona">
3689         <h2><a class="toc-backref" href=
3690         "#id72">7.2&nbsp;&nbsp;&nbsp;Ospitare una zona</a></h2>
3691
3692         <p>Se avete acquistato un nome di dominio e vi serve un
3693         software DNS per gestirlo Bind e' la scelta piu' diffusa.
3694         Ora vedremo come configurare una <em>zona</em> (come
3695         piffa.net) in modo che Bind sia autoritativoper questa,
3696         rispondendo alle query DNS di tutta la rete internet.</p>
3697
3698         <div class="section" id="named-conf-local">
3699           <h3><a class="toc-backref" href=
3700           "#id73">7.2.1&nbsp;&nbsp;&nbsp;named.conf.local</a></h3>
3701
3702           <p>Prima di tutti impostiamo il server bind per gestire
3703           la zona, per non fare confusione e' opportuno inserire le
3704           propie zone DNS nel file <tt class=
3705           "docutils literal">named.conf.local</tt> e non in
3706           <tt class="docutils literal">named.conf</tt>.</p>
3707
3708           <p>named.conf.local:</p>
3709           <pre class="literal-block">
3710 /
3711 // Do any local configuration here
3712 //
3713
3714 // Consider adding the 1918 zones here, if they are not used in your
3715 // organization
3716 //include "/etc/bind/zones.rfc1918";
3717
3718 zone "piffa.net" {
3719         type master;
3720         file "/etc/bind/pz/piffa.net";
3721         }
3722 </pre>
3723
3724           <dl class="docutils">
3725             <dt>type master</dt>
3726
3727             <dd>Il nostro server DNS sara' il principale, al quale
3728             poi potremo affiancare dei DNS secondari nel caso
3729             questo non sia disponibile.</dd>
3730
3731             <dt>file "/etc/bind/pz/piffa.net"</dt>
3732
3733             <dd>Dove verranno inserite le informazioni vere e
3734             propie di questa zona.</dd>
3735           </dl>
3736         </div>
3737
3738         <div class="section" id="configurazione-della-zona">
3739           <h3><a class="toc-backref" href=
3740           "#id74">7.2.2&nbsp;&nbsp;&nbsp;Configurazione della
3741           zona</a></h3>
3742
3743           <p>Ora dovremo preparare il file contenente i record DNS
3744           della zona <em>piffa.net</em>, come abbiamo indicato
3745           prima questi saranno contenuti nel file <tt class=
3746           "docutils literal">/etc/bind/pz/piffa.net</tt> . Tenere
3747           le zone dentro una sottocartella e' buona abitudine,
3748           usare <tt class="docutils literal">pz</tt> per queste e'
3749           una vecchia abitudine.</p>
3750
3751           <p>piffa.net:</p>
3752           <pre class="literal-block">
3753 ; Zona per il dominio di secondo livello piffa.net
3754
3755 $TTL 3D     ; 3 days
3756 @                    IN SOA  ns1.piffa.net. hostmaster.piffa.net. (
3757                                 200905245  ; serial
3758                                 8H         ; refresh (8 hours)
3759                                 2H         ; retry (2 hours)
3760                                 4W         ; expire (4 weeks)
3761                                 1D         ; minimum (1 day)
3762                                 )
3763 ;
3764                         NS      ns1
3765                         NS      ns2
3766                         A       94.23.63.105
3767                         MX      10 smtp
3768                         TXT     "Piffanet main site"
3769 ;
3770 ns1             A       94.23.63.105
3771 ns2             A       65.98.21.97
3772 zoo             A       94.23.63.105
3773 smtp            A       94.23.63.105
3774 test.piffa.net. A       94.23.63.105
3775 *.piffa.net.    A       94.23.63.105 ; *catch all domain
3776 www             CNAME   zoo
3777 ftp             CNAME   zoo
3778 </pre>
3779
3780           <p>All'interno di questo file si possono inserire dei
3781           commenti con il carattere <tt class=
3782           "docutils literal">;</tt> (punto-e-virgola), si faccia
3783           attenzione alla rigida sintassi: apertura e chiusura
3784           delle parentesi tonde nella parte <tt class=
3785           "docutils literal">IN SOA</tt>, uso del <tt class=
3786           "docutils literal">punto</tt> finale per precisare un
3787           nome di dominio specifico (<em>FQDN</em>: Fully-qualified
3788           Domain Name) come <tt class=
3789           "docutils literal">test.piffa.net.</tt> a differenza
3790           degli altri domini di terzo livello come <tt class=
3791           "docutils literal">pop,imap,smtp</tt> .</p>
3792
3793           <p>La zona inizia con una direttiva <tt class=
3794           "docutils literal">$TTL 3D</tt> (RFC 2308) che indica la
3795           durata (in questo caso tre giorni) che ogni record
3796           dovrebbe avrebbe nella cache degli altri serber DNS.
3797           Questo valore dovrebbe essere superiore a un giorno, se
3798           non modificate spesso i valori dei vostri record DNS e'
3799           consigliabile settarlo a 2/3 settimane in modo da
3800           limitare la frequenza delle query al propio server.
3801           Questo parametro puo' essere modificato per singoli
3802           record:</p>
3803           <pre class="literal-block">
3804 $TTL 3D     ; 3 giorni: default se non specificato altrimenti
3805 rapido  5h      IN      A       94.23.63.105 ; usa un TTL di 5 ore
3806 lento   3w      IN      A       94.23.63.105 ; usa un TTL di 3 settimane
3807 normale         IN      A       94.23.63.105 ; usa il TTL di default: 3 giorni
3808 </pre>
3809
3810           <p>Segue poi il nome della zona, indicato con la
3811           <tt class="docutils literal">@</tt> per richiamare la
3812           zona originale precisata nel file <tt class=
3813           "docutils literal">named.conf.options</tt> . Segue il
3814           campo <tt class="docutils literal">SOA</tt>.</p>
3815
3816           <div class="section" id="soa-start-of-authority-record">
3817             <h4><a class="toc-backref" href=
3818             "#id75">7.2.2.1&nbsp;&nbsp;&nbsp;SOA: Start of
3819             Authority Record</a></h4>
3820
3821             <p>Il record SOA puo' comparire solo una volta in una
3822             zona, contiene informazioni relative all'autorita' del
3823             server DNS.</p>
3824
3825             <dl class="docutils">
3826               <dt>ns1.piffa.net. name-server</dt>
3827
3828               <dd>primary master DNS di questo dominio.</dd>
3829
3830               <dt>hostmaster.piffa.net. email-addr</dt>
3831
3832               <dd>email-addr: indirizzo email della persona
3833               responsabile di questa zona, il primo punto viene
3834               tradotto in una <em>chiocciola</em> <tt class=
3835               "docutils literal">@</tt> dato che questo carattere
3836               ha un'altro utilizzo all'interno di questo file. Il
3837               referente della zona <strong>deve</strong> essere un
3838               email valido e controllato, come consuetudine si usa
3839               <tt class=
3840               "docutils literal">hostmaster@dominio.tilde</tt>
3841               .</dd>
3842
3843               <dt>200905245 serial number</dt>
3844
3845               <dd>Questo valore serve per indicare quando e' stato
3846               modificato questo file di configurazione, secondo il
3847               formato <tt class="docutils literal">yyyymmddss</tt>:
3848               <tt class="docutils literal">yyyy</tt> = anno, ''mm''
3849               = mese, ''dd'' = giorno, ''ss'' = seriale. Il seriale
3850               che deve essere sempre specificato anche per una
3851               cifra, va incrementato di una unita' nel caso vengano
3852               fatte piu' modifiche <em>nello stesso
3853               giorno</em>.</dd>
3854
3855               <dt>8H refresh</dt>
3856
3857               <dd>Indica ai DNS secondari quanto tempo attendere
3858               per cercare di aggiornare i loro dati con il DNS
3859               master.</dd>
3860
3861               <dt>2H retry</dt>
3862
3863               <dd>Intervallo di tempo per il DNS slave (secondario)
3864               da aspettare prima di cercare di ricontattare il
3865               <em>master</em> in caso di problemi col
3866               <em>refresh</em>.</dd>
3867
3868               <dt>4W expire</dt>
3869
3870               <dd>Indica quando i dati dei dns secondarinon sono
3871               piu' autoritativi in caso di impossibilita' degli
3872               <em>slaves</em> di ri-aggiornarsi con il
3873               <em>master</em>. Consigliato un valore di 2/4
3874               settimane.</dd>
3875
3876               <dt>1D minimum</dt>
3877
3878               <dd>Questo valore indicava il TTL fino alla versione
3879               8 di Bind, da Bind 9 e secondo la RFC2308 indica la
3880               durata del <em>negative caching</em>, quanto i
3881               resolvers (ad esempio un server dns cache) puo'
3882               mantenere un record <em>negativo</em> (che non indica
3883               la corrispondenza tra un nome di dominio e un ip, ma
3884               la non esistenza del record). Nell'uso per il
3885               negative caching viene fissato un valore massimo di 3
3886               ore dalla RFC 2308.</dd>
3887             </dl>
3888           </div>
3889
3890           <div class="section" id="altri-campi">
3891             <h4><a class="toc-backref" href=
3892             "#id76">7.2.2.2&nbsp;&nbsp;&nbsp;Altri campi:</a></h4>
3893
3894             <p>All'interno della zona possono essere utilizati vari
3895             tipi di records (RR):</p>
3896
3897             <dl class="docutils">
3898               <dt>TXT</dt>
3899
3900               <dd>Informazioni testuali associate ad un record</dd>
3901
3902               <dt>NS</dt>
3903
3904               <dd>Name Server della zona. Non deve essere un
3905               cname.</dd>
3906
3907               <dt>A</dt>
3908
3909               <dd>Indirizzo ipv4 da associare al record</dd>
3910
3911               <dt>AAA</dt>
3912
3913               <dd>Indirizzo ipv6 da associare al record</dd>
3914
3915               <dt>CNAME</dt>
3916
3917               <dd>Canonical Name: un alias per un host: ad esempio
3918               per il dominio piffa.net possiamo settare degli alias
3919               come <tt class="docutils literal">www.piffa.net,
3920               http.piffa.net, virtual.piffa.net, ftp.piffa.net,
3921               imap.piffa.net</tt>. Comodo quando diversi alias sono
3922               sempre riferiti allo stesso ip.</dd>
3923
3924               <dt>MX</dt>
3925
3926               <dd>Mail Exchanger: server di posta che si occupera'
3927               della posta elettronica per questo dominio.E'
3928               opportuno avere almeno un server di posta di back-up,
3929               per indicare la priorita' di un MX rispettoad un
3930               altro si usa un valore di 2 cifre: il valore piu'
3931               basso indica priorita' piu' bassa. Es: <tt class=
3932               "docutils literal">MX&nbsp;&nbsp;&nbsp; 10
3933               smtp.piffa.net.</tt> per il server SMTP principale e
3934               <tt class=
3935               "docutils literal">MX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3936               40 smtp2.piffa.net</tt> per il secondario. Non deve
3937               essere un cname.</dd>
3938
3939               <dt>PTR</dt>
3940
3941               <dd>Reverse look-up, usato per la mappatura inversa
3942               di un indirizzo ip a una stringa identificativa
3943               dell'host. Si noti che per poter modificare questi
3944               record si deve avere <em>in gestione</em> la <em>zona
3945               IP</em>, se cosi' non fosse si dovra' chiedere al
3946               propio provider la modifica di questo record per il
3947               propio ip. Links: <a class="reference external" href=
3948               "http://www.zytrax.com/books/dns/ch3/">http://www.zytrax.com/books/dns/ch3/</a></dd>
3949             </dl>
3950           </div>
3951         </div>
3952       </div>
3953
3954       <div class="section" id="dns-slave">
3955         <h2><a class="toc-backref" href=
3956         "#id77">7.3&nbsp;&nbsp;&nbsp;DNS slave</a></h2>
3957
3958         <p>Data l'importanza del servizio DNS e' necessario avere
3959         ridondanza per i server DNS che ospitano i vostri dati: in
3960         caso di indisponibilita' del server <em>master</em> (nel
3961         caso fosse il solo a tenere i dati questo comporterebbe la
3962         <em>scomparsa</em> di tutti i servizi / host da esso
3963         seviti!) il client potrebbe contattare uno degli
3964         <em>slave</em>.</p>
3965
3966         <p>Gli slave recuperano i dati dei recordos RR direttamente
3967         dal master e non sara' quindi necessario dover mantenere
3968         manualmente il file di configurazione della zona sugli
3969         slaves, ogni volta che aggiorneremo il master questi dati
3970         si propaghera' agli slaves automaticamente.</p>
3971
3972         <p>Per attivare uno <em>slave</em> per la nostra zona di
3973         esempio <tt class="docutils literal">piffa.net</tt> si
3974         inserisca nel file <tt class=
3975         "docutils literal">named.conf.local</tt> dello slave
3976         server:</p>
3977         <pre class="literal-block">
3978 zone "piffa.net" {
3979         type slave;
3980         file "/etc/bind/pz/piffa.net";
3981         masters { 192.168.0.1; };
3982         };
3983 </pre>
3984
3985         <p>Facendo ripartire Bind il file <tt class=
3986         "docutils literal">/etc/bind/pz/piffa.net</tt> viene creato
3987         automaticamente.</p>
3988
3989         <p>Segue un estratto di <tt class=
3990         "docutils literal">/var/log/syslog</tt> al <tt class=
3991         "docutils literal">restart</tt> di <tt class=
3992         "docutils literal">bind9</tt> sullo slave:</p>
3993         <pre class="literal-block">
3994 ... slave named[2256]: zone piffa.net/IN: loaded serial 200905245
3995 ... slave named[2256]: running
3996 ... slave named[2256]: zone piffa.net/IN: sending notifies (serial 200905245)
3997 ... slave named[2256]: client 192.168.0.1#1464: received notify for zone 'piffa.net'
3998 ... slave named[2256]: zone piffa.net/IN: notify from 192.168.0.1#1464: zone is up to date
3999 </pre>
4000
4001         <div class="warning">
4002           <p class="first admonition-title">Avvertenza</p>
4003
4004           <p class="last">Bind9 (versione 9.3 presente in Debian
4005           Lenny) richiede una esplicita autorizzazione alla
4006           notifica per lo stesso server slave, che in fase di avvio