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