5585 lines
209 KiB
XML
5585 lines
209 KiB
XML
<?xml version="1.0" encoding="iso-8859-15"?>
|
||
<!--
|
||
The FreeBSD Italian Documentation Project
|
||
|
||
$FreeBSD$
|
||
Original revision: 1.102
|
||
-->
|
||
|
||
<chapter id="network-servers">
|
||
<chapterinfo>
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Murray</firstname>
|
||
|
||
<surname>Stokely</surname>
|
||
|
||
<contrib>Riorganizzato da </contrib>
|
||
</author>
|
||
</authorgroup>
|
||
</chapterinfo>
|
||
|
||
<title>Server di rete</title>
|
||
|
||
<sect1 id="network-servers-synopsis">
|
||
<title>Sinossi</title>
|
||
|
||
<para>Questo capitolo coprirà alcuni dei servizi di rete usati
|
||
più di frequente sui sistemi &unix;. Fra gli argomenti
|
||
toccati, ci saranno l'installazione, la configurazione,
|
||
il test ed la manutenzione di molti tipi diversi di
|
||
servizi di rete. Per vostro beneficio
|
||
in tutto il capitolo saranno inclusi file di
|
||
configurazione di esempio.</para>
|
||
|
||
<para>Dopo aver letto questo capitolo, sarai in grado
|
||
di:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Gestire il demone <application>inetd</application>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Installare un file system di rete.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Installare un server NIS per condividere
|
||
account utenti.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Installare impostazioni automatiche di rete usando DHCP.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Installare un server di risoluzione dei nomi.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Installare il server HTTP
|
||
<application>Apache</application>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Installare un File Transfer Protocol (FTP) Server.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Installare un file server e server di stampa per client
|
||
&windows; usando <application>Samba</application>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Sincronizzare la data e l'ora ed installare un
|
||
time server, col protocollo NTP.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Prima di leggere questo capitolo, dovresti:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Comprendere le basi dell'organizzazione degli scripts
|
||
<filename>/etc/rc</filename>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Avere familiarità con la terminologia di rete di
|
||
base.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Sapere come installare software aggiuntivo di terze parti
|
||
(<xref linkend="ports"/>).</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect1>
|
||
|
||
<sect1 id="network-inetd">
|
||
<sect1info>
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Chern</firstname>
|
||
|
||
<surname>Lee</surname>
|
||
|
||
<contrib>Grazie al contributo di </contrib>
|
||
</author>
|
||
</authorgroup>
|
||
|
||
<authorgroup>
|
||
<author>
|
||
<contrib>Aggiornato per &os; 6.1-RELEASE da </contrib>
|
||
|
||
<othername>The &os; Documentation Project</othername>
|
||
</author>
|
||
</authorgroup>
|
||
</sect1info>
|
||
|
||
<title>Il
|
||
<quote>Super-Server</quote> <application>inetd</application></title>
|
||
|
||
<sect2 id="network-inetd-overview">
|
||
<title>Uno sguardo d'insieme</title>
|
||
|
||
<para>&man.inetd.8; viene talvolta definito l'<quote>Internet
|
||
Super-Server</quote> perchè gestisce le connessioni verso
|
||
molti servizi. Quando una connessione
|
||
viene ricevuta da <application>inetd</application>, questo
|
||
determina per quale programma la connessione sia
|
||
destinata, esegue quel particolare processo e affida a
|
||
lui la socket (il programma è invocato con la socket
|
||
del servizio come descrittore di standard input, output
|
||
ed error). Eseguire <application>inetd</application>
|
||
per server dal carico non troppo alto può ridurre il carico
|
||
complessivo di sistema, rispetto all'esecuzione individuale
|
||
di ogni demone in modalità stand-alone.</para>
|
||
|
||
<para>Principalmente, <application>inetd</application> è
|
||
usato per lanciare altri demoni, ma molti protocolli
|
||
triviali sono gestiti direttamente, come ad esempio
|
||
i protocolli <application>chargen</application>,
|
||
<application>auth</application>, e
|
||
<application>daytime</application>.</para>
|
||
|
||
<para>Questa sezione coprirà le basi della configurazione
|
||
di <application>inetd</application> attraverso le
|
||
opzioni da linea di comando
|
||
ed il suo file di configurazione,
|
||
<filename>/etc/inetd.conf</filename>.</para>
|
||
</sect2>
|
||
|
||
<sect2 id="network-inetd-settings">
|
||
<title>Impostazioni</title>
|
||
|
||
<para><application>inetd</application> viene inizializzato
|
||
attraverso il sistema &man.rc.8;.
|
||
L'opzione <literal>inetd_enable</literal> è
|
||
impostata a <literal>NO</literal> di default, ma può essere
|
||
attivata da <application>sysinstall</application>
|
||
durante l'installazione, a seconda della configurazione
|
||
scelta dall'utente. Inserendo:</para>
|
||
|
||
<programlisting>inetd_enable="YES"</programlisting>
|
||
|
||
<para>o</para>
|
||
|
||
<programlisting>inetd_enable="NO"</programlisting>
|
||
|
||
<para>in
|
||
<filename>/etc/rc.conf</filename> si abiliterà o meno
|
||
la partenza di
|
||
<application>inetd</application> al boot.
|
||
Il comando:</para>
|
||
|
||
<screen>&prompt.root; <userinput>/etc/rc.d/inetd rcvar</userinput></screen>
|
||
|
||
<para>può essere utilizzato per mostrare le impostazioni
|
||
attive al momento.</para>
|
||
|
||
<para>Inoltre, diverse opzioni di linea di comando possono
|
||
essere passate a <application>inetd</application> attraverso
|
||
l'opzione <literal>inetd_flags</literal>.</para>
|
||
</sect2>
|
||
|
||
<sect2 id="network-inetd-cmdline">
|
||
<title>Opzioni su linea di comando</title>
|
||
|
||
<para>Come molti server di rete, <application>inetd</application>
|
||
ha un numero di opzioni che possono essergli passate
|
||
per modificare il suo comportamento. La lista di tutte le opzioni è:</para>
|
||
|
||
<para><application>inetd</application> synopsis:</para>
|
||
|
||
<para><option>inetd [-d] [-l] [-w] [-W] [-c maximum] [-C rate]
|
||
[-a address | hostname] [-p filename] [-R rate] [configuration
|
||
file]</option></para>
|
||
|
||
<para>Si possono passare opzioni ad <application>inetd</application> usando
|
||
l'opzione <literal>inetd_flags</literal> in
|
||
<filename>/etc/rc.conf</filename>. Di default,
|
||
<literal>inetd_flags</literal> è impostato a
|
||
<literal>-wW -C 60</literal>, il che attiva il TCP wrapping per i servizi di
|
||
<application>inetd</application>, ed impedisce ad ogni singolo
|
||
indirizzo IP di richiedere qualsiasi servizio piùdi 60 volte
|
||
al minuto.</para>
|
||
|
||
<para>Gli utenti novizi possono notare con piacere che
|
||
questi parametri di solito non devono essere modificati,
|
||
anche se bisogna menzionare il fatto che le opzioni di
|
||
limitazione delle connessioni sono utili solo se ci si accorge
|
||
di ricevere un numero eccessivo di connessioni. L'intera lista
|
||
delle opzioni di &man.inetd.8; può essere trovata
|
||
nel manuale di &man.inetd.8;.</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>-c maximum</term>
|
||
|
||
<listitem>
|
||
<para>Specifica il numero massimo di invocazioni simultanee
|
||
per ogni servizio; il default è illimitato.
|
||
Può essere sovrascritto per ogni servizio dal
|
||
parametro <option>max-child</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>-C rate</term>
|
||
|
||
<listitem>
|
||
<para>Specifica un numero massimo di volte in cui
|
||
un servizio può essere invocato da un singolo
|
||
indirizzo IP in un
|
||
minuto; il default è illimitato. Può essere
|
||
sovrascritto per ogni servizio con il parametro
|
||
<option>max-connections-per-ip-per-minute</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>-R rate</term>
|
||
|
||
<listitem>
|
||
<para>Specifica il numero massimo di volte che un servizio
|
||
può essere invocato in un minuto; il default è
|
||
256. L'impostazione 0 permette un numero illimitato di
|
||
invocazioni.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>-s maximum</term>
|
||
|
||
<listitem>
|
||
<para>Specifica il numero massimo di volte
|
||
che un servizio può essere invocato per ogni periodo di
|
||
tempo; il default è illimitato. Può essere sovrascritto
|
||
per ogni singolo servizio con il parametro <option>max-child-per-ip</option>.
|
||
</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</sect2>
|
||
|
||
<sect2 id="network-inetd-conf">
|
||
<title><filename>inetd.conf</filename></title>
|
||
|
||
<para> La configurazione di <application>inetd</application>
|
||
è fatta attraverso il file
|
||
<filename>/etc/inetd.conf</filename>.</para>
|
||
|
||
<para>Quando viene apportata una modifica a
|
||
<filename>/etc/inetd.conf</filename>,
|
||
si può forzare <application>inetd</application>
|
||
a rileggere il suo file di configurazione
|
||
eseguendo il comando:</para>
|
||
|
||
<example id="network-inetd-reread">
|
||
<title>Ricaricare il file di configurazione
|
||
di <application>inetd</application>
|
||
</title>
|
||
|
||
<screen>&prompt.root; <userinput>/etc/rc.d/inetd reload </userinput></screen>
|
||
</example>
|
||
|
||
<para>Ogni linea del file di configurazione specifica un
|
||
singolo demone. I commenti nel file sono preceduti da un
|
||
<quote>#</quote>. Il formato di ogni riga del file
|
||
<filename>/etc/inetd.conf</filename> è il seguente:</para>
|
||
|
||
<programlisting>nome del servizio
|
||
tipo della socket
|
||
protocollo
|
||
{wait|nowait}[/max-child[/max-connections-per-ip-per-minute]]
|
||
utente[:gruppo][/classe-di-login]
|
||
programma-server
|
||
argomenti-del-programma-server</programlisting>
|
||
|
||
<para>Un esempio di linea per il
|
||
demone &man.ftpd.8;
|
||
usando l'IPv4:</para>
|
||
|
||
<programlisting>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l</programlisting>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>nome-del-servizio</term>
|
||
|
||
<listitem>
|
||
<para>È il nome del servizio per il demone.
|
||
Deve corrispondere ad un servizio elencato in
|
||
<filename>/etc/services</filename>. Questo
|
||
determina su quale porta
|
||
<application>inetd</application> deve restare
|
||
in ascolto. Se viene creato un nuovo servizio,
|
||
deve essere messo prima
|
||
in <filename>/etc/services</filename>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>tipo-di-socket</term>
|
||
|
||
<listitem>
|
||
<para>Una a scelta fra <literal>stream</literal>,
|
||
<literal>dgram</literal>, <literal>raw</literal>, o
|
||
<literal>seqpacket</literal>.
|
||
<literal>stream</literal>
|
||
deve essere usata per demoni basati sulla
|
||
connessione, tipo TCP, mentre
|
||
<literal>dgram</literal> è usato per demoni che usano
|
||
il protocollo di trasporto <acronym>UDP</acronym>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>protocollo</term>
|
||
|
||
<listitem>
|
||
<para>Uno dei seguenti:</para>
|
||
|
||
<informaltable frame="none" pgwide="1">
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>Protocollo</entry>
|
||
|
||
<entry>Spiegazione</entry>
|
||
</row>
|
||
</thead>
|
||
|
||
<tbody>
|
||
<row>
|
||
<entry>tcp, tcp4</entry>
|
||
|
||
<entry>TCP IPv4</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>udp, udp4</entry>
|
||
|
||
<entry>UDP IPv4</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>tcp6</entry>
|
||
|
||
<entry>TCP IPv6</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>udp6</entry>
|
||
|
||
<entry>UDP IPv6</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>tcp46</entry>
|
||
|
||
<entry>Entrambi TCP IPv4 e v6</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>udp46</entry>
|
||
|
||
<entry>Entrambi UDP IPv4 e v6</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>{wait|nowait}[/max-child[/max-connections-per-ip-per-minute[/max-child-per-ip]]]</term>
|
||
|
||
<listitem>
|
||
<para><option>wait|nowait</option> indica se il demone
|
||
invocato da <application>inetd</application> è
|
||
in grado di gestire la sua socket o meno.
|
||
Il tipo di socket <option>dgram</option> deve usare
|
||
l'opzione <option>wait</option>, mentre i demoni
|
||
con socket stream,
|
||
che sono in genere multi-thread, devono usare
|
||
<option>nowait</option>. <option>wait</option> in
|
||
genere fornisce socket multiple ad un singolo demone,
|
||
mentre <option>nowait</option> lancia un demone figlio
|
||
per ogni nuova socket.</para>
|
||
|
||
<para>Il massimo numero di demoni figli che
|
||
<application>inetd</application> può lanciare si imposta
|
||
attraverso l'opzione <option>max-child</option>.
|
||
Se è richiesto un limite di dieci istanze per un
|
||
particolare demone, un
|
||
<literal>/10</literal> dovrebbe essere inserito
|
||
dopo l'opzione <option>nowait</option>. Specificando
|
||
<literal>/0</literal> si lascia un numero illimitato di figli.</para>
|
||
|
||
<para>Oltre all'opzione <option>max-child</option>,
|
||
possono essere attivate due altre opzioni che limitano
|
||
il massimo numero di connessioni da un singolo ip
|
||
verso un particolare demone.
|
||
<option>max-connections-per-ip-per-minute</option> limita
|
||
il numero di connessioni da un particolare indirizzo IP per
|
||
minuto, ad esempio un valore di dieci limiterebbe ogni
|
||
singolo indirizzo IP a connettersi verso un certo servizio
|
||
a dieci connessioni al minuto.
|
||
<option>max-child-per-ip</option>
|
||
limita il numero di figli che possono essere avviati su richiesta
|
||
di un singolo indirizzo IP in ogni momento.
|
||
Queste opzioni sono utili per prevenire
|
||
eccessivo consumo delle risorse intenzionale o non intenzionale
|
||
e attacchi Denial of Service (DoS) ad una macchina.</para>
|
||
|
||
<para>In questo campo, <option>wait</option> o
|
||
<option>nowait</option> sono obbligatorie.
|
||
<option>max-child</option> e
|
||
<option>max-connections-per-ip-per-minute</option>
|
||
e <option>max-child-per-ip</option> sono
|
||
opzionali.</para>
|
||
|
||
<para>Un demone tipo-stream multi-thread senza
|
||
i limiti <option>max-child</option> o
|
||
<option>max-connections-per-ip-per-minute</option>
|
||
dovrebbe essere semplicemente:
|
||
<literal>nowait</literal>.</para>
|
||
|
||
<para>Lo stesso demone con un limite massimo di
|
||
dieci demoni dovrebbe avere:
|
||
<literal>nowait/10</literal>.</para>
|
||
|
||
<para>In aggiunta, la stessa impostazione con
|
||
un limite di venti connessioni per IP al
|
||
minuto ed un limite massimo di
|
||
dieci demoni figli avrebbe:
|
||
<literal>nowait/10/20</literal>.</para>
|
||
|
||
<para>Queste opzioni sono tutte utilizzate
|
||
di default nelle impostazioni del demone
|
||
&man.fingerd.8; come si vede di seguito:</para>
|
||
|
||
<programlisting>finger stream tcp nowait/3/10 nobody /usr/libexec/fingerd fingerd -s</programlisting>
|
||
|
||
<para>Alla fine, un esempio di questo campo
|
||
con 100 figli in tutto, con un massimo di 5 per singolo
|
||
indirizzo IP sarebbe:
|
||
<literal>nowait/100/0/5</literal>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>user</term>
|
||
|
||
<listitem>
|
||
<para>Questo è lo username sotto il quale un
|
||
particolare demone dovrebbe girare. Di
|
||
frequente, i demoni girano
|
||
come utente <username>root</username>.
|
||
Per motivi di sicurezza, è normale
|
||
trovare alcuni server che girano con l'utente
|
||
<username>daemon</username>, o il meno privilegiato
|
||
utente <username>nobody</username>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>server-program</term>
|
||
|
||
<listitem>
|
||
<para>Il percorso assoluto del demone che deve essere
|
||
eseguito quando è ricevuta una connessione . Se
|
||
il demone è un servizio
|
||
offerto da <application>inetd</application> internamente,
|
||
bisogna usare <option>internal</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>server-program-arguments</term>
|
||
|
||
<listitem>
|
||
<para>Questa opzione funziona in congiunzione con
|
||
<option>server-program</option> specificando gli
|
||
argomenti, cominciando con <literal>argv[0]</literal>,
|
||
passati al demone al momento dell'invocazione.
|
||
Se <command>mydaemon -d</command> è la linea di comando,
|
||
<literal>mydaemon -d</literal> sarà il valore
|
||
dell'opzione <option>server-program-arguments</option>.
|
||
Ancora, se un demone è un servizio interno,
|
||
usa <option>internal</option>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</sect2>
|
||
|
||
<sect2 id="network-inetd-security">
|
||
<title>Sicurezza</title>
|
||
|
||
<para>A seconda delle scelte fatte all'installazione,
|
||
molti servizi di <application>inetd</application>
|
||
potrebbero essere attivi di default. Se
|
||
non c'è necessità
|
||
apparente per un particolare demone,
|
||
considera di disabilitarlo. Usa un <quote>#</quote> a capo della
|
||
riga del demone in questione in <filename>/etc/inetd.conf</filename>,
|
||
e quindi <link linkend="network-inetd-reread">ricarica la
|
||
configurazione di inetd</link>. Alcuni demoni, come
|
||
<application>fingerd</application>, potrebbero
|
||
non essere assolutamente desiderati,
|
||
poichè forniscono all'attaccante informazioni che gli potrebbero
|
||
risultare utili.</para>
|
||
|
||
<para>Alcuni demoni non sono stati creati coll'obiettivo
|
||
della sicurezza ed hanno timeout lunghi, o non esistenti.
|
||
Questo permette ad un attaccante di inviare
|
||
lentamente connessioni
|
||
ad un particolare demone, saturando in questo modo
|
||
le risorse disponibile. Può essere una buona idea
|
||
impostare le limitazioni
|
||
<option>max-connections-per-ip-per-minute</option> e
|
||
<option>max-child</option> o <option>max-child-per-ip</option> su certi
|
||
demoni se scopri di avere troppe connessioni.</para>
|
||
|
||
<para>Di default, il TCP wrapping è attivo.
|
||
Consulta la pagina del manuale
|
||
di &man.hosts.access.5; per impostare
|
||
delle restrizioni TCP su certi demoni
|
||
invocati da <application>inetd</application>.</para>
|
||
</sect2>
|
||
|
||
<sect2 id="network-inetd-misc">
|
||
<title>Miscellanei</title>
|
||
|
||
<para><application>daytime</application>,
|
||
<application>time</application>,
|
||
<application>echo</application>,
|
||
<application>discard</application>,
|
||
<application>chargen</application>, e
|
||
<application>auth</application> sono tutti servizi interni
|
||
di <application>inetd</application>.</para>
|
||
|
||
<para>Il servizio <application>auth</application>
|
||
fornisce servizi di rete di identificazione
|
||
ed è configurabile fino ad un certo punto,
|
||
mentre gli altri possono solo essere accesi o spenti.</para>
|
||
|
||
<para>Consulta la paigna di manuale di &man.inetd.8;
|
||
per dettagli più approfonditi.</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="network-nfs">
|
||
<sect1info>
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Tom</firstname>
|
||
|
||
<surname>Rhodes</surname>
|
||
|
||
<contrib>Riorganizzato e migliorato da </contrib>
|
||
</author>
|
||
</authorgroup>
|
||
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Bill</firstname>
|
||
|
||
<surname>Swingle</surname>
|
||
|
||
<contrib>Scritto da </contrib>
|
||
</author>
|
||
</authorgroup>
|
||
</sect1info>
|
||
|
||
<title>Network File System (NFS)</title>
|
||
|
||
<indexterm><primary>NFS</primary></indexterm>
|
||
|
||
<para>Fra i molti differenti file system che
|
||
FreeBSD supporta c'è il Network File System,
|
||
conosciuto anche come <acronym role="Network
|
||
File System">NFS</acronym>. <acronym role="Network File
|
||
System">NFS</acronym> permette ad un sistema di
|
||
condividere directory
|
||
e file con altri sistemi in rete. Usando <acronym
|
||
role="Network File System">NFS</acronym>,
|
||
utenti e programmi possono
|
||
accedere a file su sistemi remoti quasi
|
||
come se fossero files locali.</para>
|
||
|
||
<para>Alcuni dei più notevoli benefici che
|
||
<acronym>NFS</acronym> ci fornisce sono:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Workstation locali usano meno spazio su
|
||
disco perchè i dati usati in locale possono
|
||
essere conservati su una singola
|
||
macchina e restano accessibili agli altri sulla rete.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Non c'è bisogno per gli utenti di avere
|
||
home directory separate su ogni macchina in rete.
|
||
Le home directory possono essere poste sul
|
||
server <acronym>NFS</acronym> e
|
||
rese disponibili attraverso la rete.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Device di storage come floppy disk, drive
|
||
CDROM, e drive &iomegazip; possono essere usati
|
||
da altre macchine sulla rete.
|
||
Questo può ridurre il numero di device di
|
||
storage rimuovibili sulla rete.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<sect2>
|
||
<title>Come Funziona <acronym>NFS</acronym></title>
|
||
|
||
<para><acronym>NFS</acronym> consiste di almeno due parti:
|
||
un server ed uno o più client. Il client
|
||
accede da remoto ai dati conservati sulla macchina
|
||
server. Affinchè questo funzioni, alcuni processi
|
||
devono essere configurati
|
||
e devono essere attivi.</para>
|
||
|
||
<para>Il server deve avere attivi i seguenti demoni:</para>
|
||
|
||
<indexterm>
|
||
<primary>NFS</primary>
|
||
<secondary>server</secondary>
|
||
</indexterm>
|
||
<indexterm>
|
||
<primary>file server</primary>
|
||
<secondary>UNIX clients</secondary>
|
||
</indexterm>
|
||
<indexterm>
|
||
<primary><application>rpcbind</application></primary>
|
||
</indexterm>
|
||
<indexterm>
|
||
<primary><application>mountd</application></primary>
|
||
</indexterm>
|
||
<indexterm>
|
||
<primary><application>nfsd</application></primary>
|
||
</indexterm>
|
||
|
||
<informaltable frame="none" pgwide="1">
|
||
<tgroup cols="2">
|
||
<colspec colwidth="1*"/>
|
||
|
||
<colspec colwidth="3*"/>
|
||
|
||
<thead>
|
||
<row>
|
||
<entry>Demone</entry>
|
||
|
||
<entry>Descrizione</entry>
|
||
</row>
|
||
</thead>
|
||
|
||
<tbody>
|
||
<row>
|
||
<entry><application>nfsd</application></entry>
|
||
|
||
<entry>Il demone <acronym>NFS</acronym> che serve
|
||
richieste da client <acronym>NFS</acronym>.</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><application>mountd</application></entry>
|
||
|
||
<entry>Il demone di mount <acronym>NFS</acronym>
|
||
che serve le richieste
|
||
che &man.nfsd.8; gli passa.</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><application>rpcbind</application></entry>
|
||
|
||
<entry> Questo demone permette ai client
|
||
<acronym>NFS</acronym> di scoprire quali porte il server
|
||
<acronym>NFS</acronym> sta usando.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
|
||
<para>Il client può anche eseguire un demone,
|
||
noto come <application>nfsiod</application>.
|
||
Il demone <application>nfsiod</application>
|
||
serve le richieste dal server
|
||
<acronym>NFS</acronym>. E' opzionale, aiuta a
|
||
migliorare le prestazioni ma non è indispensabile
|
||
per operazioni corrette. Consultare la pagina
|
||
di manuale di &man.nfsiod.8;
|
||
per più informazioni.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2 id="network-configuring-nfs">
|
||
<title>Configurare <acronym>NFS</acronym></title>
|
||
|
||
<indexterm>
|
||
<primary>NFS</primary>
|
||
<secondary>configurazione</secondary>
|
||
</indexterm>
|
||
|
||
<para>La configurazione di <acronym>NFS</acronym>
|
||
è un processo relativamente semplice.
|
||
I processi che devono essere attivi
|
||
possono essere tutti avviati al boot della macchina
|
||
con poche modifiche al tuo file
|
||
<filename>/etc/rc.conf</filename>.</para>
|
||
|
||
<para>Sul server <acronym>NFS</acronym> assicurati
|
||
che le seguenti opzioni sono configurati nel file
|
||
<filename>/etc/rc.conf</filename>:</para>
|
||
|
||
<programlisting>rpcbind_enable="YES"
|
||
nfs_server_enable="YES"
|
||
mountd_flags="-r"</programlisting>
|
||
|
||
<para><application>mountd</application> viene
|
||
eseguito automaticamente in caso il server
|
||
<acronym>NFS</acronym> sia abilitato.</para>
|
||
|
||
<para>Sul client, accertati che questa riga sia
|
||
attiva nel file
|
||
<filename>/etc/rc.conf</filename>:</para>
|
||
|
||
<programlisting>nfs_client_enable="YES"</programlisting>
|
||
|
||
<para>Il file <filename>/etc/exports</filename>
|
||
specifica quali file system <acronym>NFS</acronym>
|
||
dovrebbe esportare (talora
|
||
chiamate anche <quote>share</quote>). Ogni linea di
|
||
<filename>/etc/exports</filename> specifica un
|
||
file system che deve essere esportato e quali
|
||
macchine hanno accesso a quel file system.
|
||
Assieme alle macchine che hanno accesso a quel file system,
|
||
possono esserci specificate anche opzioni. Ci
|
||
sono molte opzioni di questo tipo che possono essere
|
||
usate in questo file ma solo poche saranno menzionate
|
||
qui. Puoi facilmente
|
||
scoprire le altre opzioni leggendo la pagina di manuale
|
||
di &man.exports.5;.</para>
|
||
|
||
<para>Queste sono alcune linee di esempio del file
|
||
<filename>/etc/exports</filename>:</para>
|
||
|
||
<indexterm>
|
||
<primary>NFS</primary>
|
||
<secondary>esempi di export</secondary>
|
||
</indexterm>
|
||
|
||
<para>I seguenti esempi danno un'idea di
|
||
come esportare file system, anche se le
|
||
impostazioni possono essere diverse
|
||
a seconda del tuo ambiente e della tua
|
||
configurazione di rete.
|
||
Ad esempio, per esportare la directory
|
||
<filename>/cdrom</filename>
|
||
a tre macchine di esempio che hanno lo
|
||
stesso nome di dominio del server (da qui
|
||
la mancanza di nome dominio per ognuno)
|
||
o hanno delle linee nel vostro file
|
||
<filename>/etc/hosts</filename>.
|
||
L'opzione <option>-ro</option> rende il
|
||
file system esportato read-only. Con
|
||
questo flag, il sistema remoto non sarà in grado
|
||
di scrivere alcun cambiamento sul file system
|
||
esportato.</para>
|
||
|
||
<programlisting>/cdrom -ro host1 host2 host3</programlisting>
|
||
|
||
<para>La seguente linea esporta la directory
|
||
<filename>/home</filename> a tre host
|
||
identificati da indirizzo IP. E' una
|
||
impostazione utile in caso tu abbia
|
||
una rete privata senza un <acronym>DNS</acronym> server
|
||
configurato. Opzionalmente il file
|
||
<filename>/etc/hosts</filename>
|
||
può essere configurato per hostname interni.
|
||
Per favore rileggi
|
||
&man.hosts.5; per più informazioni. Il flag
|
||
<option>-alldirs</option> permette alle sottodirectory
|
||
di fungere da mount point. In altre parole, non monterà
|
||
le sottodirectory ma permetterà ai client di montare
|
||
solo le directory che necessita o di cui ha bisogno.</para>
|
||
|
||
<programlisting>/home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4</programlisting>
|
||
|
||
<para>La linea seguente esporta <filename>/a</filename>
|
||
cosicchè due client da diversi domini possono accedere
|
||
al file system. L'opzione <option>-maproot=root</option>
|
||
permette all'utente <username>root</username> sul
|
||
sistema remoto di scrivere dati
|
||
sul file system esportato come utente <username>root</username>.
|
||
Se il flag <literal>-maproot=root</literal> non
|
||
è specificato, anche se l'utente ha accesso come
|
||
<username>root</username> sul file system remoto,
|
||
non sarà in grado di modificare files sul file system
|
||
esportato.</para>
|
||
|
||
<programlisting>/a -maproot=root host.example.com box.example.org</programlisting>
|
||
|
||
<para>Affinchè un client abbia accesso ad
|
||
un file system, questo deve avere permessi adeguati.
|
||
Assicurati che il client sia elencato nel
|
||
file <filename>/etc/exports</filename>.</para>
|
||
|
||
<para>In <filename>/etc/exports</filename>, ogni
|
||
linea rappresenta le informazioni per un
|
||
file system esportato ad un host. Un
|
||
host remoto può essere specificato solo
|
||
una volta per file system, e può
|
||
avere solo una entry di default. Ad esempio,
|
||
supponi che <filename>/usr</filename> sia
|
||
un singolo file system. Il seguente
|
||
<filename>/etc/exports</filename> sarebbe
|
||
invalido:</para>
|
||
|
||
<programlisting># Invalid when /usr is one file system
|
||
/usr/src client
|
||
/usr/ports client</programlisting>
|
||
|
||
<para>Un file system, <filename>/usr</filename>,
|
||
ha due linee che specificano exports verso lo stesso
|
||
host, <hostid>client</hostid>.
|
||
Il formato corretto per questa situazione è:</para>
|
||
|
||
<programlisting>/usr/src /usr/ports client</programlisting>
|
||
|
||
<para>Le proprietà di un file system esportato
|
||
ad un dato host devono essere tutte su una
|
||
riga. Linee senza un cliente specificato
|
||
sono trattate come un singolo host. Questo
|
||
limita il modo di esportare file system, ma
|
||
per la maggior parte delle persone
|
||
non è un problema.</para>
|
||
|
||
<para>Il seguente è un esempio di valida
|
||
lista di esportazione, dove
|
||
<filename>/usr</filename> e <filename>/exports</filename>
|
||
<filename>/usr</filename> and <filename>/exports</filename>
|
||
sono file system locali:</para>
|
||
|
||
<programlisting># Export src and ports to client01 and client02, but
|
||
only
|
||
# client01 has root privileges on it
|
||
/usr/src /usr/ports -maproot=root client01
|
||
/usr/src /usr/ports client02
|
||
# The client machines have root and can mount anywhere
|
||
# on /exports. Anyone in the world can mount /exports/obj read-only
|
||
/exports -alldirs -maproot=root client01 client02
|
||
/exports/obj -ro</programlisting>
|
||
|
||
<para>Il demone <application>mountd</application> deve
|
||
essere forzato a rileggere il file <filename>/etc/exports</filename>
|
||
ogni volta che lo modifichi,
|
||
cosicchè i cambiamenti abbiano effetto.
|
||
Questo può essere ottenuto inviando un segnale HUP
|
||
al processo <command>mountd</command>:</para>
|
||
|
||
<screen>&prompt.root; <userinput>kill -HUP `cat /var/run/mountd.pid`</userinput></screen>
|
||
|
||
<para>o invocando lo script <command>mountd</command> &man.rc.8;
|
||
con i parametri appropriati:</para>
|
||
|
||
<screen>&prompt.root; <userinput>/etc/rc.d/mountd onereload</userinput></screen>
|
||
|
||
<para>Sei invitato a far riferimento a <xref linkend="configtuning-initial"/> per
|
||
maggiori informazioni sugli script rc.</para>
|
||
|
||
|
||
<para>Alternativamente, un reboot farà sì
|
||
che FreeBSD imposti tutto
|
||
correttamente. Non è necessario tuttavia effettuare
|
||
un reboot. L'esecuzione del seguente comando da
|
||
utente <username>root</username>
|
||
dovrebbe avviare tutto.</para>
|
||
|
||
<para>Sul server <acronym>NFS</acronym>:</para>
|
||
|
||
<screen>&prompt.root; <userinput>rpcbind</userinput>
|
||
&prompt.root; <userinput>nfsd -u -t -n 4</userinput>
|
||
&prompt.root; <userinput>mountd -r</userinput></screen>
|
||
|
||
<para>Sul client <acronym>NFS</acronym>:</para>
|
||
|
||
<screen>&prompt.root; <userinput>nfsiod -n 4</userinput></screen>
|
||
|
||
<para>Ora dovrebbe essere tutto pronto per montare
|
||
un file system remoto.
|
||
In questi esempi il nome del server
|
||
sarà <hostid>server</hostid> e quello del client
|
||
sarà <hostid>client</hostid>. Se vuoi solo
|
||
temporaneamente montare un file system remoto o
|
||
anche testare la configurazione, basta che
|
||
esegui un comando come questo
|
||
come utente <username>root</username> sul client:</para>
|
||
|
||
<indexterm>
|
||
<primary>NFS</primary>
|
||
<secondary>mounting</secondary>
|
||
</indexterm>
|
||
|
||
<screen>&prompt.root; <userinput>mount server:/home
|
||
/mnt</userinput></screen>
|
||
|
||
<para>Questo monterà la directory
|
||
<filename>/home</filename> del server
|
||
sopra <filename>/mnt</filename> sul client. Se
|
||
tutto è impostato correttamente dovresti
|
||
essere in grado di entrare nella directory
|
||
<filename>/mnt</filename> sul client e vedere
|
||
tutti i file che sono sul server.</para>
|
||
|
||
<para>Se vuoi montare automaticamente un
|
||
file system remoto ogni volta che il
|
||
computer fa boot, aggiungi il file system
|
||
al file <filename>/etc/fstab</filename>.
|
||
Questo è un esempio:</para>
|
||
|
||
<programlisting>server:/home /mnt nfs rw 0 0</programlisting>
|
||
|
||
<para>La pagina di manuale di &man.fstab.5;
|
||
elenca tutte le possibili opzioni.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Locking</title>
|
||
|
||
<para>Alcune applicazioni (es. <application>mutt</application>)
|
||
richiedono il lock dei file per operare in modo corretto.
|
||
In caso di <acronym>NFS</acronym>, può essere utilizzato
|
||
<application>rpc.lockd</application> per il lock dei file.
|
||
Per abilitarlo, aggiungi la seguente riga al file
|
||
<filename>/etc/rc.conf</filename> sia sul client che sul
|
||
server (assumendo che il client e server <acronym>NFS</acronym>
|
||
siano già configurati):</para>
|
||
|
||
<programlisting>rpc_lockd_enable="YES"
|
||
rpc_statd_enable="YES"</programlisting>
|
||
|
||
<para>Avvia l'applicazione con:</para>
|
||
|
||
<screen>&prompt.root; <userinput>/etc/rc.d/nfslocking start</userinput></screen>
|
||
|
||
<para>Se non è richiesto un lock reale tra il server
|
||
e il client <acronym>NFS</acronym>, è possibile
|
||
dire al client <acronym>NFS</acronym> di fare un lock locale
|
||
passando l'opzione <option>-L</option> a &man.mount.nfs.8;.
|
||
Ulteriori dettagli possono essere trovati nella pagina man di
|
||
&man.mount.nfs.8;.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Usi Pratici</title>
|
||
|
||
<para><acronym>NFS</acronym> ha molti usi
|
||
pratici. Alcuni
|
||
dei più usati sono elencati di seguito:</para>
|
||
|
||
<indexterm>
|
||
<primary>NFS</primary>
|
||
<secondary>usi</secondary>
|
||
</indexterm>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Fa sì che alcune macchine
|
||
condividano un CDROM o un altro media
|
||
fra di loro. Questo è un metodo
|
||
più economico e spesso più convieniente
|
||
di installare software su molte macchine.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Su grandi reti, potrebbe essere più
|
||
conveniente configurare un server
|
||
<acronym>NFS</acronym> centrale in cui
|
||
conservare tutte le home directory degi utenti.
|
||
Queste home directory
|
||
possono essere esportate sulla rete cosicchè
|
||
gli utenti abbiano sempre la stessa directory,
|
||
indipendentemente dalla workstation dalla quale
|
||
effettuino il login.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Molte macchine potrebbero avere una
|
||
directory comune
|
||
<filename>/usr/ports/distfiles</filename>.
|
||
In questo modo, quando hai bisogno di
|
||
installare un port su molte macchine,
|
||
puoi velocemente accedere al sorgente senza
|
||
scaricarlo su ogni macchina.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
|
||
<sect2 id="network-amd">
|
||
<sect2info>
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Wylie</firstname>
|
||
|
||
<surname>Stilwell</surname>
|
||
|
||
<contrib>Grazie al contributo di </contrib>
|
||
</author>
|
||
</authorgroup>
|
||
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Chern</firstname>
|
||
|
||
<surname>Lee</surname>
|
||
|
||
<contrib>Riscritto da </contrib>
|
||
</author>
|
||
</authorgroup>
|
||
</sect2info>
|
||
|
||
<title>Mount automatici con <application>amd</application></title>
|
||
|
||
<indexterm><primary>amd</primary></indexterm>
|
||
<indexterm><primary>demone di mount automatico</primary></indexterm>
|
||
|
||
<para>&man.amd.8; (il demone di mount automatico)
|
||
monta automaticamente un file system remoto
|
||
ogni volta che un file o una directory in quel
|
||
file system viene acceduto. I file system che sono
|
||
inattivi per un certo periodo di tempo possono
|
||
anche essere smontati automaticamente da
|
||
<application>amd</application>. L'uso di
|
||
<application>amd</application> fornisce una semplice
|
||
alternativa a mount permanenti, dato che i mount
|
||
permanenti sono di solito
|
||
elencati in <filename>/etc/fstab</filename>.</para>
|
||
|
||
<para><application>amd</application> opera connettendosi
|
||
ad un server NFS sulle directory
|
||
<filename>/host</filename> e
|
||
<filename>/net</filename>. Quando si accede ad un file
|
||
all'interno di una di queste directory,
|
||
<application>amd</application>
|
||
fa una ricerca del mount remoto corrispondente e lo
|
||
monta automaticamente. <filename>/net</filename>
|
||
è usato per montare
|
||
un file system esportato da un indirizzo IP,
|
||
mentre <filename>/host</filename>
|
||
è usato per montare un export da un hostname remoto.</para>
|
||
|
||
<para>Un accesso ad un file in
|
||
<filename>/host/foobar/usr</filename> dovrebbe
|
||
comunicare a <application>amd</application> di
|
||
cercare di montare
|
||
l'export <filename>/usr</filename> sull'host
|
||
<hostid>foobar</hostid>.</para>
|
||
|
||
<example>
|
||
<title>Montare un export con
|
||
<application>amd</application></title>
|
||
|
||
<para>Puoi osservare i mount disponibili di un
|
||
host remoto con il comando
|
||
<command>showmount</command>. Ad esempio, per
|
||
vedere i mounts di un host chiamato
|
||
<hostid>foobar</hostid>, puoi usare:</para>
|
||
|
||
<screen>&prompt.user; <userinput>showmount -e foobar</userinput>
|
||
Exports list on foobar:
|
||
/usr 10.10.10.0
|
||
/a 10.10.10.0
|
||
&prompt.user; <userinput>cd /host/foobar/usr</userinput></screen>
|
||
</example>
|
||
|
||
<para>Come si vede nell'esempio,
|
||
il comando <command>showmount</command> mostra
|
||
<filename>/usr</filename> come un export.
|
||
Quando si cambia directory in
|
||
<filename>/host/foobar/usr</filename>,
|
||
<application>amd</application>
|
||
cerca di risolvere <hostid>foobar</hostid> e
|
||
automaticamente monta l'export desiderato.</para>
|
||
|
||
<para><application>amd</application> può essere
|
||
avviato dagli scripts di startup inserendo le
|
||
seguenti linee in
|
||
<filename>/etc/rc.conf</filename>:</para>
|
||
|
||
<programlisting>amd_enable="YES"</programlisting>
|
||
|
||
<para>Inoltre, altri flags personalizzati possono essere
|
||
ad <application>amd</application> con le opzioni
|
||
<varname>amd_flags</varname>. Di default,
|
||
<varname>amd_flags</varname> è impostato a:</para>
|
||
|
||
<programlisting>amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map
|
||
/net /etc/amd.map"</programlisting>
|
||
|
||
<para>Il file <filename>/etc/amd.map</filename>
|
||
definisce le opzioni di default con le quali
|
||
gli export sono montati. Il file
|
||
<filename>/etc/amd.conf</filename> definisce
|
||
alcune delle più avanzate caratteristiche di
|
||
<application>amd</application>.</para>
|
||
|
||
<para>Consulta le pagine di manuale di &man.amd.8;
|
||
e &man.amd.conf.5;
|
||
per maggiori informazioni.</para>
|
||
</sect2>
|
||
|
||
<sect2 id="network-nfs-integration">
|
||
<sect2info>
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>John</firstname>
|
||
|
||
<surname>Lind</surname>
|
||
|
||
<contrib>Grazie al contributo di </contrib>
|
||
</author>
|
||
</authorgroup>
|
||
</sect2info>
|
||
|
||
<title>Problemi nell'integrazione con altri sistemi</title>
|
||
|
||
<para>Alcuni adapter Ethernet per sistemi PC hanno
|
||
limitazioni che possono portare a seri
|
||
problemi seri di rete, in particolare con NFS.
|
||
Questa difficoltà non è specifica a FreeBSD,
|
||
ma i sistemi FreeBSD ne sono affetti.</para>
|
||
|
||
<para>I problemi avvengono quasi sempre
|
||
quando sistemi PC (FreeBSD) sono
|
||
connessi in rete con workstation ad alta
|
||
performance, tipo quelli di
|
||
Silicon Graphics, Inc., e Sun Microsystems, Inc.
|
||
Il mount NFS funziona, ed alcune operazioni possono
|
||
avere successo, ma d'improvviso sembra che il
|
||
server non dia più risposte al client,
|
||
anche se le richieste da e verso altri sistemi
|
||
continuano ad essere processate.
|
||
Questo avviene sul sistema client, sia che
|
||
il client sia il sistema
|
||
FreeBSD sia che sia la workstation. Su molti sistemi,
|
||
non c'è modo di effettuare lo shutdown del client
|
||
in modo pulito una volta che questo problema si
|
||
sia manifestato. L'unica soluzione
|
||
è spesso quella di resettare il client,
|
||
poichè la situazione NFS
|
||
non può essere risolta.</para>
|
||
|
||
<para>Anche se la soluzione <quote>corretta</quote>
|
||
è usare un adapter Ethernet dalle migliori
|
||
prestazioni e capacità , c'è un semplice
|
||
workaround che permetterà operazioni soddisfacenti.
|
||
Se il sistem FreeBSD è il <emphasis>server</emphasis>,
|
||
includi le opzioni <option>-w=1024</option> al
|
||
mount dal client. Se il sistema FreeBSD
|
||
è il <emphasis>client</emphasis>, allora monta
|
||
il file system NFS con l'opzione <option>-r=1024</option>.
|
||
Queste opzioni possono essere specificate usando
|
||
il quarto campo della linea di
|
||
<filename>fstab</filename> sul client per
|
||
mount automatici, o usa il parametro <option>-o</option>
|
||
del comando &man.mount.8; per mount manuali.</para>
|
||
|
||
<para>Bisognerebbe notare che c'è un problema diverso,
|
||
a volte confuso con questo, quando il server NFS ed
|
||
il client sono su reti diverse. Se è questo
|
||
il caso, <emphasis>accertatevi</emphasis>
|
||
che i vostri router indirizzino correttamente l'informazione
|
||
necessaria su <acronym>UDP</acronym>, o non andrai
|
||
da nessuna parte, indipendentemente da cosa tu
|
||
stia cercando di fare.</para>
|
||
|
||
<para>Nei seguenti esempi, <hostid>fastws</hostid> è
|
||
il nome host (interfaccia) di una workstation
|
||
ad alte prestazioni, e <hostid>freebox</hostid>
|
||
è il nome host (interfaccia) di un sistema FreeBSD con
|
||
un adapter Ethernet a basse prestazioni. Inoltre,
|
||
<filename>/sharedfs</filename> sarà il file system esportato
|
||
(vedi &man.exports.5;), e <filename>/project</filename>
|
||
sarà il mount point sul client per il file system
|
||
montato. In tutti i casi, nota che le opzioni
|
||
<option>hard</option> o <option>soft</option> e
|
||
<option>bg</option> possono essere utili
|
||
nella tua applicazione.</para>
|
||
|
||
<para>Esempi dal sistema FreeBSD (<hostid>freebox</hostid>)
|
||
come client da <filename>/etc/fstab</filename> su
|
||
<hostid>freebox</hostid>:</para>
|
||
|
||
<programlisting>fastws:/sharedfs /project nfs rw,-r=1024 0 0</programlisting>
|
||
|
||
<para>Come comando manuale di mount da
|
||
<hostid>freebox</hostid>:</para>
|
||
|
||
<screen>&prompt.root; <userinput>mount -t nfs -o -r=1024 fastws:/sharedfs /project</userinput></screen>
|
||
|
||
<para>Esempi dal sistema FreeBSD come server in
|
||
<filename>/etc/fstab</filename> su
|
||
<hostid>fastws</hostid>:</para>
|
||
|
||
<programlisting>freebox:/sharedfs /project nfs rw,-w=1024 0 0</programlisting>
|
||
|
||
<para>Come comando di mount manuale su
|
||
<hostid>fastws</hostid>:</para>
|
||
|
||
<screen>&prompt.root; <userinput>mount -t nfs -o -w=1024 freebox:/sharedfs /project</userinput></screen>
|
||
|
||
<para>Praticamente ogni Ethernet adapter a 16-bit permetterà
|
||
operazioni senza le succitate restrizioni sulla dimensione
|
||
di lettura e scrittura.</para>
|
||
|
||
<para>Per chiunque è interessato, ecco cosa succede quando
|
||
occorre il problema, il che spiega anche perchè sia
|
||
non riparabile. NFS tipicamente lavora con una dimensione
|
||
di <quote>block</quote> di 8 K (anche se può creare
|
||
frammenti di dimensione minore). Dal momento che la
|
||
massima dimensione dei pacchetti Ethernet è attorno
|
||
a 1500 bytes, il <quote>block</quote> NFS sarà
|
||
diviso in molti pacchetti Ethernet
|
||
anche se è pur sempre una singola unità per il codice
|
||
di più alto livello e deve essere ricevuto, assemblato
|
||
e <emphasis>riconosciuto</emphasis> come una unità .
|
||
La workstation ad alta performance può inviare
|
||
pacchetti che comprendono le unità NFS una dietro l'altra,
|
||
l'una vicino all'altra come permette lo standard.i
|
||
Sulla scheda a minore capacità , gli ultimi pacchetti
|
||
sovrascrivono i precedenti pacchetti della stessa
|
||
unità prima che possano essere trasferiti all'host
|
||
e l'unità nella
|
||
sua interezza non può essere ricostruita
|
||
o riconosciuta. Come risultato, la workstation andrà
|
||
in timeout e cercherà ancora di ripetere l'operazione,
|
||
ma cercherà con la stessa unità da 8 K, ed il
|
||
processo sarà ripetuto ancora, all'infinito.</para>
|
||
|
||
<para>Mantenendo la dimensione dell'unità al di sotto
|
||
della limitazione dei pacchetti Ethernet, ci assicuriamo che
|
||
ogni completo pacchetto Ethernet ricevuto possa essere
|
||
ricono sciuto individualmente, evitando così la
|
||
situazione deadlock.</para>
|
||
|
||
<para>Sovrascritture possono anche capitare quando una
|
||
workstation ad alte prestazioni riversi dati verso
|
||
un sistema PC, ma con la scheda di rete migliore,
|
||
sovrascritture di questo tipo non sono garantite su
|
||
<quote>unità </quote> NFS. Quando una sovrascrittura
|
||
avviene, le unità affette saranno ritrasmesse,
|
||
e c'è una buona probabilità che saranno
|
||
ricevute, assemblate, e riconosciute.</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="network-nis">
|
||
<sect1info>
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Bill</firstname>
|
||
|
||
<surname>Swingle</surname>
|
||
|
||
<contrib>Scritto da </contrib>
|
||
</author>
|
||
</authorgroup>
|
||
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Eric</firstname>
|
||
|
||
<surname>Ogren</surname>
|
||
|
||
<contrib>Migliorato da </contrib>
|
||
</author>
|
||
|
||
<author>
|
||
<firstname>Udo</firstname>
|
||
|
||
<surname>Erdelhoff</surname>
|
||
</author>
|
||
</authorgroup>
|
||
</sect1info>
|
||
|
||
<title>Network Information System (NIS/YP)</title>
|
||
|
||
<sect2>
|
||
<title>Cos'è?</title>
|
||
|
||
<indexterm><primary>NIS</primary></indexterm>
|
||
<indexterm><primary>Solaris</primary></indexterm>
|
||
<indexterm><primary>HP-UX</primary></indexterm>
|
||
<indexterm><primary>AIX</primary></indexterm>
|
||
<indexterm><primary>Linux</primary></indexterm>
|
||
<indexterm><primary>NetBSD</primary></indexterm>
|
||
<indexterm><primary>OpenBSD</primary></indexterm>
|
||
|
||
<para><acronym role="Network Information System">NIS</acronym>,
|
||
che sta per Network Information Services, fu sviluppato
|
||
da Sun Microsystems per centralizzare l'amministrazione
|
||
di sistemi &unix; (in origine &sunos;). Ora in sostanza
|
||
è diventato uno standard di settore; tutti i sistemi
|
||
&unix; like (&solaris;, HP-UX, &aix;, Linux, NetBSD,
|
||
OpenBSD, FreeBSD, etc) supportano
|
||
<acronym role="Network Information
|
||
System">NIS</acronym>.</para>
|
||
|
||
<indexterm><primary>yellow pages</primary><see>NIS</see></indexterm>
|
||
|
||
<para><acronym role="Network Information System">NIS</acronym>
|
||
in precedenza era noto come Yellow Pages, ma per una questione
|
||
di marchi, Sun ha cambiato il nome. Il vecchio termine (e yp)
|
||
è ancora si incontra ancora spesso.</para>
|
||
|
||
<indexterm>
|
||
<primary>NIS</primary>
|
||
<secondary>domini</secondary>
|
||
</indexterm>
|
||
|
||
<para>E' un sistema client/server basato su RPC che
|
||
permette ad un gruppo di macchine in un dominio
|
||
NIS di condividere un insieme comune di file di
|
||
configurazione. Questo permette ad un amministratore
|
||
di sistema di installare sistemi client
|
||
NIS con il minimo di dati di configurazione e di aggiungere,
|
||
rimuovere o modificare dati di configurazione da una singola
|
||
macchina.</para>
|
||
|
||
<indexterm><primary>Windows NT</primary></indexterm>
|
||
|
||
<para>E' simile al sistema di domini di &windowsnt;; anche
|
||
se le implementazioni interne dei due sistemi sono del tutto
|
||
diverse, le funzionalità base possono essere
|
||
paragonate.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Termini/Processi che Dovresti Conoscere</title>
|
||
|
||
<para>Ci sono parecchi termini e molti importanti processi
|
||
utente che incontrerai quando cercherai di implementare
|
||
NIS su FreeBSD, sia che cerchi di creare un server NIS
|
||
sia che cerchi di installare un client NIS:</para>
|
||
|
||
<indexterm>
|
||
<primary><application>rpcbind</application></primary>
|
||
</indexterm>
|
||
<indexterm>
|
||
<primary><application>portmap</application></primary>
|
||
</indexterm>
|
||
|
||
<informaltable frame="none" pgwide="1">
|
||
<tgroup cols="2">
|
||
<colspec colwidth="1*"/>
|
||
|
||
<colspec colwidth="3*"/>
|
||
|
||
<thead>
|
||
<row>
|
||
<entry>Termine</entry>
|
||
|
||
<entry>Descrizione</entry>
|
||
</row>
|
||
</thead>
|
||
|
||
<tbody>
|
||
<row>
|
||
<entry>Nome dominio NIS</entry>
|
||
|
||
<entry>Un server NIS master e tutti i suoi client
|
||
(inclusi i suoi server slave) hanno un nome
|
||
dominio NIS. Analogamente al nome dominio di
|
||
&windowsnt;, il nome dominio NIS non ha nulla
|
||
a che fare
|
||
con il <acronym>DNS</acronym>.</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><application>rpcbind</application></entry>
|
||
|
||
<entry>Deve essere in esecuzione al fine
|
||
di abilitare <acronym>RPC</acronym> (Remote
|
||
Procedure Call, un protocollo di rete usato da NIS).
|
||
Se <application>rpcbind</application> non è attivo,
|
||
sarà impossibile portare in esecuzione un server NIS
|
||
o fungere da client NIS
|
||
</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><application>ypbind</application></entry>
|
||
|
||
<entry>Esegue il <quote>bind</quote> di un client NIS
|
||
al suo server. Prenderà il nome dominio NIS dal
|
||
sistema, e, usando <acronym>RPC</acronym>, si
|
||
connetterà al server.
|
||
<application>ypbind</application>
|
||
è il fulcro di una comunicazione client-server in
|
||
ambiente NIS; se <application>ypbind</application>
|
||
muore su un client, questo non sarà in grado di
|
||
accedere il server NIS.</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><application>ypserv</application></entry>
|
||
|
||
<entry>Dovrebbe essere in esecuzione solo sui
|
||
server NIS;è il processo NIS vero e
|
||
proprio. Se &man.ypserv.8;
|
||
muore, il server non sarà più in grado di
|
||
rispondere a richieste NIS (si spera ci sia
|
||
un server slave per sostituirlo). Ci sono
|
||
alcune implementazioni di NIS
|
||
(ma non quello di FreeBSD) che non cerca di
|
||
ricollegarsi ad un altro server se il server
|
||
che stava usando muore. Spesso, l'unica cosa
|
||
che aiuta in questo caso è riavviare il
|
||
processo server (o anche
|
||
l'intero server o il processo
|
||
<application>ypbind</application> sul client).</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><application>rpc.yppasswdd</application></entry>
|
||
|
||
<entry>Un altro processo che dovrebbe essere in
|
||
esecuzione solo sui server master NIS; è un demone
|
||
che permette a client NIS di cambiare le proprie
|
||
password NIS. Se questo demone non è attivo,
|
||
gli utenti dovranno loggarsi al server master NIS
|
||
e cambiare le proprie password da lì.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Come funziona?</title>
|
||
|
||
<para>Ci sono tre tipi di host in ambiente NIS:
|
||
master server, slave server e client. I server
|
||
fungono da magazzino centralizzato per le
|
||
informazioni sulla configurazione degli host. I
|
||
server master mantengono la copia "ufficiale"
|
||
di queste informazioni, mentre i server slave effettuano
|
||
il mirror di queste informazioni per ridondanza. I client
|
||
si affidano al server per ottenere queste informazioni.</para>
|
||
|
||
<para>Le informazioni in molti file possono essere
|
||
condivise in questo modo. I file
|
||
<filename>master.passwd</filename>
|
||
,<filename>group</filename> e <filename>hosts</filename> sono
|
||
in genere condivisi in questo modo via NIS. Qualora un
|
||
processo su un client necessiti di informazioni che
|
||
normalmente sarebbero trovate in questi file in locale,
|
||
fa una query al server NIS a cui è legato.</para>
|
||
|
||
<sect3>
|
||
<title>Tipi di macchine</title>
|
||
|
||
<itemizedlist>
|
||
<indexterm>
|
||
<primary>NIS</primary>
|
||
<secondary>master server</secondary>
|
||
</indexterm>
|
||
|
||
<listitem>
|
||
<para>Un <emphasis>server master NIS</emphasis>. Questo
|
||
server, analogamente a primary domain controller
|
||
&windowsnt; , mantiene i file usati da tutti i client
|
||
NIS. Il file <filename>passwd</filename>,
|
||
il file <filename>group</filename>, e vari altri
|
||
file usati da client NIS vivono sul
|
||
server master.</para>
|
||
|
||
<note>
|
||
<para>E' possibile per una macchina agire
|
||
da master server NIS per più di un dominio
|
||
NIS. Comunque, questo caso non sarà
|
||
coperto in questa introduzione,
|
||
che presuppone un ambiente NIS relativamente piccolo.</para>
|
||
</note>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<indexterm>
|
||
<primary>NIS</primary>
|
||
<secondary>slave server</secondary>
|
||
</indexterm>
|
||
|
||
<para><emphasis>NIS slave server</emphasis>. Analogamente
|
||
a backup domain controller &windowsnt;, i server
|
||
slave NIS mantengono copie dei file di dati
|
||
del server master NIS. I server slave NIS garantiscono
|
||
la ridondanza che viene richiesta in ambienti
|
||
importanti. Inoltre aiutano a bilanciare il carico
|
||
del server master: i client NIS si legano sempre
|
||
al NIS server che risponde per primo alla loro richiesta,
|
||
compresi i server slave.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<indexterm>
|
||
<primary>NIS</primary>
|
||
<secondary>client</secondary>
|
||
</indexterm>
|
||
|
||
<para><emphasis>NIS client</emphasis>. I client NIS,
|
||
come la maggior parte delle workstation &windowsnt;
|
||
, si autenticano nei confronti del NIS server
|
||
(o del domain controller &windowsnt; nel caso di
|
||
workstation &windowsnt;) per effettuare il login.
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Usare NIS/YP</title>
|
||
|
||
<para>Questa sezione riguarderà l'installazione
|
||
di un ambiente di esempio NIS.</para>
|
||
|
||
<sect3>
|
||
<title>Il Piano</title>
|
||
|
||
<para>Supponiamo che tu sia l'amministratore di un piccolo
|
||
laboratorio universitario. Questo laboratorio, che
|
||
consiste di 15 macchine FreeBSD, al momento non ha
|
||
un sistema centralizzato di amministrazione; ogni
|
||
macchina ha il suo <filename>/etc/passwd</filename> e
|
||
<filename>/etc/master.passwd</filename>. Questi file
|
||
sono tenuti sincronizzati fra di loro attraverso
|
||
intervento manuale; al momento, quando aggiungi un utente
|
||
al laboratorio, devi eseguire <command>adduser</command>
|
||
su tutte e 15 le macchine. Chiaramente, questa situazione
|
||
è provvisoria, così hai deciso di convertire il
|
||
laboratorio a NIS, usando due delle macchine
|
||
come server.</para>
|
||
|
||
<para>Così la configurazione del laboratorio adesso
|
||
sembra questa:</para>
|
||
|
||
<informaltable frame="none" pgwide="1">
|
||
<tgroup cols="3">
|
||
<thead>
|
||
<row>
|
||
<entry>Nome della macchina</entry>
|
||
|
||
<entry>Indirizzo IP</entry>
|
||
|
||
<entry>Ruolo della macchina</entry>
|
||
</row>
|
||
</thead>
|
||
|
||
<tbody>
|
||
<row>
|
||
<entry><hostid>ellington</hostid></entry>
|
||
|
||
<entry><hostid role="ipaddr">10.0.0.2</hostid></entry>
|
||
|
||
<entry>NIS master</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><hostid>coltrane</hostid></entry>
|
||
|
||
<entry><hostid role="ipaddr">10.0.0.3</hostid></entry>
|
||
|
||
<entry>NIS slave</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><hostid>basie</hostid></entry>
|
||
|
||
<entry><hostid role="ipaddr">10.0.0.4</hostid></entry>
|
||
|
||
<entry>Workstation della facoltà</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><hostid>bird</hostid></entry>
|
||
|
||
<entry><hostid role="ipaddr">10.0.0.5</hostid></entry>
|
||
|
||
<entry>Macchina client</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><hostid>cli[1-11]</hostid></entry>
|
||
|
||
<entry><hostid role="ipaddr">10.0.0.[6-17]</hostid></entry>
|
||
|
||
<entry>Altre macchine client</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
|
||
<para>Se stai installando uno schema NIS per la
|
||
prima volta, è una buona idea riflettere
|
||
su come affrontarlo. Indipendemente dalla
|
||
dimensione della rete, ci sono alcune
|
||
decisioni che devono essere prese.</para>
|
||
|
||
<sect4>
|
||
<title>Scegliere un nome dominio NIS</title>
|
||
|
||
<indexterm>
|
||
<primary>NIS</primary>
|
||
<secondary>Nome dominio</secondary>
|
||
</indexterm>
|
||
|
||
<para>Questo può non essere il
|
||
<quote>nome dominio</quote> a
|
||
cui sei abituato. Per la precisione viene chiamato
|
||
<quote>nome dominio NIS</quote>. Quando un client
|
||
fa il broadcast della sua richiesta per informazioni,
|
||
include il nome del dominio NIS di cui fa parte.
|
||
In questo modo molti server su una rete possono distinguere
|
||
a quale server la richiesta è riferita. Considerate
|
||
il nome dominio NIS come il nome per un gruppo di host
|
||
che sono collegati per qualche motivo.</para>
|
||
|
||
<para>Alcune organizzazioni scelgono di usare il loro
|
||
nome dominio Internet come nome dominio NIS. Questo non
|
||
è raccomandabile in quanto può causare confusione
|
||
quando si cerchi di debuggare problemi di rete.
|
||
Il nome dominio NIS dovrebbe essere unico all'interno
|
||
della tua rete ed è utile che sia descrittivo
|
||
del gruppo di macchine che rappresenta. Per
|
||
esempio, il dipartimento di Arte della Acme Inc. può
|
||
essere nel dominio <quote>acme-art</quote>. Per questo
|
||
esempio, si presume tu abbia scelto il nome
|
||
<literal>test-domain</literal>.</para>
|
||
|
||
<indexterm><primary>SunOS</primary></indexterm>
|
||
|
||
<para>Comunque, alcuni sistemi operativi (principalmente
|
||
&sunos;) usano il loro nome dominio NIS come loro nome
|
||
dominio Internet. Se una o più macchine sulla tua rete
|
||
hanno questa restrizione, tu <emphasis>devi</emphasis>
|
||
usare il nome dominio Internet come il tuo
|
||
nome dominio NIS.</para>
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Requisiti fisici dei server</title>
|
||
|
||
<para>Ci sono molte cose da tener in mente quando si
|
||
sceglie quale macchina usare come server NIS. Una
|
||
delle caratteristiche più sfortunate di NIS
|
||
è il livello di dipendenza che i client hanno
|
||
verso il server. Se un client non riesce a
|
||
contattare il server per
|
||
il suo dominio NIS, molto spesso la macchina risulta
|
||
inutilizzabile. La mancanza di informazioni utente e
|
||
di gruppo fa sì che molti sistemi si blocchino. Tenendo
|
||
questo in mente dovresti accertati di scegliere una
|
||
macchina che non sia soggetta a reboot frequenti o
|
||
una che non sia usata per sviluppo. Il server
|
||
NIS dovrebbe essere in teoria una macchina
|
||
stand alone il cui unico
|
||
scopo di esistenza è essere un server NIS. Se hai una
|
||
rete non pesantemente trafficata,
|
||
è accettabile installare
|
||
il server NIS su una macchina che esegue altri servizi,
|
||
basta ricordarsi che se il server NIS diventa
|
||
irrangiungibile, <emphasis>tutti</emphasis> i tuoi
|
||
client NIS ne saranno affetti in modo negativo.</para>
|
||
</sect4>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Server NIS</title>
|
||
|
||
<para> Le copie canoniche di tutte le informazioni NIS
|
||
sono conservate su una singola macchina chiamata
|
||
il server master NIS. I database usati per conservare
|
||
le informazioni sono chiamate mappe NIS. In FreeBSD,
|
||
queste mappe sono conservate in
|
||
<filename>/var/yp/[nome-dominio]</filename> dove
|
||
<filename>[nome-dominio]</filename> è il nome del dominio
|
||
NIS che si server. Un singolo server NIS può supportare
|
||
molti domini al tempo stesso, di conseguenza è
|
||
possibile avere molte directory di questo tipo,
|
||
una per ogni dominio supportato. Ogni dominio
|
||
avrà il suo insieme indipendente di mappe.</para>
|
||
|
||
<para>I server NIS master e slave gestiscono tutte le
|
||
richieste NIS col demone <command>ypserv</command>.
|
||
<command>ypserv</command> è responsabile per
|
||
la ricezione delle richieste in entrata dai client NIS,
|
||
traducendo il dominio richiesto e il nome mappa ad un
|
||
percorso verso il file di database e trasmettendo
|
||
i dati indietro al client.</para>
|
||
|
||
<sect4>
|
||
<title>Installare un server master NIS</title>
|
||
|
||
<indexterm>
|
||
<primary>NIS</primary>
|
||
<secondary>configurazione del server</secondary>
|
||
</indexterm>
|
||
|
||
<para>Installare un server master NIS può essere
|
||
relativamente semplice, a seconda delle tue
|
||
necessità . FreeBSD presenta un supporto nativo
|
||
per NIS. Tutto quello che devi fare è aggiungere
|
||
le seguenti linee a <filename>/etc/rc.conf</filename>,
|
||
e FreeBSD farà il resto.</para>
|
||
|
||
<procedure>
|
||
<step>
|
||
<para><programlisting>nisdomainname="test-domain"</programlisting>
|
||
Questa linea imposterà il nome domino NIS a
|
||
<literal>test-domain</literal>
|
||
al momento della configurazione di rete
|
||
(ad esempio dopo il reboot).</para>
|
||
</step>
|
||
|
||
<step>
|
||
<para><programlisting>nis_server_enable="YES"</programlisting>
|
||
Questa linea dirà a FreeBSD di avviare i processi
|
||
NIS server la prossima volta che la rete
|
||
è riavviata.</para>
|
||
</step>
|
||
|
||
<step>
|
||
<para><programlisting>nis_yppasswdd_enable="YES"</programlisting>
|
||
Questo avvierà il demone
|
||
<command>rpc.yppasswd</command> che, come accennato
|
||
prima, permetterà agli utenti di cambiare la loro
|
||
password NIS dalle macchine client.</para>
|
||
</step>
|
||
</procedure>
|
||
|
||
<note>
|
||
<para>A seconda delle tue impostazioni NIS, potresti
|
||
aver bisogno di aggiungere altre linee. Leggi
|
||
la <link linkend="network-nis-server-is-client">
|
||
sezione sui NIS server che sono anche NIS client
|
||
</link>, di seguito, per dettagli.</para>
|
||
</note>
|
||
|
||
<para>Ora, tutto quello che devi fare è eseguire
|
||
il comando <command>/etc/netstart</command>
|
||
come super-utente. Questo imposterà
|
||
il sistema, usando i valori che hai specificato
|
||
in <filename>/etc/rc.conf</filename>.</para>
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Inizializzare le mappe NIS</title>
|
||
|
||
<indexterm>
|
||
<primary>NIS</primary>
|
||
<secondary>mappe</secondary>
|
||
</indexterm>
|
||
|
||
<para>Le <emphasis>mappe NIS</emphasis> sono file di
|
||
database, che sono conservati nella directory
|
||
<filename>/var/yp</filename>. Sono generati
|
||
da file di configurazione nella directory
|
||
<filename>/etc</filename> del NIS master, con
|
||
una eccezione: il file
|
||
<filename>/etc/master.passwd</filename>.
|
||
C'è un buon motivo per questo, infatti
|
||
normalmente non vuoi che siano
|
||
propagate le password a <username>root</username>
|
||
e ad altri account amministrativi a tutti gli
|
||
altri server nel dominio NIS. Così prima
|
||
di inizializzare le mappe
|
||
NIS, dovresti:</para>
|
||
|
||
<screen>&prompt.root; <userinput>cp /etc/master.passwd /var/yp/master.passwd</userinput>
|
||
&prompt.root; <userinput>cd /var/yp</userinput>
|
||
&prompt.root; <userinput>vi master.passwd</userinput></screen>
|
||
|
||
<para>Dovresti rimuovere tutte le linee che riguardano
|
||
account di sistema (<username>bin</username>,
|
||
<username>tty</username>, <username>kmem</username>,
|
||
<username>games</username>, etc.), così come altri
|
||
account che non vuoi siano propagate ai client NIS
|
||
(per esempio <username>root</username> ed ogni altro
|
||
account con UID 0 (super-utente)).</para>
|
||
|
||
<note>
|
||
<para>Accertati che il file
|
||
<filename>/var/yp/master.passwd</filename> non
|
||
sia nè leggibile dal gruppo nè dal resto
|
||
del mondo (modo 600)!
|
||
Usa il comando <command>chmod</command>, se
|
||
appropriato.</para>
|
||
</note>
|
||
|
||
<indexterm><primary>Tru64 UNIX</primary></indexterm>
|
||
|
||
<para>Quando hai finito, è il momento di inizializzare
|
||
le mappe NIS! FreeBSD include uno script chiamato
|
||
<command>ypinit</command> che lo fa per te (leggi
|
||
la sua pagina di manuale per dettagli). Nota che
|
||
questo script è disponibile sulla maggior parte dei
|
||
sistemi operativi &unix; ma non su tutti. Su
|
||
Digital Unix/Compaq Tru64 UNIX è chiamato
|
||
<command>ypsetup</command>. Poichè stiamo generando
|
||
mappe per un NIS master, passeremo l'opzione
|
||
<option>-m</option> al comando <command>ypinit</command>.
|
||
Per generare le mappe NIS, supponendo che tu abbia già
|
||
eseguito i passi di cui sopra, esegui:</para>
|
||
|
||
<screen>ellington&prompt.root; <userinput>ypinit -m test-domain</userinput>
|
||
Server Type: MASTER Domain: test-domain
|
||
Creating an YP server will require that you answer a few questions.
|
||
Questions will all be asked at the beginning of the procedure.
|
||
Do you want this procedure to quit on non-fatal errors? [y/n: n]
|
||
<userinput>n</userinput>
|
||
Ok, please remember to go back and redo manually whatever fails.
|
||
If you don't, something might not work.
|
||
At this point, we have to construct a list of this domains YP servers.
|
||
rod.darktech.org is already known as master server.
|
||
Please continue to add any slave servers, one per line. When you are
|
||
done with the list, type a <control D>.
|
||
master server : ellington
|
||
next host to add: <userinput>coltrane</userinput>
|
||
next host to add: <userinput>^D</userinput>
|
||
The current list of NIS servers looks like this:
|
||
ellington
|
||
coltrane
|
||
Is this correct? [y/n: y] <userinput>y</userinput>
|
||
|
||
[..output from map generation..]
|
||
|
||
NIS Map update completed.
|
||
ellington has been setup as an YP master server without any errors.</screen>
|
||
|
||
<para><command>ypinit</command> dovrebbe aver creato
|
||
<filename>/var/yp/Makefile</filename> da
|
||
<filename>/var/yp/Makefile.dist</filename>.
|
||
Quando creato, questo file assume che tu stia operando
|
||
su un ambiente NIS a server singolo con solo macchine
|
||
FreeBSD. Dal momento che <literal>test-domain</literal>
|
||
ha anche un server slave, devi editare
|
||
<filename>/var/yp/Makefile</filename>:</para>
|
||
|
||
<screen>ellington&prompt.root; <userinput>vi /var/yp/Makefile</userinput></screen>
|
||
|
||
<para>Dovresti commentare la linea che dice</para>
|
||
|
||
<programlisting>NOPUSH = "True"</programlisting>
|
||
|
||
<para>(se non è già commentata).</para>
|
||
</sect4>
|
||
|
||
<sect4>
|
||
<title>Impostare un server slave NIS</title>
|
||
|
||
<indexterm>
|
||
<primary>NIS</primary>
|
||
<secondary>slave server</secondary>
|
||
</indexterm>
|
||
|
||
<para>Impostare un server NIS slave è anche
|
||
più semplice che impostare il master. Loggati
|
||
al server slave ed edita
|
||
il file <filename>/etc/rc.conf</filename>
|
||
esattamente come hai fatto col server master.
|
||
L'unica differenza è che
|
||
ora dobbiamo usare l'opzione <option>-s</option> quando
|
||
eseguiamo <command>ypinit</command>. L'opzione
|
||
<option>-s</option> richiede che il nome del
|
||
server NIS sia passato, così la nostra linea
|
||
di comando assomiglia
|
||
alla seguente:</para>
|
||
|
||
<screen>coltrane&prompt.root; <userinput>ypinit -s ellington
|
||
test-domain</userinput>
|
||
|
||
Server Type: SLAVE Domain: test-domain Master: ellington
|
||
|
||
Creating an YP server will require that you answer a few questions.
|
||
Questions will all be asked at the beginning of the procedure.
|
||
|
||
Do you want this procedure to quit on non-fatal errors? [y/n: n]
|
||
<userinput>n</userinput>
|
||
|
||
Ok, please remember to go back and redo manually whatever fails.
|
||
If you don't, something might not work.
|
||
There will be no further questions. The remainder of the procedure
|
||
should take a few minutes, to copy the databases from ellington.
|
||
Transferring netgroup...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring netgroup.byuser...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring netgroup.byhost...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring master.passwd.byuid...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring passwd.byuid...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring passwd.byname...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring group.bygid...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring group.byname...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring services.byname...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring rpc.bynumber...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring rpc.byname...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring protocols.byname...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring master.passwd.byname...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring networks.byname...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring networks.byaddr...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring netid.byname...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring hosts.byaddr...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring protocols.bynumber...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring ypservers...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
Transferring hosts.byname...
|
||
ypxfr: Exiting: Map successfully transferred
|
||
|
||
coltrane has been setup as an YP slave server without any errors.
|
||
Don't forget to update map ypservers on ellington.</screen>
|
||
|
||
<para>Ora dovresti avere una directory chiamata
|
||
<filename>/var/yp/test-domain</filename>. Copie
|
||
delle mappe NIS del master server dovrebbero risiedere
|
||
in questa directory. Dovresti accertarti che siano
|
||
aggiornate. La seguente linea di
|
||
<filename>/etc/crontab</filename> sul tuo server slave
|
||
dovrebbe far ciò:</para>
|
||
|
||
<programlisting>20 * * * * root /usr/libexec/ypxfr passwd.byname
|
||
21 * * * * root /usr/libexec/ypxfr passwd.byuid</programlisting>
|
||
|
||
<para>Queste due linee forzano lo slave a sincronizzare
|
||
le sue mappe con le mappe del server master.
|
||
Anche se queste entry non sono obbligatorie,
|
||
dal momento che il server
|
||
master cerca di assicurarsi che tutte le modifiche
|
||
alle sue mappe NIS siano comunicate ad i suoi slave
|
||
e perchè le informazioni sulle password sono vitali
|
||
per i sistemi che dipendono dal server, è una buona idea
|
||
forzare gli aggiornamenti. Questo è ancora più
|
||
importante su reti trafficate dove gli aggiornamenti
|
||
delle mappe potrebbero non essere completi.</para>
|
||
|
||
<para>Adesso, esegui il comando
|
||
<command>/etc/netstart</command> anche sullo slave,
|
||
per avviare il server NIS.</para>
|
||
</sect4>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Client NIS</title>
|
||
|
||
<para>Un client NIS stabilisce quello che è
|
||
chiamato un binding ad un particolare NIS
|
||
server usando il demone
|
||
<command>ypbind</command>. <command>ypbind</command>
|
||
controlla il dominio di default del sistema
|
||
(impostato dal comando <command>domainname</command>),
|
||
ed inizia a fare broadcast di richieste RPC sulla rete
|
||
locale. Queste richieste specificano il nome del
|
||
dominio per il quale <command>ypbind</command> sta
|
||
cercando di stabilire un binding. Se un server è stato
|
||
configurato a servire il dominio richiesto, risponderà
|
||
a <command>ypbind</command>, che registrerà l'indirizzo
|
||
del server. Se ci sono molti server disponibili
|
||
(ad esempio un master e molti slave),
|
||
<command>ypbind</command> userà l'indirizzo del primo
|
||
che risponde. Da quel momento in poi, il sistema client
|
||
dirigerà tutte le sue richieste NIS a quel server.
|
||
<command>ypbind</command> occasionalmente farà un
|
||
<quote>ping</quote> del server per accertarsi che sia su
|
||
ed attivo. Se non riceve una risposta di uno dei suoi
|
||
ping in un tempo accettabile, <command>ypbind</command>
|
||
segnerà il dominio come non connesso e inizierà
|
||
di nuovo a fare broadcasting nella speranza di
|
||
localizzare un altro server.</para>
|
||
|
||
<sect4>
|
||
<title>Impostare un client NIS</title>
|
||
|
||
<indexterm>
|
||
<primary>NIS</primary>
|
||
<secondary>configurazione del client</secondary>
|
||
</indexterm>
|
||
|
||
<para>Impostare una macchina FreeBSD perchè sia un client
|
||
NIS è abbastanza semplice.</para>
|
||
|
||
<procedure>
|
||
<step>
|
||
<para>Edita il file <filename>/etc/rc.conf</filename> e
|
||
aggiungi le seguenti linee per impostare il nome
|
||
dominio NIS ed avviare <command>ypbind</command>
|
||
all'avvio della rete:</para>
|
||
|
||
<programlisting>nisdomainname="test-domain"
|
||
nis_client_enable="YES"</programlisting>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Per importare tutte le possibili linee di
|
||
password dal server NIS, rimuovi tutti gli account
|
||
utente dal tuo <filename>/etc/master.passwd</filename>
|
||
ed usa <command>vipw</command> per aggiungere
|
||
la seguente linea alla fine del file:</para>
|
||
|
||
<programlisting>+:::::::::</programlisting>
|
||
|
||
<note>
|
||
<para>Questa linea permetterà a chiunque con un
|
||
valido account nella mappa delle password
|
||
del server NIS di loggarsi sul client. Ci
|
||
sono molti modi per
|
||
configurare il tuo client NIS cambiando questa
|
||
linea. Leggi la
|
||
<link linkend="network-netgroups">sezione
|
||
sui netgroups</link> di seguito per maggiori
|
||
informazioni. Per letture più dettagliate vedere
|
||
il libro della O'Reilly
|
||
<literal>Managing NFS and NIS</literal>.</para>
|
||
</note>
|
||
|
||
<note>
|
||
<para>Dovresti tenere almeno un account locale (non
|
||
importato via NIS) nel tuo file
|
||
<filename>/etc/master.passwd</filename> e questo
|
||
account dovrebbe essere anche un membro del gruppo
|
||
<groupname>wheel</groupname>. Se c'è qualche
|
||
problema con NIS, questo account può essere usato
|
||
per loggarsi da remoto, diventare
|
||
<username>root</username> e riparare le cose.</para>
|
||
</note>
|
||
</step>
|
||
|
||
<step>
|
||
<para>Per impostare tutte le possibili linee dei gruppi
|
||
dal server NIS, aggiungi questa linea al tuo file
|
||
<filename>/etc/group</filename>:</para>
|
||
|
||
<programlisting>+:*::</programlisting>
|
||
</step>
|
||
</procedure>
|
||
|
||
<para>Dopo aver completato questi passi, dovresti
|
||
essere in grado di eseguire <command>ypcat passwd</command>
|
||
e vedere la mappa delle password del NIS server.</para>
|
||
</sect4>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Sicurezza di NIS</title>
|
||
|
||
<para>In generale, ogni utente remoto può eseguire una RPC
|
||
a &man.ypserv.8; ed ottenere i contenuti delle tue mappe NIS,
|
||
ammesso che l'utente remoto conosca il tuo nome dominio.
|
||
Per prevenire tali transazioni non autorizzate,
|
||
&man.ypserv.8; supporta una caratteristica chiamata
|
||
<quote>securenets</quote> che può essere usata per
|
||
restringere l'accesso ad un dato insieme di host. All'avvio
|
||
&man.ypserv.8; cercherà di caricare le informazioni
|
||
delle securenets da un file chiamato
|
||
<filename>/var/yp/securenets</filename>.</para>
|
||
|
||
<note>
|
||
<para>Questo percorso varia a secondo del percorso
|
||
specificato con l'opzione <option>-p</option>. Questo
|
||
file contiene linee che consistono di una
|
||
specificazione della rete e di una maschera di
|
||
rete separate da spazi vuoti. Le linee che
|
||
cominciano con <quote>#</quote> sono
|
||
considerati commenti. Un esempio di file securenets può
|
||
assomigliare al seguente:</para>
|
||
</note>
|
||
|
||
<programlisting># allow connections from local host -- mandatory
|
||
127.0.0.1 255.255.255.255
|
||
# allow connections from any host
|
||
# on the 192.168.128.0 network
|
||
192.168.128.0 255.255.255.0
|
||
# allow connections from any host
|
||
# between 10.0.0.0 to 10.0.15.255
|
||
# this includes the machines in the testlab
|
||
10.0.0.0 255.255.240.0</programlisting>
|
||
|
||
<para>Se &man.ypserv.8; riceve una richiesta da un indirizzo
|
||
che coincide con una di queste regole, processerà
|
||
la richiesta normalmente. Se l'indirizzo non coincide
|
||
la richiesta sarà ignorata ed un messaggio di warning
|
||
sarà loggato. Se il file
|
||
<filename>/var/yp/securenets</filename> non esiste,
|
||
<command>ypserv</command> permetterà connessioni
|
||
da ogni host.</para>
|
||
|
||
<para>Il programma <command>ypserv</command> ha
|
||
anche supporto per il pacchetto di Wietse Venema
|
||
<application>TCP Wrapper</application>. Questo
|
||
permette all'amministratore di usare i file
|
||
di configurazione di <application>TCP Wrapper</application>
|
||
per controlli sull'accesso al posto di
|
||
<filename>/var/yp/securenets</filename>.</para>
|
||
|
||
<note>
|
||
<para>Pur essendo entrambi questi meccanismi di accesso
|
||
di controllo abbastanza sicuri,
|
||
questi, come il test di porta privilegiata,
|
||
sono vulnerabili agli attacchi
|
||
<quote>IP spoofing</quote>. Tutto il traffico
|
||
relativo a NIS dovrebbe essere bloccato al firewall.</para>
|
||
|
||
<para>I server che usano
|
||
<filename>/var/yp/securenets</filename>
|
||
possono non riuscire a servire client NIS legittimi che
|
||
abbiano implementazioni TCP/IP obsolete. Alcune
|
||
di queste implementazioni impostano a zero tutti i
|
||
bit degli host quando fanno broadcast e/o non
|
||
riescono a osservare la maschera di sotto-rete
|
||
quando calcolano l'indirizzo
|
||
broadcast. Mentre alcuni di questi problemi possono
|
||
essere corretti cambiando la configurazione del client,
|
||
altri problemi possono causare il ritiro dei client
|
||
in questione o l'abbandono di
|
||
<filename>/var/yp/securenets</filename>.</para>
|
||
|
||
<para>Usando <filename>/var/yp/securenets</filename> su un
|
||
server con una tale obsoleta implementazione del TCP/IP
|
||
è sicuramente una cattiva idea e causerà alla
|
||
perdita della funzionalità NIS per gran parte della tua
|
||
rete.</para>
|
||
|
||
<indexterm><primary>TCP Wrappers</primary></indexterm>
|
||
|
||
<para>L'uso del pacchetto
|
||
<application>TCP Wrapper</application>
|
||
aumenta la latenza del tuo server NIS. Il ritardo
|
||
addizionale può essere lungo a sufficienza tanto
|
||
da causare dei timeout in programmi client, specialmente
|
||
su reti trafficate o con server NIS lenti. Se uno o
|
||
più client soffre di questi sintomi, dovresti convertire
|
||
il sistema dei client in questione a server NIS slave
|
||
e forzarli a non fare il binding a loro stessi.</para>
|
||
</note>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Impedire ad Alcuni Utenti di Loggarsi</title>
|
||
|
||
<para>Nel nostro laboratorio c'è una macchina
|
||
<hostid>basie</hostid> che si suppone sia una workstation
|
||
solo della facoltà . Non vogliamo togliere questa
|
||
macchina dal dominio NIS, tuttavia il file
|
||
<filename>passwd</filename> sul server NIS master
|
||
contiene account che sono sia della
|
||
facoltà sia degli studenti. Cosa possiamo fare?</para>
|
||
|
||
<para>C'è un modo di impedire a specifici utenti di loggarsi
|
||
ad una macchina, anche se sono presenti nel database NIS.
|
||
Per farlo, tutto quello che devi fare è
|
||
aggiungere
|
||
<literal>-<replaceable>username</replaceable></literal>
|
||
alla fine del file <filename>/etc/master.passwd</filename>
|
||
sulla macchina client, dove
|
||
<replaceable>username</replaceable> è lo username
|
||
dell'utente di cui vuoi impedire l'accesso.
|
||
E' meglio fare questo con
|
||
<command>vipw</command> dato che <command>vipw</command>
|
||
farà un controllo di correttezza dei tuoi cambiamenti a
|
||
<filename>/etc/master.passwd</filename>, e ricostruirà
|
||
automaticamente il database delle password quando hai finito
|
||
di editarlo. Ad esempio, se vogliamo impedire l'accesso
|
||
all'utente <username>bill</username> verso l'host
|
||
<hostid>basie</hostid> faremmo:</para>
|
||
|
||
<screen>basie&prompt.root; <userinput>vipw</userinput>
|
||
<userinput>[aggiungi -bill alla fine del file, poi esci]</userinput>
|
||
vipw: rebuilding the database...
|
||
vipw: done
|
||
|
||
basie&prompt.root; <userinput>cat /etc/master.passwd</userinput>
|
||
|
||
root:[password]:0:0::0:0:The super-user:/root:/bin/csh
|
||
toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh
|
||
daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin
|
||
operator:*:2:5::0:0:System &:/:/sbin/nologin
|
||
bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin
|
||
tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin
|
||
kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin
|
||
games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin
|
||
news:*:8:8::0:0:News Subsystem:/:/sbin/nologin
|
||
man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin
|
||
bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin
|
||
uucp:*:66:66::0:0:UUCP
|
||
pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico
|
||
xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin
|
||
pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin
|
||
nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin
|
||
+:::::::::
|
||
-bill
|
||
|
||
basie&prompt.root;</screen>
|
||
</sect2>
|
||
|
||
<sect2 id="network-netgroups">
|
||
<sect2info>
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Udo</firstname>
|
||
|
||
<surname>Erdelhoff</surname>
|
||
|
||
<contrib>Grazie al contributo di </contrib>
|
||
</author>
|
||
</authorgroup>
|
||
</sect2info>
|
||
|
||
<title>Usare i Netgroups</title>
|
||
|
||
<indexterm><primary>netgroups</primary></indexterm>
|
||
|
||
<para>Il metodo mostrato nella sezione precedente funziona
|
||
ragionevolmente bene se hai bisogno di regole speciali
|
||
per un numero molto piccolo di utenti e/o macchine. Su
|
||
reti più grandi, <emphasis>certamente</emphasis> ti
|
||
dimenticherai di impedire l'accesso di certi utenti
|
||
a macchine dal ruolo critico, oppure potresti perfino
|
||
finire a modificare ogni macchina separatamente, in questo
|
||
modo perdendo il beneficio centrale di NIS:
|
||
l'amministrazione <emphasis>centralizzata</emphasis>.</para>
|
||
|
||
<para>La soluzione degli sviluppatori NIS a questo problema
|
||
è chiamata <emphasis>netgroups</emphasis>. Il
|
||
loro scopo e la loro semantica possono essere
|
||
paragonate ai normali gruppi utenti usati dal
|
||
file system &unix;. L'unica differenza
|
||
è la mancanza di un ID numerico e l'abilità di
|
||
definire un netgroup che includa sia gruppi utenti che altri
|
||
netgroup.</para>
|
||
|
||
<para>I netgroup furono sviluppati per gestire grandi reti
|
||
complesse con centinaia di utenti e macchine. Da un lato
|
||
questa è una Buona Cosa se sei obbligato a gestire una
|
||
simile situazione. Dall'altro, questa complessità rende
|
||
praticamente impossibile spiegare i netgroup con esempi
|
||
relativamente semplici. L'esempio usato nel resto di questa
|
||
sezione dimostra questo problema.</para>
|
||
|
||
<para>Assumiamo che la favorevole introduzione di NIS nei tuoi
|
||
laboratori catturi l'interesse dei tuoi superiori. Il tuo
|
||
prossimo compito è di estendere il tuo dominio NIS per
|
||
coprire alcune altre macchine del campo. Le due tabelle contengono
|
||
i nomi dei nuovi utenti e delle nuove macchine, con una breve
|
||
descrizione.</para>
|
||
|
||
<informaltable frame="none" pgwide="1">
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>User Name(s)</entry>
|
||
|
||
<entry>Description</entry>
|
||
</row>
|
||
</thead>
|
||
|
||
<tbody>
|
||
<row>
|
||
<entry><username>alpha</username>,
|
||
<username>beta</username></entry>
|
||
|
||
<entry>Impiegato normale del dipartimento IT</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><username>charlie</username>,
|
||
<username>delta</username></entry>
|
||
|
||
<entry>Il nuovo apprendista del dipartimento IT</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><username>echo</username>,
|
||
<username>foxtrott</username>,
|
||
<username>golf</username>, ...</entry>
|
||
|
||
<entry>Impiegato ordinario</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><username>able</username>, <username>baker</username>,
|
||
...</entry>
|
||
|
||
<entry>Gli interni correnti</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
|
||
<informaltable frame="none" pgwide="1">
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>Machine Name(s)</entry>
|
||
|
||
<entry>Description</entry>
|
||
</row>
|
||
</thead>
|
||
|
||
<tbody>
|
||
<row>
|
||
<!-- Names taken from "Good Omens" by Neil Gaiman and Terry
|
||
Pratchett. Many thanks for a brilliant book. -->
|
||
|
||
<entry><hostid>war</hostid>, <hostid>death</hostid>,
|
||
<hostid>famine</hostid>,
|
||
<hostid>pollution</hostid></entry>
|
||
|
||
<entry>Il tuoi server più importanti. Solo
|
||
gli impiegati IT hanno il permesso di loggarsi
|
||
in queste macchine.</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<!-- gluttony was omitted because it was too fat -->
|
||
|
||
<entry><hostid>pride</hostid>, <hostid>greed</hostid>,
|
||
<hostid>envy</hostid>, <hostid>wrath</hostid>,
|
||
<hostid>lust</hostid>, <hostid>sloth</hostid></entry>
|
||
|
||
<entry>Server meno importanti. Tutti i membri
|
||
del dipartimento IT hanno il permesso di loggarsi
|
||
a queste macchine.</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><hostid>one</hostid>, <hostid>two</hostid>,
|
||
<hostid>three</hostid>, <hostid>four</hostid>,
|
||
...</entry>
|
||
|
||
<entry>Workstation normali. Solo
|
||
<emphasis>veri</emphasis> impiegati hanno permesso
|
||
di accedere a queste macchine.</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><hostid>trashcan</hostid></entry>
|
||
|
||
<entry>Una macchina molto vecchia senza alcun dato
|
||
critico. Anche gli interni hanno permesso di usare
|
||
questa macchina.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
|
||
<para>Se provi ad implementare queste restrizioni bloccando
|
||
separatamente ogni utente, dovresti aggiungere una linea
|
||
<literal>-<replaceable>user</replaceable></literal>
|
||
ad ogni <filename>passwd</filename> per ogni utente che
|
||
non ha il permesso di loggarsi in quel sistema. Se ti
|
||
dimentichi anche solo di una linea, potresti essere nei
|
||
pasticci. Può essere ragionevole fare ciò
|
||
correttamente durante l'installazione iniziale, comunque
|
||
<emphasis>certamente</emphasis> ti dimenticherai alla fine
|
||
di aggiungere le linee per i nuovi utenti durante le
|
||
operazioni giornaliere. Dopo tutto, Murphy era un
|
||
ottimista.</para>
|
||
|
||
<para>Gestire questa situazione con i netgroup offre
|
||
molti vantaggi. Non c'è bisogno di gestire
|
||
separatamente ogni utente; basta assegnare un utente ad
|
||
uno o più netgroup e permettere o impedire il login
|
||
a tutti i membri del netgroup. Se aggiungi una
|
||
nuova macchina, dovrai solo definire restrizioni di
|
||
login per i netgroup. Se un nuovo utente viene
|
||
aggiunto, dovrai solo aggiungere l'utente
|
||
ad uno o più netgroup. Questi cambiamenti sono indipendenti
|
||
l'uno dall'altro: non più <quote>per ogni combinazione di
|
||
utenti e macchine fai ...</quote>Se la tua installazione
|
||
NIS è pianificata con attenzione, dovrai solo modificare
|
||
esattamente un file centrale di configurazione per garantire
|
||
o negare l'accesso alle macchine.</para>
|
||
|
||
<para>Il primo passo è l'inizializzazione della mappa NIS
|
||
netgroup. &man.ypinit.8; di FreeBSD non crea questa mappa
|
||
di default, ma la sua implementazione NIS la supporterà
|
||
una volta che è stata creata. Per aggiungere una linea alla
|
||
mappa, semplicemente usa il comando</para>
|
||
|
||
<screen>ellington&prompt.root; <userinput>vi /var/yp/netgroup</userinput></screen>
|
||
|
||
<para>e poi inizia ad aggiungere contenuti. Per i nostri esempi
|
||
abbiamo bisogno di almeno quattro netgroup: impiegati IT,
|
||
apprendisti IT, impiegati normali ed interni.</para>
|
||
|
||
<programlisting>IT_EMP (,alpha,test-domain) (,beta,test-domain)
|
||
IT_APP (,charlie,test-domain) (,delta,test-domain)
|
||
USERS (,echo,test-domain) (,foxtrott,test-domain) \
|
||
(,golf,test-domain)
|
||
INTERNS (,able,test-domain) (,baker,test-domain)</programlisting>
|
||
|
||
<para><literal>IT_EMP</literal>, <literal>IT_APP</literal> etc.
|
||
sono i nomi dei netgroup. Ogni gruppo fra parentesi tonde
|
||
aggiunge uno o più account utente. I tre campi dentro il
|
||
gruppo sono:</para>
|
||
|
||
<orderedlist>
|
||
<listitem>
|
||
<para>Il nome degli host dove le seguenti caratteristiche
|
||
sono valide. Se non specifichi un nome host, la linea
|
||
è valida per tutti gli host. Se specifichi un nome host,
|
||
entrerai nel regno dell'oscurità , dell'orrore
|
||
e della confusione assoluta.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Il nome dell'account che appartiene a questo
|
||
netgroup.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Il dominio NIS per l'account. Puoi
|
||
importare account da altri domini NIS nel tuo netgroup
|
||
se sei uno di quei ragazzi sfortunati con più di
|
||
un dominio NIS.</para>
|
||
</listitem>
|
||
</orderedlist>
|
||
|
||
<para>Ognuno di questi campi può contenere
|
||
wildcards. Leggi &man.netgroup.5; per dettagli.</para>
|
||
|
||
<note>
|
||
<indexterm><primary>netgroups</primary></indexterm>
|
||
|
||
<para>Nomi netgroup più lunghi di 8 caratteri
|
||
non dovrebbero essere usati, specialmente se hai macchine
|
||
che eseguono altri sistemi operativi all'interno del
|
||
tuo dominio NIS. I nomi sono case sensitive; usare
|
||
le lettere maiuscole per il tuo netgroup è
|
||
un modo semplice per distinguere fra utenti,
|
||
macchine e nomi di netgroup.</para>
|
||
|
||
<para>Alcuni client NIS (non FreeBSD) non possono
|
||
gestire netgroup con un numero troppo grande di linee.
|
||
Ad esempio, alcune vecchie versioni di &sunos; iniziano
|
||
ad avere problemi se un netgroup contiene più di 15
|
||
<emphasis>linee</emphasis>. Puoi superare questo
|
||
limite creando molti sotto-netgroup con 15 o meno utenti
|
||
ed un vero netgroup che consiste dei sotto-netgroup:</para>
|
||
|
||
<programlisting>BIGGRP1 (,joe1,domain) (,joe2,domain)
|
||
(,joe3,domain) [...]
|
||
BIGGRP2 (,joe16,domain) (,joe17,domain) [...]
|
||
BIGGRP3 (,joe31,domain) (,joe32,domain)
|
||
BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3</programlisting>
|
||
|
||
<para>Puoi ripetere questo processo se hai bisogno di più
|
||
di 225 utenti all'interno di un singolo netgroup.</para>
|
||
</note>
|
||
|
||
<para>Attivare e distribuire la tua nuova mappa NIS
|
||
è facile:</para>
|
||
|
||
<screen>ellington&prompt.root; <userinput>cd /var/yp</userinput>
|
||
ellington&prompt.root; <userinput>make</userinput></screen>
|
||
|
||
<para>Questo genererà le tre mappe NIS
|
||
<filename>netgroup</filename>,
|
||
<filename>netgroup.byhost</filename> e
|
||
<filename>netgroup.byuser</filename>. Usa
|
||
&man.ypcat.1; per controllare che le tue
|
||
nuove mappe NIS siano disponibili:</para>
|
||
|
||
<screen>ellington&prompt.user; <userinput>ypcat -k
|
||
netgroup</userinput>
|
||
ellington&prompt.user; <userinput>ypcat -k netgroup.byhost</userinput>
|
||
ellington&prompt.user; <userinput>ypcat -k
|
||
netgroup.byuser</userinput></screen>
|
||
|
||
<para>L'output del tuo primo comando dovrebbe assomigliare
|
||
a <filename>/var/yp/netgroup</filename>. Il secondo
|
||
comando non produrrà output se non hai specificato
|
||
netgroup specifici agli host. Il terzo comando può
|
||
essere usato per ottenere una lista dei netgroup di un
|
||
utente.</para>
|
||
|
||
<para>L'installazione del client è abbastanza semplice.
|
||
Per configurare il server <hostid>war</hostid>, devi solo
|
||
eseguire &man.vipw.8; e sostituire la linea</para>
|
||
|
||
<programlisting>+:::::::::</programlisting>
|
||
|
||
<para>con</para>
|
||
|
||
<programlisting>+@IT_EMP:::::::::</programlisting>
|
||
|
||
<para>Ora, solo i dati per l'utente definito nel netgroup
|
||
<literal>IT_EMP</literal> sono importati nel
|
||
database delle password di <hostid>war</hostid> e solo
|
||
questi utenti hanno permesso di accesso.</para>
|
||
|
||
<para>Sfortunatamente, questa limitazione si applica anche
|
||
alla funzione della shell <literal>~</literal> ed a
|
||
tutte le routine che convertono fra nomi utenti e user ID
|
||
numerici. In altre parole,<command>cd ~<replaceable>user
|
||
</replaceable></command> non funzionerà ,
|
||
<command>ls -l</command> mostrerà gli ID numerici
|
||
invece dello username e
|
||
<command>find . -user joe -print</command>
|
||
darà l'errore <errorname>No such user</errorname>. Per
|
||
riparare questo, dovrai importare tutte le linee dell'utente
|
||
<emphasis>senza permettere a loro di loggarsi sui tuoi
|
||
server</emphasis>.</para>
|
||
|
||
<para>Questo può essere ottenuto aggiungendo un'altra
|
||
linea a <filename>/etc/master.passwd</filename>. Questo
|
||
dovrebbe contenere:</para>
|
||
|
||
<para><literal>+:::::::::/sbin/nologin</literal>, dal significato
|
||
<quote>Importa tutte le entry ma imposta la shell di
|
||
login a <filename>/sbin/nologin</filename> nelle linee
|
||
importate</quote>. Puoi sostituire ogni campo nella linea
|
||
<literal>passwd</literal> piazzando un valore di default
|
||
nel tuo <filename>/etc/master.passwd</filename>.</para>
|
||
|
||
<!-- Been there, done that, got the scars to prove it - ue -->
|
||
<warning>
|
||
<para>Accertati che la linea
|
||
<literal>+:::::::::/sbin/nologin</literal> sia piazzata
|
||
dopo <literal>+@IT_EMP:::::::::</literal>. Altrimenti
|
||
tutti gli account utente importati da NIS avranno
|
||
<filename>/sbin/nologin</filename> come loro shell
|
||
di login.</para>
|
||
</warning>
|
||
|
||
<para>Dopo questo cambiamento, dovrai solo cambiare
|
||
una mappa NIS se un nuovo impiegato si unisce
|
||
al dipartimento IT. Puoi usare un simile
|
||
approccio per i server meno importanti
|
||
sostituendo <literal>+:::::::::</literal> nella tua versione
|
||
locale di <filename>/etc/master.passwd</filename>
|
||
con qualcosa del tipo:</para>
|
||
|
||
<programlisting>+@IT_EMP:::::::::
|
||
+@IT_APP:::::::::
|
||
+:::::::::/sbin/nologin</programlisting>
|
||
|
||
<para>Le linee corrispondenti per le workstation normali
|
||
potrebbero essere:</para>
|
||
|
||
<programlisting>+@IT_EMP:::::::::
|
||
+@USERS:::::::::
|
||
+:::::::::/sbin/nologin</programlisting>
|
||
|
||
<para>E tutto sarebbe a posto fino a che non c'è un
|
||
cambiamento di policy dopo poche settimane:
|
||
il dipartimento IT inizia ad assumere interni.
|
||
Gli interni IT hanno permesso di usare le normali
|
||
workstation ed i server meno importanti; e gli
|
||
apprendisti IT hanno permesso di loggarsi ai
|
||
server principali. Aggiungi un nuovo netgroup
|
||
<literal>IT_INTERN</literal>, aggiungi i nuovi interni IT
|
||
a questo nuovo netgroup <literal>IT_INTERN</literal>,
|
||
e inizia a cambiare la configurazione su ogni nuova macchina...
|
||
Come il vecchio adagio dice:<quote>Errori nella pianificazione
|
||
centralizzata porta a caos globale</quote>.</para>
|
||
|
||
<para>L'abilità NIS di creare netgroup da altri netgroup
|
||
può essere usata per prevenire situazioni come queste. Una
|
||
possibilità è la creazione di netgroup basati sul
|
||
ruolo. Per esempio, potresti creare un netgroup chiamato
|
||
<literal>BIGSRV</literal> per definire le restrizioni di login
|
||
per i server importanti, un altro netgroup chiamato
|
||
<literal>SMALLSRV</literal> per i server meno importanti
|
||
ed un terzo netgroup chiamato <literal>USERBOX</literal>
|
||
per le workstation normali. Ognuna di questi netgroup
|
||
contiene i netgroup che hanno permesso di accesso a
|
||
queste macchine. Le nuove linee della tua mappa NIS
|
||
dovrebbero assomigliare a questa:</para>
|
||
|
||
<programlisting>BIGSRV IT_EMP IT_APP
|
||
SMALLSRV IT_EMP IT_APP ITINTERN
|
||
USERBOX IT_EMP ITINTERN USERS</programlisting>
|
||
|
||
<para>Questo metodo di definire restrizioni di login
|
||
funziona ragionevolmente bene se puoi definire gruppi
|
||
di macchine con restrizioni identiche. Sfortunatamente
|
||
questa è l'eccezione, non la regola. La maggior parte del
|
||
tempo, avrai necessità di definire restrizioni di login
|
||
macchina per macchina.</para>
|
||
|
||
<para>Definizioni di netgroup specifiche per ogni
|
||
macchina sono l'altra possibilità per gestire
|
||
il cambiamento di policy delineato sopra.
|
||
In questo scenario il
|
||
<filename>/etc/master.passwd</filename> di ogni macchina
|
||
deve contenere due linee che iniziano con
|
||
<quote>+</quote>. La prima di queste aggiunge un netgroup
|
||
con l'account che ha il permesso di loggarsi alla macchina,
|
||
il secondo aggiunge tutti gli altri account con
|
||
<filename>/sbin/nologin</filename> come shell. E' buona
|
||
norma usare la versione <quote>MAIUSCOLA</quote> del nome
|
||
macchina come nome del netgroup. In altre parole, le linee
|
||
dovrebbero assomigliare a questa:</para>
|
||
|
||
<programlisting>+@<replaceable>BOXNAME</replaceable>:::::::::
|
||
+:::::::::/sbin/nologin</programlisting>
|
||
|
||
<para>Una volta che hai completato questo task per tutte
|
||
le macchine, non dovrai mai più modificare la versione locale
|
||
di <filename>/etc/master.passwd</filename>. Tutti
|
||
gli ulteriori cambiamenti possono essere
|
||
gestiti modificando la mappa NIS. Di
|
||
seguito un esempio di una possibile
|
||
mappa netgroup per questo scenario con altri vantaggi
|
||
addizionali:</para>
|
||
|
||
<programlisting># Define groups of users first
|
||
IT_EMP (,alpha,test-domain) (,beta,test-domain)
|
||
IT_APP (,charlie,test-domain) (,delta,test-domain)
|
||
DEPT1 (,echo,test-domain) (,foxtrott,test-domain)
|
||
DEPT2 (,golf,test-domain) (,hotel,test-domain)
|
||
DEPT3 (,india,test-domain) (,juliet,test-domain)
|
||
ITINTERN (,kilo,test-domain) (,lima,test-domain)
|
||
D_INTERNS (,able,test-domain) (,baker,test-domain)
|
||
#
|
||
# Now, define some groups based on roles
|
||
USERS DEPT1 DEPT2 DEPT3
|
||
BIGSRV IT_EMP IT_APP
|
||
SMALLSRV IT_EMP IT_APP ITINTERN
|
||
USERBOX IT_EMP ITINTERN USERS
|
||
#
|
||
# And a groups for a special tasks
|
||
# Allow echo and golf to access our anti-virus-machine
|
||
SECURITY IT_EMP (,echo,test-domain) (,golf,test-domain)
|
||
#
|
||
# machine-based netgroups
|
||
# Our main servers
|
||
WAR BIGSRV
|
||
FAMINE BIGSRV
|
||
# User india needs access to this server
|
||
POLLUTION BIGSRV (,india,test-domain)
|
||
#
|
||
# This one is really important and needs more access restrictions
|
||
DEATH IT_EMP
|
||
#
|
||
# The anti-virus-machine mentioned above
|
||
ONE SECURITY
|
||
#
|
||
# Restrict a machine to a single user
|
||
TWO (,hotel,test-domain)
|
||
# [...more groups to follow]</programlisting>
|
||
|
||
<para>Se stai usando qualche tipo di database per
|
||
gestire i tuoi account utente, dovresti essere in
|
||
grado di creare la prima parte della mappa con i
|
||
tuoi tool di report del database. In
|
||
questo modo, i nuovi utenti avranno accesso automaticamente
|
||
alle macchine.</para>
|
||
|
||
<para>Un ultima nota di avvertimento: può non essere sempre
|
||
consigliabile usare netgroup basati sulle macchine. Se
|
||
stai per mettere in produzione qualche dozzina o perfino qualche
|
||
centinaia di macchine identiche per laboratori studente,
|
||
dovresti usare netgroup basati sul ruolo invece che netgroup
|
||
basati sulla macchina, per tenere la dimensione della mappa
|
||
NIS al di sotto di un limite ragionevole.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Cose Importanti da Ricordare</title>
|
||
|
||
<para>Ci sono ancora un paio di cose che dovrai cambiare
|
||
ora che operi in ambiente NIS.</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Ogni volta che devi aggiungere un utente al
|
||
laboratorio devi aggiungerlo
|
||
<emphasis>solo</emphasis> al server
|
||
master NIS e <emphasis>devi ricordarti di ricostruire
|
||
le mappe NIS</emphasis>. Se ti dimentichi di farlo
|
||
il nuovo utente non sarà in grado di loggarsi in alcuna
|
||
macchina eccetto che sul server NIS master. Per esempio,
|
||
se abbiamo bisogno di aggiungere un nuovo utente
|
||
<username>jsmith</username> al laboratorio,
|
||
faremmo:</para>
|
||
|
||
<screen>&prompt.root; <userinput>pw useradd jsmith</userinput>
|
||
&prompt.root; <userinput>cd /var/yp</userinput>
|
||
&prompt.root; <userinput>make test-domain</userinput></screen>
|
||
|
||
<para>Puoi anche eseguire <command>adduser jsmith</command>
|
||
invece di <command>pw useradd jsmith</command>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Tieni gli account amministrativi fuori
|
||
dalle mappe NIS</emphasis>. Normalmente non vuoi che
|
||
gli account amministrativ e le password si propaghino
|
||
a macchine che avranno utenti che non dovrebbero avere
|
||
accesso a quegli account.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><emphasis>Tieni al sicuro il NIS master e slave,
|
||
e minimizza il tempo in cui sono giù</emphasis>. Se
|
||
qualcuno hackera o semplicemente spegne queste macchine
|
||
riesce a privare molte persone della possibilità di
|
||
loggarsi al laboratorio.</para>
|
||
|
||
<para>Questa è la principale debolezza di ogni
|
||
sistema centralizzato di amministrazione. Se non proteggi
|
||
il tuo server NIS, avrai un mucchio di utenti
|
||
arrabbiati!</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Compatibilità con NIS v1</title>
|
||
|
||
<para><application>ypserv</application> di FreeBSD supporta
|
||
fino ad un certo punto client NIS v1. L'implementazione
|
||
di NIS di FreeBSD usa solo il protocollo NIS v2, comunque
|
||
altre implementazioni includono supporto per il protocollo
|
||
v1 per compatibilità all'indietro coi vecchi sistemi. Il
|
||
demone <application>ypbind</application> fornito con questi
|
||
sistemi proverà a stabilire un binding con un server
|
||
NIS v1 anche se potrebbero non averne mai bisogno
|
||
(e possono continuare a fare broadcast in ricerca di
|
||
uno anche dopo che hanno ricevuto risposta da un
|
||
server v2). Nota che mentre il supporto per i
|
||
client normali viene garantito, questa versione
|
||
di <application>ypserv</application> non
|
||
gestisce richieste di trasferimento di mappe v1; di
|
||
conseguenza, non può essere usato come master o slave in
|
||
congiunzione con server NIS più vecchi che
|
||
supportano solo il protocollo v1. Fortunatamente,
|
||
probabilmente non ci sono
|
||
server del genere in uso oggi.</para>
|
||
</sect2>
|
||
|
||
<sect2 id="network-nis-server-is-client">
|
||
<title>Server NIS che Sono Anche Client</title>
|
||
|
||
<para> Bisogna prestare molta attenzione quando
|
||
si esegue <application>ypserv</application> in
|
||
un dominio multi-server dove le macchine server
|
||
sono anche client NIS.
|
||
E' generalmente una buona idea forzare i server
|
||
ad effettuare il binding a sè stessi piuttosto
|
||
che permettere loro di effettuare il broadcast
|
||
delle richieste binding e
|
||
potenzialmente possono fare il bind una all'altra.
|
||
Possono risultare strani errori quando un
|
||
server va giù e gli altri sono dipendenti da
|
||
lui. Alla fine, tutti i client andranno in timeout
|
||
e cercheranno di effettuare il bind ad altri server,
|
||
ma il ritardo di questa operazione può essere
|
||
considerevole e l'uscita
|
||
di errore è ancora presente dato che i server possono
|
||
fare il binding fra di loro di nuovo.</para>
|
||
|
||
<para>Puoi forzare un host a fare il binding ad un server
|
||
in particolare usando <command>ypbind</command> con
|
||
l'opzione <option>-S</option>. Se non vuoi fare
|
||
questa azione a mano ogni volta che fai il reboot
|
||
del tuo server NIS, puoi aggiungere queste linee al tuo
|
||
<filename>/etc/rc.conf</filename>:</para>
|
||
|
||
<programlisting>nis_client_enable="YES" # run client stuff as well
|
||
nis_client_flags="-S <replaceable>NIS
|
||
domain</replaceable>,<replaceable>server</replaceable>"</programlisting>
|
||
|
||
<para>Consulta &man.ypbind.8; per ulteriori informazioni.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Formato delle Password</title>
|
||
|
||
<indexterm>
|
||
<primary>NIS</primary>
|
||
<secondary>formato delle password</secondary>
|
||
</indexterm>
|
||
|
||
<para>Uno dei problemi più comuni in cui la gente incappa
|
||
quando tenta di implementare NIS è la compatibilità
|
||
del formato delle password. Se il tuo server NIS usa password
|
||
criptate con DES, supporterà solo client che usano anche loro
|
||
DES. Ad esempio, se hai client NIS &solaris; nella rete,
|
||
dovrai quasi certamente usare password criptate
|
||
con DES.</para>
|
||
|
||
<para>Per controllare quale formato il tuo server
|
||
e client usano, dai un'occhiata a
|
||
<filename>/etc/login.conf</filename>. Se l'host
|
||
è configurato per usare password criptate
|
||
DES, la classe <literal>default</literal> conterrà
|
||
una linea simile a questa:</para>
|
||
|
||
<programlisting>default:\
|
||
:passwd_format=des:\
|
||
:copyright=/etc/COPYRIGHT:\
|
||
[Further entries elided]</programlisting>
|
||
|
||
<para>Altri valori possibili per l'opzione
|
||
<literal>passwd_format</literal> includono
|
||
<literal>blf</literal> e <literal>md5</literal>
|
||
(per password criptate con Blowfish e con MD5,
|
||
rispettivamente).</para>
|
||
|
||
<para>Se hai fatto modifiche a
|
||
<filename>/etc/login.conf</filename>,
|
||
dovrai anche ricostruire il database
|
||
delle possibilità di login, il che si
|
||
ottiene eseguendo il seguente comando
|
||
come <username>root</username>:</para>
|
||
|
||
<screen>&prompt.root; <userinput>cap_mkdb /etc/login.conf</userinput></screen>
|
||
|
||
<note>
|
||
<para>Il formato delle password che sono
|
||
già in <filename>/etc/master.passwd</filename> non
|
||
sarà aggiornato finchè un utente cambia la
|
||
sua password per la prima volta
|
||
<emphasis>dopo</emphasis> che il
|
||
database delle possibilità di login
|
||
è ricostruito.</para>
|
||
</note>
|
||
|
||
<para>Dopodichè per assicurarti che le password siano
|
||
criptate con il formato che hai scelto, dovresti
|
||
anche controllare che <literal>crypt_default</literal>
|
||
in <filename>/etc/auth.conf</filename> dia precedenza
|
||
al formato delle password scelto. Per farlo,
|
||
inserisci il formato che hai scelto per primo
|
||
nella lista. Ad esempio, quando usi password
|
||
criptate DES, la linea dovrebbe essere:</para>
|
||
|
||
<programlisting>crypt_default = des blf md5</programlisting>
|
||
|
||
<para>Seguendo i passi sopra citati su ognuno dei &os;
|
||
basati su NIS server e client, puoi star sicuro che tutti
|
||
siano d'accordo su quale formato delle password sia usato
|
||
all'interno della rete. Se hai problemi nell'identificazione
|
||
su un client NIS, questo è un buon punto di partenza per
|
||
cercare possibili problemi. Ricordati: se vuoi mettere
|
||
in produzione un server NIS per una rete eterogenea,
|
||
dovrai probabilmente usare DES su tutti i sistemi
|
||
poichè questo è il minimo standard comune.</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="network-dhcp">
|
||
<sect1info>
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Greg</firstname>
|
||
|
||
<surname>Sutter</surname>
|
||
|
||
<contrib>Scritto da </contrib>
|
||
</author>
|
||
</authorgroup>
|
||
</sect1info>
|
||
|
||
<title>Configurazione Automatica della Rete (DHCP)</title>
|
||
|
||
<sect2>
|
||
<title>Cos'è il DHCP?</title>
|
||
|
||
<indexterm>
|
||
<primary>Dynamic Host Configuration Protocol</primary>
|
||
<see>DHCP</see>
|
||
</indexterm>
|
||
<indexterm>
|
||
<primary>Internet Software Consortium (ISC)</primary>
|
||
</indexterm>
|
||
|
||
<para>DHCP, il Protocollo di Configurazione Host Dinamico,
|
||
descrive i passi attraverso i quali un sistema
|
||
si può connettere ad una rete ed ottenere
|
||
l'informazione necessaria per comunicare attraverso
|
||
quella rete. Le versioni di FreeBSD prima della 6.0
|
||
usano l'implementazione DHCP client (&man.dhclient.8;)
|
||
dell'ISC (Internet Software Consortium). Le ultime versioni
|
||
usano il <command>dhclient</command> di OpenBSD preso
|
||
da OpenBSD 3.7.
|
||
Tutte le informazioni specifiche all'implementazione
|
||
di <command>dhclient</command> in questa sede
|
||
sono riferite all'uso dei client DHCP sia di ISC che di OpenBSD.
|
||
Il server DHCP è quello incluso nella
|
||
distribuzione ISC.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Cosa Copre Questa Sezione</title>
|
||
|
||
<para>Questa sezione descrive sia il lato client
|
||
del sistema DHCP di ISC e di OpenBSD che il lato server del
|
||
sistema DHCP ISC. Il
|
||
programma client, <command>dhclient</command>,
|
||
è già
|
||
integrato con FreeBSD, e la parte server è
|
||
disponibile nel port <filename
|
||
role="package">net/isc-dhcp3-server</filename>. Le
|
||
pagine di manuale &man.dhclient.8;, &man.dhcp-options.5;, e
|
||
&man.dhclient.conf.5;, oltre ai riferimenti
|
||
elencati oltre, sono risorse utili.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Come Funziona</title>
|
||
|
||
<indexterm><primary>UDP</primary></indexterm>
|
||
|
||
<para>Quando <command>dhclient</command>, il client
|
||
DHCP, viene eseguito sulla macchina client, inizia
|
||
a fare broadcasting di richieste per informazioni
|
||
di configurazione. Di default
|
||
queste richieste sono sulla porta UDP 68. Il server
|
||
risponde sulla porta UDP 67, dando al client un
|
||
indirizzo IP ed altre informazioni rilevanti di rete
|
||
come la netmask, il router ed il DNS server. Tutte
|
||
queste informazioni
|
||
arrivano sotto forma di un <quote>rilascio</quote> DHCP
|
||
e sono valide sono per un certo periodo di tempo
|
||
(configurato dall'amministratore del server DHCP).
|
||
In questo modo, gli indirizzi IP bloccati da client
|
||
che non sono più connessi alla rete possono
|
||
essere riutilizzati automaticamente.</para>
|
||
|
||
<para>I client DHCP possono ottenere molti tipi
|
||
di informazione dal server. Una lista esauriente
|
||
può essere trovata in
|
||
&man.dhcp-options.5;.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>L'Integrazione con FreeBSD</title>
|
||
|
||
<para>&os; integra completamente il client
|
||
DHCP ISC o OpenBSD, <command>dhclient</command>
|
||
(a seconda della versione di &os; utilizzata). Viene fornito
|
||
supporto al client DHCP sia con l'installazione
|
||
sia con il sistema base, rendendo inutile il bisogno
|
||
di una conoscenza dettagliata della configurazione
|
||
di rete su ogni rete che abbia un server DHCP.
|
||
<command>dhclient</command> è stato incluso
|
||
in tutte le distribuzioni FreeBSD a partire
|
||
dalla 3.2.</para>
|
||
|
||
<indexterm>
|
||
<primary><application>sysinstall</application></primary>
|
||
</indexterm>
|
||
|
||
<para>DHCP è supportato da
|
||
<application>sysinstall</application>. Quando
|
||
configuri una interfaccia di rete con
|
||
<application>sysinstall</application>, la seconda
|
||
domanda che ti pone è:
|
||
<quote> Vuoi provare a configurare
|
||
l'interfaccia via DHCP?</quote>. Una risposta
|
||
affermativa eseguirà <command>dhclient</command>,
|
||
e, se ha successo, riempirà le informazioni
|
||
di configurazione della rete in automatico.</para>
|
||
|
||
<para>Ci sono due cose che devi fare per far sì
|
||
che il tuo sistema usi il DHCP all'avvio:</para>
|
||
|
||
<indexterm>
|
||
<primary>DHCP</primary>
|
||
<secondary>prerequisiti</secondary>
|
||
</indexterm>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>Accertati che il device
|
||
<devicename>bpf</devicename>
|
||
sia compilato nel tuo kernel. Per fare
|
||
ciò, aggiungi <literal>device bpf</literal>
|
||
al tuo file di
|
||
configurazione del kernel, e ricompilalo.
|
||
Per maggiori informazioni su come ricompilare
|
||
i kernel, vedi <xref
|
||
linkend="kernelconfig"/>.</para> <para>Il device
|
||
<devicename>bpf</devicename> è già
|
||
parte del kernel <filename>GENERIC</filename>
|
||
che è fornito con FreeBSD, così
|
||
se non hai un kernel custom, non dovresti
|
||
aver bisogno di crearne uno al fine di far funzionare
|
||
il DHCP.</para>
|
||
|
||
<note>
|
||
<para>Quelli di voi che sono particolarmente
|
||
attenti alla sicurezza, dovrebbero sapere che il
|
||
device <devicename>bpf</devicename> è
|
||
anche il device che permette agli sniffer di
|
||
pacchetti di
|
||
funzionare correttamente (anche se devono sempre
|
||
essere eseguiti come <username>root</username>).
|
||
<devicename>bpf</devicename>
|
||
<emphasis>è</emphasis>
|
||
richiesto per l'uso del DHCP, ma se siete molto
|
||
attenti alla sicurezza, non dovreste probabilmente
|
||
aggiungere <devicename>bpf</devicename> al
|
||
vostro kernel in previsione di un uso
|
||
futuro del DHCP.</para>
|
||
</note>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>Edita il tuo <filename>/etc/rc.conf</filename>
|
||
per includere la seguente linea:</para>
|
||
|
||
<programlisting>ifconfig_fxp0="DHCP"</programlisting>
|
||
|
||
<note>
|
||
<para>Accertati di sostituire
|
||
<literal>fxp0</literal> con il
|
||
nome dell'interfaccia che intendi configurare
|
||
dinamicamente, come descritto in
|
||
<!--<xref linkend="config-network-setup"/>-->.</para>
|
||
</note>
|
||
|
||
<para>Se stai usando una locazione diversa
|
||
per <command>dhclient</command>, o se desideri
|
||
passare flags addizionali a
|
||
<command>dhclient</command>
|
||
includi anche le linee seguenti (editandole
|
||
come necessario):</para>
|
||
|
||
<programlisting>dhcp_program="/sbin/dhclient"
|
||
dhcp_flags=""</programlisting>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<indexterm>
|
||
<primary>DHCP</primary>
|
||
<secondary>server</secondary>
|
||
</indexterm>
|
||
|
||
<para>Il server DHCP, <application>dhcpd</application>,
|
||
è incluso come parte del port
|
||
<filename role="package">net/isc-dhcp3-server</filename>
|
||
nella collezione dei ports. Questo port contiene il
|
||
server DHCP ISC e la documentazione.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Files</title>
|
||
|
||
<indexterm>
|
||
<primary>DHCP</primary>
|
||
<secondary>file di configurazione</secondary>
|
||
</indexterm>
|
||
|
||
<itemizedlist>
|
||
<listitem><para><filename>/etc/dhclient.conf</filename></para>
|
||
<para><command>dhclient</command> richiede
|
||
un file di configurazione,
|
||
<filename>/etc/dhclient.conf</filename>. Tipicamente
|
||
il file contiene solo commenti, essendo i default
|
||
ragionevolmente corretti. Questo file di
|
||
configurazione è descritto dalla
|
||
pagina di manuale &man.dhclient.conf.5;.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><filename>/sbin/dhclient</filename></para>
|
||
|
||
<para><command>dhclient</command> è
|
||
linkato staticamente e risiede in
|
||
<filename>/sbin</filename>.
|
||
Le pagine di manuale di &man.dhclient.8; danno
|
||
maggiori informazioni su <command>dhclient</command>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><filename>/sbin/dhclient-script</filename></para>
|
||
|
||
<para><command>dhclient-script</command> è
|
||
lo script di configurazione del client DHCP
|
||
specifico di FreeBSD. Viene descritto in
|
||
&man.dhclient-script.8;
|
||
ma non dovrebbe aver bisogno di nessuna
|
||
modifica utente
|
||
per funzionare correttamente.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><filename>/var/db/dhclient.leases</filename></para>
|
||
|
||
<para>Il client DHCP mantiene un database di
|
||
validi rilasci in questo file, che viene
|
||
scritto come un log.
|
||
&man.dhclient.leases.5; ne dàuna descrizione
|
||
leggermente più estesa.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Ulteriori Letture</title>
|
||
|
||
<para>Il protocollo DHCP è
|
||
descritto in maniera estesa in
|
||
<ulink url="http://www.freesoft.org/CIE/RFC/2131/">RFC 2131</ulink>.
|
||
Informazioni aggiuntive sono presenti a questo URL:
|
||
<ulink url="http://www.dhcp.org/"></ulink>.</para>
|
||
</sect2>
|
||
|
||
<sect2 id="network-dhcp-server">
|
||
<title>Installare e Configurare un Server DHCP</title>
|
||
|
||
<sect3>
|
||
<title>Cosa Copre Questa Sezione</title>
|
||
|
||
<para>Questa sezione fornisce informazioni su come
|
||
configurare un sistema FreeBSD che funzioni come
|
||
un server DHCP usando l'implementazione del server
|
||
DHCP dell'ISC (Internet Software Consortium).</para>
|
||
|
||
<para>Il server non viene
|
||
fornito come parte di FreeBSD, così
|
||
dovrai installare il port
|
||
<filename role="package">net/isc-dhcp3-server</filename>
|
||
per fornire questo servizio. Vedi
|
||
<xref linkend="ports"/> per
|
||
più informazioni su come usare la Collezione
|
||
dei Port.</para>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Installazione del DHCP Server</title>
|
||
|
||
<indexterm>
|
||
<primary>DHCP</primary>
|
||
<secondary>installazione</secondary>
|
||
</indexterm>
|
||
|
||
<para>Per configurare il tuo sistema FreeBSD
|
||
come un server DHCP, assicurati che il
|
||
device &man.bpf.4; sia compilato nel
|
||
kernel. Per farlo, aggiungi
|
||
<literal>device bpf</literal>
|
||
al file di configurazione del kernel, e ricompilalo. Per
|
||
maggiori informazioni su come compilare un kernel,
|
||
vedi <xref linkend="kernelconfig"/>.</para>
|
||
|
||
<para>Il device <devicename>bpf</devicename>
|
||
è già
|
||
parte del kernel <filename>GENERIC</filename>
|
||
che viene fornito con FreeBSD, così
|
||
non hai bisogno di creare
|
||
un kernel custom per far funzionare il DHCP.</para>
|
||
|
||
<note>
|
||
<para>Quelli di voi che sono particolarmente
|
||
attenti alla sicurezza, dovrebbero notare che
|
||
<devicename>bpf</devicename> è anche il
|
||
device che permette agli sniffer di pacchetti
|
||
di funzionare correttamente (anche se tali
|
||
programmi hanno bisogno di accesso privilegiato).
|
||
<devicename>bpf</devicename> <emphasis>è
|
||
</emphasis> richiesto per il funzionamento del DHCP,
|
||
ma se siete molto attenti alla sicurezza,
|
||
probabilmente non dovreste includere
|
||
<devicename>bpf</devicename>
|
||
nel vostro kernel semplicemente perchè vi
|
||
aspettate di usare il DHCP in qualche momento.</para>
|
||
</note>
|
||
|
||
<para>La prossima cosa che devi fare è
|
||
editare il file <filename>dhcpd.conf</filename> che
|
||
è stato installato dal port
|
||
<filename role="package">net/isc-dhcp3-server</filename>.
|
||
Di default, questo sarà
|
||
<filename>/usr/local/etc/dhcpd.conf.sample</filename>
|
||
e dovresti copiare questo file in
|
||
<filename>/usr/local/etc/dhcpd.conf</filename>
|
||
prima di procedere con i cambiamenti.</para>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Configurare il Server DHCP</title>
|
||
|
||
<indexterm>
|
||
<primary>DHCP</primary>
|
||
<secondary>dhcpd.conf</secondary>
|
||
</indexterm>
|
||
|
||
<para><filename>dhcpd.conf</filename> è
|
||
composto di dichiarazioni riguardanti
|
||
sottoreti ed host, e forse lo si spiega
|
||
meglio con un esempio:</para>
|
||
|
||
<programlisting>option domain-name "example.com";<co id="domain-name"/>
|
||
option domain-name-servers 192.168.4.100;<co id="domain-name-servers"/>
|
||
option subnet-mask 255.255.255.0;<co id="subnet-mask"/>
|
||
|
||
default-lease-time 3600;<co id="default-lease-time"/>
|
||
max-lease-time 86400;<co id="max-lease-time"/>
|
||
ddns-update-style none;<co id="ddns-update-style"/>
|
||
|
||
subnet 192.168.4.0 netmask 255.255.255.0 {
|
||
range 192.168.4.129 192.168.4.254;<co id="range"/>
|
||
option routers 192.168.4.1;<co id="routers"/>
|
||
}
|
||
|
||
host mailhost {
|
||
hardware ethernet 02:03:04:05:06:07;<co id="hardware"/>
|
||
fixed-address mailhost.example.com;<co id="fixed-address"/>
|
||
}</programlisting>
|
||
|
||
<calloutlist>
|
||
<callout arearefs="domain-name">
|
||
<para>Questa opzione specifica il dominio che
|
||
verrà servito ai client come il dominio
|
||
di default di ricerca. Si veda
|
||
&man.resolv.conf.5; per più informazioni.</para>
|
||
</callout>
|
||
|
||
<callout arearefs="domain-name-servers">
|
||
<para>Questa opzione specifica una lista di server
|
||
DNS separata da virgole, che i client
|
||
dovrebbero usare.</para>
|
||
</callout>
|
||
|
||
<callout arearefs="subnet-mask">
|
||
<para>La netmask che sarà fornita ai client.</para>
|
||
</callout>
|
||
|
||
<callout arearefs="default-lease-time">
|
||
<para>Un client potrebbe richiedere una lunghezza di
|
||
tempo specifica per la quale il rilascio sarà
|
||
valido. Altrimenti il server assegnerà
|
||
un tempo di rilascio con questa durata (in secondi).</para>
|
||
</callout>
|
||
|
||
<callout arearefs="max-lease-time">
|
||
<para>Questa è la lunghezza massima di
|
||
tempo per la quale un server effettuerà
|
||
un rilascio. Se un client dovesse richiedere
|
||
un rilascio più lungo, sarà effettuato
|
||
un rilascio, anche se sarà valido solo per
|
||
<literal>max-lease-time</literal> secondi.</para>
|
||
</callout>
|
||
|
||
<callout arearefs="ddns-update-style">
|
||
<para>Questa opzione specifica se il server DHCP
|
||
dovrà cercare di modificare il DNS
|
||
quando un rilascio è accettato o
|
||
liberato. Nella implementazione ISC
|
||
questa opzione è
|
||
<emphasis>richiesta</emphasis>.</para>
|
||
</callout>
|
||
|
||
<callout arearefs="range">
|
||
<para>Questo identifica quale indirizzo IP
|
||
dovrà essere usato nel pool riservato
|
||
per l'allocazione ad i client. Gli indirizzi
|
||
IP fra, ed inclusi, quelli dichiarati sono
|
||
assegnabili agli utenti.</para>
|
||
</callout>
|
||
|
||
<callout arearefs="routers">
|
||
<para>Dichiara il default gateway che sarà
|
||
assegnato ad i client.</para>
|
||
</callout>
|
||
|
||
<callout arearefs="hardware">
|
||
<para>L'indirizzo hardware MAC di un host
|
||
(cosicchè il server DHCP
|
||
possa riconoscere un host quando
|
||
fa una richiesta).</para>
|
||
</callout>
|
||
|
||
<callout arearefs="fixed-address">
|
||
<para>Specifica che all'host dovrebbe sempre
|
||
essere fornito lo stesso indirizzo IP.
|
||
Nota che usare un hostname è
|
||
corretto in questo caso,
|
||
dato che il DHCP server risolverà
|
||
l'hostname stesso prima di restituire
|
||
l'informazione sul rilascio.</para>
|
||
</callout>
|
||
</calloutlist>
|
||
|
||
<para>Una volta che hai finito di scrivere
|
||
il tuo <filename>dhcpd.conf</filename>,
|
||
puoi abilitare il server DHCP in
|
||
<filename>/etc/rc.conf</filename>, aggiungendo:</para>
|
||
|
||
<programlisting>dhcpd_enable="YES"
|
||
dhcpd_ifaces="dc0"</programlisting>
|
||
|
||
<para>Sostituisci il nome dell'interfaccia
|
||
<literal>dc0</literal> con l'interfaccia
|
||
(o le interfacce, separate da spazi) su cui il tuo server DHCP
|
||
dovrebbe stare in ascolto per le richieste DHCP dei client.</para>
|
||
|
||
<para>Quindi, puoi procedere ad avviare il server con il
|
||
seguente comando:</para>
|
||
|
||
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/isc-dhcpd.sh start</userinput></screen>
|
||
|
||
<para>Se hai bisogno di fare altri cambiamenti
|
||
alla configurazione del server in futuro,
|
||
è importante notare che l'invio di
|
||
un segnale <literal>SIGHUP</literal>
|
||
a <application>dhcpd</application>
|
||
<emphasis>non</emphasis> fa sì che il file
|
||
di configurazione sia ricaricato, come avviene
|
||
con la maggior parte dei demoni. Dovrai inviare
|
||
un segnale <literal>SIGTERM</literal> per fermare
|
||
il processo, e poi riavviarlo usando il comando
|
||
sopracitato.</para>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Files</title>
|
||
|
||
<indexterm>
|
||
<primary>DHCP</primary>
|
||
<secondary>file di configurazione</secondary>
|
||
</indexterm>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para><filename>/usr/local/sbin/dhcpd</filename></para>
|
||
|
||
<para><application>dhcpd</application> è
|
||
linkato staticamente e risiede in
|
||
<filename>/usr/local/sbin
|
||
</filename>. La pagina di manuale di
|
||
&man.dhcpd.8; installata con il port
|
||
dà più informazioni
|
||
su <application>dhcpd</application>.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><filename>/usr/local/etc/dhcpd.conf</filename></para>
|
||
|
||
<para><application>dhcpd</application> richiede
|
||
un file di configurazione,
|
||
<filename>/usr/local/etc/dhcpd.conf
|
||
</filename>, prima che possa iniziare a
|
||
fornire il servizio ai client. Questo
|
||
file deve contenere tutte le informazioni
|
||
che devono essere fornite ai client che
|
||
sono serviti, oltre alle informazioni
|
||
riguardanti le operazioni del server. Questo
|
||
file di configurazione è descritto
|
||
dalla pagina di manuale &man.dhcpd.conf.5;
|
||
installata dal port.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><filename>/var/db/dhcpd.leases</filename></para>
|
||
|
||
<para>Il server DHCP mantiene un database dei
|
||
rilasci che ha effettuato in questo file, che
|
||
viene scritto come un log. La pagina di manuale
|
||
&man.dhcpd.leases.5;, installata dal port
|
||
ne dà una descrizione leggermente pi`
|
||
lunga.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><filename>/usr/local/sbin/dhcrelay</filename></para>
|
||
|
||
<para><application>dhcrelay</application> è
|
||
usata in ambienti avanzati dove un server
|
||
DHCP reinvia le richieste da un client ad un
|
||
altro server DHCP su una rete separata. Se
|
||
hai bisogno di questa
|
||
funzionalità, installa il port
|
||
<filename role="package">net/isc-dhcp3-relay</filename>.
|
||
La pagina di manuale &man.dhcrelay.8; fornita
|
||
col port contiene più dettagli.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect3>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="network-dns">
|
||
<sect1info>
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Chern</firstname>
|
||
<surname>Lee</surname>
|
||
|
||
<contrib>Grazie al contributo di </contrib>
|
||
</author>
|
||
|
||
<author>
|
||
<firstname>Tom</firstname>
|
||
<surname>Rhodes</surname>
|
||
</author>
|
||
|
||
<author>
|
||
<firstname>Daniel</firstname>
|
||
<surname>Gerzo</surname>
|
||
</author>
|
||
</authorgroup>
|
||
</sect1info>
|
||
|
||
<title>Domain Name System (<acronym>DNS</acronym>)</title>
|
||
|
||
<sect2>
|
||
<title>Uno sguardo d'insieme</title>
|
||
|
||
<indexterm><primary>BIND</primary></indexterm>
|
||
|
||
<para>&os; utilizza, di default, una versione di
|
||
BIND (Berkeley Internet Name Domain), che è
|
||
la più completa implementazione del protocollo
|
||
<acronym>DNS</acronym>. <acronym>DNS</acronym> è il protocollo
|
||
attraverso il quale nomi sono mappati ad indirizzi <acronym>IP</acronym>,
|
||
e viceversa. Per esempio, una query per
|
||
<hostid role="fqdn">www.FreeBSD.org
|
||
</hostid> riceverà una replica con l'indirizzo
|
||
<acronym>IP</acronym> del web server del The &os; Project, mentre una
|
||
query per <hostid role="fqdn">ftp.FreeBSD.org</hostid>
|
||
ritornerà l'indirizzo <acronym>IP</acronym> della corrispondente
|
||
macchina <acronym>FTP</acronym>. Allo stesso modo, può
|
||
avvenire l'opposto. Una
|
||
query per un indirizzo <acronym>IP</acronym> può risolvere il suo
|
||
nome host. Non è necessario avere in esecuzione
|
||
un name server per fare <acronym>DNS</acronym> lookups su un sistema.
|
||
</para>
|
||
|
||
<para>&os; al momento viene distribuito con software <acronym>DNS</acronym>
|
||
<acronym>BIND</acronym>9 di default. La nostra installazione fornisce
|
||
caratteristiche di sicurezza migliorate, un nuovo layout del file
|
||
system e configurazione &man.chroot.8; automatica.</para>
|
||
|
||
<indexterm><primary>DNS</primary></indexterm>
|
||
|
||
<para>DNS è coordinato su Internet attraverso
|
||
un sistema alquanto complesso di name server autoritativi,
|
||
ed altri name server di più piccola scala che
|
||
ospitano e gestiscono cache di informazioni individuali
|
||
sui domini.</para>
|
||
|
||
<para>Al momento corrente, BIND è mantenuto
|
||
dall'Internet Software Consortium
|
||
<ulink url="http://www.isc.org/"></ulink>.
|
||
</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Terminologia</title>
|
||
|
||
<para>Per comprendere questo documento, alcuni termini
|
||
relativi al <acronym>DNS</acronym> devono essere capiti.</para>
|
||
|
||
<indexterm><primary>risolutore</primary></indexterm>
|
||
<indexterm><primary>DNS inverso</primary></indexterm>
|
||
<indexterm><primary>zona root</primary></indexterm>
|
||
|
||
<informaltable frame="none" pgwide="1">
|
||
<tgroup cols="2">
|
||
<colspec colwidth="1*"/>
|
||
<colspec colwidth="3*"/>
|
||
|
||
<thead>
|
||
<row>
|
||
<entry>Termine</entry>
|
||
|
||
<entry>Definizione</entry>
|
||
</row>
|
||
</thead>
|
||
|
||
<tbody>
|
||
<row>
|
||
<entry>Forward <acronym>DNS</acronym></entry>
|
||
|
||
<entry>La mappa da hostname ad indirizzi IP.</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>Origine</entry>
|
||
|
||
<entry>Si riferisce al dominio coperto in
|
||
un particolare file di zona.</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><application>named</application>,
|
||
BIND, name server</entry>
|
||
|
||
<entry>Nomi comuni per il pacchetto name server BIND
|
||
all'interno di &os;.</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>Risolutore</entry>
|
||
|
||
<entry>Un processo di sistema attraverso il quale
|
||
una macchina fa query su un name server
|
||
per informazioni di zona.</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><acronym>DNS</acronym> inverso</entry>
|
||
|
||
<entry>L'opposto del forward <acronym>DNS</acronym>; mappare
|
||
indirizzi <acronym>IP</acronym> su nomi host.</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>Zona root</entry>
|
||
|
||
<entry>L'inizio della gerarchia della zona
|
||
Internet. Tutte le zone cadono sotto la
|
||
zona root, analogamente
|
||
a come tutti i file nel file system cadono sotto
|
||
la directory root.</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry>Zona</entry>
|
||
|
||
<entry>Un dominio individuale, sottodominio, o
|
||
porzione del <acronym>DNS</acronym> amministrato dalla stessa
|
||
autorità</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
|
||
<indexterm>
|
||
<primary>zone</primary>
|
||
<secondary>esempi</secondary>
|
||
</indexterm>
|
||
|
||
<para>Esempi di zone:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para><hostid>.</hostid> è la zona root</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><hostid>org.</hostid> è una zona
|
||
Top Level Domain (<acronym>TLD</acronym>) sotto la zona root</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><hostid role="domainname">example.org.</hostid>
|
||
è una zona sotto la zona
|
||
<hostid>org.</hostid> <acronym>TLD</acronym></para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>
|
||
<hostid>1.168.192.in-addr.arpa</hostid> è una zona
|
||
che referenzia tutti gli indirizzi <acronym>IP</acronym> che cadono
|
||
sotto lo spazio <acronym>IP</acronym> <hostid role="ipaddr">192.168.1.*</hostid>.
|
||
</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Come si può vedere, la parte più
|
||
specifica di un nome host appare a sinistra. Per esempio
|
||
<hostid role="domainname">example.org.</hostid> è
|
||
più specifico di <hostid>org.</hostid>, come
|
||
<hostid>org.</hostid> è più specifico
|
||
della zona root. La disposizione di ogni parte di un nome
|
||
host è analoga ad un file system: la
|
||
directory <filename>/dev</filename> cade
|
||
all'interno della root, e così via.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Ragioni per Avere in Esecuzione un Name Server</title>
|
||
|
||
<para>Attualmente vengono usati due tipi di name server:
|
||
un name server autoritativo, ed un name server cache.</para>
|
||
|
||
<para>Un name server autoritativo è necessario
|
||
quando:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>uno vuole servire informazioni <acronym>DNS</acronym> a tutto
|
||
il mondo, rispondendo in maniera autoritativa
|
||
alle query.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>un dominio, tipo
|
||
<hostid role="domainname">example.org</hostid>, è
|
||
registrato e gli indirizzi <acronym>IP</acronym> devono essere
|
||
assegnati ad hostname sotto questo.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>un blocco di indirizzi <acronym>IP</acronym> richiede
|
||
entry di <acronym>DNS</acronym> inverso (da <acronym>IP</acronym>
|
||
ad hostname).</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>un name server di backup, chiamato uno
|
||
slave, deve rispondere alle query.</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Un name server cache è necessario quando:</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para>un server locale DNS può tenere in cache e
|
||
rispondere più velocemente rispetto ad effettuare
|
||
query ad un name server all'esterno.</para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para>una riduzione nel traffico complessivo di
|
||
rete è desiderato (è stato
|
||
calcolato che il traffico DNS
|
||
conta più del 5% sul traffico totale di
|
||
Internet).</para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para>Quando uno fa una query per risolvere
|
||
<hostid role="fqdn">www.FreeBSD.org</hostid>, il
|
||
risolutore di solito fa una query al name
|
||
server dell'<acronym>ISP</acronym> a cui si è connessi,
|
||
ed ottiene una risposta. Con un server <acronym>DNS</acronym>
|
||
locale, che fa cache,
|
||
la query deve essere effettuata una volta sola dal
|
||
server <acronym>DNS</acronym> che fa cache. Ogni
|
||
query aggiuntiva non dovrà cercare all'esterno
|
||
della rete locale, dato che l'informazione
|
||
è tenuta in cache localmente.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Come Funziona</title>
|
||
|
||
<para>In &os;, il demone BIND è chiamato
|
||
<application>named</application> per ovvie ragioni.</para>
|
||
|
||
<informaltable frame="none" pgwide="1">
|
||
<tgroup cols="2">
|
||
<thead>
|
||
<row>
|
||
<entry>File</entry>
|
||
|
||
<entry>Descrizione</entry>
|
||
</row>
|
||
</thead>
|
||
|
||
<tbody>
|
||
<row>
|
||
<entry><application>&man.named.8;</application></entry>
|
||
|
||
<entry>Il demone BIND.</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><application>&man.rndc.8;</application></entry>
|
||
|
||
<entry>Programma di controllo del name server.</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><filename class="directory">/etc/namedb</filename></entry>
|
||
|
||
<entry>Directory dove risiedono le
|
||
informazioni di zona di BIND.</entry>
|
||
</row>
|
||
|
||
<row>
|
||
<entry><filename>/etc/namedb/named.conf</filename></entry>
|
||
|
||
<entry>File di configurazione del demone.</entry>
|
||
</row>
|
||
</tbody>
|
||
</tgroup>
|
||
</informaltable>
|
||
|
||
<para>
|
||
A seconda di come certe zone sono configurate
|
||
sul server, i file relativi a quelle zone possono essere
|
||
trovate nelle sottodirectory <filename
|
||
class="directory">master</filename>, <filename
|
||
class="directory">slave</filename>, or <filename
|
||
class="directory">dynamic</filename> della directory
|
||
<filename class="directory">/etc/namedb</filename>.
|
||
Questi file contengono le informazioni <acronym>DNS</acronym>
|
||
che saranno distribuite dal name server in risposta alle query.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Avviare BIND</title>
|
||
|
||
<indexterm>
|
||
<primary>BIND</primary>
|
||
<secondary>avvio</secondary>
|
||
</indexterm>
|
||
|
||
<para>Dato che BIND è installato di default,
|
||
configurarlo è relativamente semplice.</para>
|
||
|
||
<para>La configurazione di default di <application>named</application>
|
||
è quella di un name server basilare, eseguito in
|
||
ambiente &man.chroot.8;. Per avviare il server una volta
|
||
con questa configurazione, usa il seguente comando:</para>
|
||
|
||
<screen>&prompt.root; <userinput>/etc/rc.d/named forcestart</userinput></screen>
|
||
|
||
<para>Per assicurarsi che il demone
|
||
<application>named</application>
|
||
sia avviato alla partenza, metti la seguente riga
|
||
in <filename>/etc/rc.conf</filename>:</para>
|
||
|
||
<programlisting>named_enable="YES"</programlisting>
|
||
|
||
<para>Ci sono ovviamente molte opzioni di configurazione
|
||
per <filename>/etc/namedb/named.conf</filename> che sono al di là
|
||
dello scopo di questo documento. Comunque, se siete interessati
|
||
nelle opzioni di avvio per <application>named</application> su &os;,
|
||
dai un'occhiata ai flags <literal>named_</literal> in
|
||
<filename>/etc/defaults/rc.conf</filename> e consulta la pagina
|
||
di manuale &man.rc.conf.5;. Anche la sezione <xref linkend="configtuning-initial"/>
|
||
è una buona base di partenza.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>File di Configurazione</title>
|
||
|
||
<indexterm>
|
||
<primary>BIND</primary>
|
||
<secondary>file di configurazione</secondary>
|
||
</indexterm>
|
||
|
||
<para>I file di configurazione per <application>named</application>
|
||
al corrente risiedono nella directory <filename class="directory">
|
||
/etc/named</filename> e necessiteranno di modifiche prima
|
||
dell'uso, a meno che non si voglia un semplice resolver.
|
||
Qui è dove la maggior pare della configurazione viene
|
||
effettuata.</para>
|
||
|
||
<sect3>
|
||
<title>Usando <command>make-localhost</command></title>
|
||
|
||
<para>Per configurare una zona master per il localhost
|
||
visita la directory <filename class="directory">/etc/namedb</filename>
|
||
ed esegui il seguente comando:</para>
|
||
|
||
<screen>&prompt.root; <userinput>sh make-localhost</userinput></screen>
|
||
|
||
<para>Se tutto è andato bene, un nuovo file dovrebbe
|
||
esistere nella sottodirectory
|
||
<filename class="directory">master</filename>.
|
||
I nomi dei file dovrebbero essere <filename>localhost.rev</filename>
|
||
per il local domain name e<filename>localhost-v6.rev</filename>
|
||
per le configurazioni <acronym>IPv6</acronym>.
|
||
Come il file di configurazione di default, l'informazione
|
||
richiesta sarà presente nel file <filename>named.conf</filename>.
|
||
</para>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title><filename>/etc/namedb/named.conf</filename></title>
|
||
|
||
<programlisting>// $FreeBSD$
|
||
//
|
||
// Refer to the named.conf(5) and named(8) man pages, and the documentation
|
||
// in /usr/share/doc/bind9 for more details.
|
||
//
|
||
// If you are going to set up an authoritative server, make sure you
|
||
// understand the hairy details of how DNS works. Even with
|
||
// simple mistakes, you can break connectivity for affected parties,
|
||
// or cause huge amounts of useless Internet traffic.
|
||
|
||
options {
|
||
directory "/etc/namedb";
|
||
pid-file "/var/run/named/pid";
|
||
dump-file "/var/dump/named_dump.db";
|
||
statistics-file "/var/stats/named.stats";
|
||
|
||
// If named is being used only as a local resolver, this is a safe default.
|
||
// For named to be accessible to the network, comment this option, specify
|
||
// the proper IP address, or delete this option.
|
||
listen-on { 127.0.0.1; };
|
||
|
||
// If you have IPv6 enabled on this system, uncomment this option for
|
||
// use as a local resolver. To give access to the network, specify
|
||
// an IPv6 address, or the keyword "any".
|
||
// listen-on-v6 { ::1; };
|
||
|
||
// In addition to the "forwarders" clause, you can force your name
|
||
// server to never initiate queries of its own, but always ask its
|
||
// forwarders only, by enabling the following line:
|
||
//
|
||
// forward only;
|
||
|
||
// If you've got a DNS server around at your upstream provider, enter
|
||
// its IP address here, and enable the line below. This will make you
|
||
// benefit from its cache, thus reduce overall DNS traffic in the Internet.
|
||
/*
|
||
forwarders {
|
||
127.0.0.1;
|
||
};
|
||
*/</programlisting>
|
||
|
||
<para>Proprio come dicono i commenti, per beneficiare
|
||
di una cache di un server superiore, può
|
||
essere abilitato <literal>forwarders</literal>.
|
||
Sotto circostanze normali, un name
|
||
server farà query ricorsive attraverso Internet
|
||
cercando certi name server fino a chè non trova
|
||
la risposta che sta cercando. Averlo abilitato farà
|
||
sì che sarà fatta prima una query verso il
|
||
name server superiore (o il name server fornito),
|
||
avvantaggiandosi della sua cache. Se il name
|
||
server superiore è un name server molto
|
||
trafficato e veloce, può valere la pena di
|
||
abilitarlo.</para>
|
||
|
||
<warning>
|
||
<para><hostid role="ipaddr">127.0.0.1</hostid>
|
||
<emphasis>non</emphasis> funzionerà qui.
|
||
Cambia questo indirizzo <acronym>IP</acronym> in un name server
|
||
superiore.</para>
|
||
</warning>
|
||
|
||
<programlisting> /*
|
||
* If there is a firewall between you and nameservers you want
|
||
* to talk to, you might need to uncomment the query-source
|
||
* directive below. Previous versions of BIND always asked
|
||
* questions using port 53, but BIND versions 8 and later
|
||
* use a pseudo-random unprivileged UDP port by default.
|
||
*/
|
||
// query-source address * port 53;
|
||
};
|
||
|
||
// If you enable a local name server, don't forget to enter 127.0.0.1
|
||
// first in your /etc/resolv.conf so this server will be queried.
|
||
// Also, make sure to enable it in /etc/rc.conf.
|
||
|
||
zone "." {
|
||
type hint;
|
||
file "named.root";
|
||
};
|
||
|
||
zone "0.0.127.IN-ADDR.ARPA" {
|
||
type master;
|
||
file "master/localhost.rev";
|
||
};
|
||
|
||
// RFC 3152
|
||
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA" {
|
||
type master;
|
||
file "master/localhost-v6.rev";
|
||
};
|
||
|
||
// NB: Do not use the IP addresses below, they are faked, and only
|
||
// serve demonstration/documentation purposes!
|
||
//
|
||
// Example slave zone config entries. It can be convenient to become
|
||
// a slave at least for the zone your own domain is in. Ask
|
||
// your network administrator for the IP address of the responsible
|
||
// primary.
|
||
//
|
||
// Never forget to include the reverse lookup (IN-ADDR.ARPA) zone!
|
||
// (This is named after the first bytes of the IP address, in reverse
|
||
// order, with ".IN-ADDR.ARPA" appended.)
|
||
//
|
||
// Before starting to set up a primary zone, make sure you fully
|
||
// understand how DNS and BIND works. There are sometimes
|
||
// non-obvious pitfalls. Setting up a slave zone is simpler.
|
||
//
|
||
// NB: Don't blindly enable the examples below. :-) Use actual names
|
||
// and addresses instead.
|
||
|
||
/* An example master zone
|
||
zone "example.net" {
|
||
type master;
|
||
file "master/example.net";
|
||
};
|
||
*/
|
||
|
||
/* An example dynamic zone
|
||
key "exampleorgkey" {
|
||
algorithm hmac-md5;
|
||
secret "sf87HJqjkqh8ac87a02lla==";
|
||
};
|
||
|
||
zone "example.org" {
|
||
type master;
|
||
allow-update {
|
||
key "exampleorgkey";
|
||
};
|
||
file "dynamic/example.org";
|
||
};
|
||
*/
|
||
|
||
/* Examples of forward and reverse slave zones
|
||
zone "example.com" {
|
||
type slave;
|
||
file "slave/example.com";
|
||
masters {
|
||
192.168.1.1;
|
||
};
|
||
};
|
||
zone "1.168.192.in-addr.arpa" {
|
||
type slave;
|
||
file "slave/1.168.192.in-addr.arpa";
|
||
masters {
|
||
192.168.1.1;
|
||
};
|
||
};
|
||
*/</programlisting>
|
||
|
||
<para>In <filename>named.conf</filename>, ci sono esempi
|
||
di linee slave per zone di forward ed inverse.</para>
|
||
|
||
<para>Per ogni nuova zona servita, una nuova linea di
|
||
zona deve essere aggiunta a
|
||
<filename>named.conf</filename>.</para>
|
||
|
||
<para>Per esempio, la più semplice entry per
|
||
<hostid role="domainname">example.org</hostid> può
|
||
assomigliare a:</para>
|
||
|
||
<programlisting>zone "example.org" {
|
||
type master;
|
||
file "master/example.org";
|
||
};</programlisting>
|
||
|
||
<para>La zona è una master, come indicato
|
||
dall'entry <option>type</option>,
|
||
e conserva le informazioni di zona su
|
||
<filename>/etc/namedb/master/example.org</filename>
|
||
indicata dalla entry
|
||
<option>file</option>.</para>
|
||
|
||
<programlisting>zone "example.org" {
|
||
type slave;
|
||
file "slave/example.org";
|
||
};</programlisting>
|
||
|
||
<para>Nel caso slave, l'informazione di zona è
|
||
trasferita dal name server master per quella zona
|
||
particolare, e salvata nel file specificato. Se e
|
||
quando il master muore o è irraggiungibile,
|
||
il name server slave avrà le informazioni di
|
||
zona trasferite e sarà in grado di servirlo.</para>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>File di Zona</title>
|
||
|
||
<indexterm>
|
||
<primary>BIND</primary>
|
||
<secondary>zone files</secondary>
|
||
</indexterm>
|
||
|
||
<para>Un esempio di file di zona master per <hostid
|
||
role="domainname">example.org</hostid> (che esiste
|
||
all'interno di <filename>/etc/namedb/master/example.org
|
||
</filename>) è la seguente:</para>
|
||
|
||
<programlisting>$TTL 3600 ; 1 hour
|
||
example.org. IN SOA ns1.example.org. admin.example.org. (
|
||
2006051501 ; Serial
|
||
10800 ; Refresh
|
||
3600 ; Retry
|
||
604800 ; Expire
|
||
86400 ; Minimum TTL
|
||
)
|
||
|
||
; DNS Servers
|
||
IN NS ns1.example.org.
|
||
IN NS ns2.example.org.
|
||
|
||
; MX Records
|
||
IN MX 10 mx.example.org.
|
||
IN MX 20 mail.example.org.
|
||
|
||
IN A 192.168.1.1
|
||
|
||
; Machine Names
|
||
localhost IN A 127.0.0.1
|
||
ns1 IN A 192.168.1.2
|
||
ns2 IN A 192.168.1.3
|
||
mx IN A 192.168.1.4
|
||
mail IN A 192.168.1.5
|
||
|
||
; Aliases
|
||
www IN CNAME @</programlisting>
|
||
|
||
<para>Nota che ogni hostname che finisce in
|
||
un <quote>.</quote> è
|
||
un nome esatto, mentre ogni entità senza un
|
||
<quote>.</quote> è referenziato all'origine.
|
||
Per esempio <literal>www</literal> è trasformato
|
||
in <literal>www.<replaceable>origin</replaceable></literal>.
|
||
Nel nostro file di zone fittizio, la nostra origine
|
||
è <hostid>example.org</hostid>, così
|
||
<literal>www</literal> si trasformerebbe in
|
||
<hostid>www.example.org</hostid>.</para>
|
||
|
||
<para>Il formato di un file di zona è
|
||
il seguente:</para>
|
||
|
||
<programlisting>recordname IN recordtype
|
||
value</programlisting>
|
||
|
||
<indexterm>
|
||
<primary>DNS</primary>
|
||
<secondary>records</secondary>
|
||
</indexterm>
|
||
|
||
<para>I record DNS usati più di frequente:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term>SOA</term>
|
||
|
||
<listitem>
|
||
<para>inizio di una zona di
|
||
autorità</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>NS</term>
|
||
|
||
<listitem>
|
||
<para>un name server
|
||
autoritativo</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>A</term>
|
||
|
||
<listitem>
|
||
<para>un indirizzo host</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>CNAME</term>
|
||
|
||
<listitem>
|
||
<para>il nome canonico per un
|
||
alias</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>MX</term>
|
||
|
||
<listitem>
|
||
<para>mail exchanger</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term>PTR</term>
|
||
|
||
<listitem>
|
||
<para>un puntatore a nome di dominio (usato nel
|
||
DNS inverso)</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<programlisting>
|
||
example.org. IN SOA ns1.example.org. admin.example.org. (
|
||
2006051501 ; Serial
|
||
10800 ; Refresh after 3 hours
|
||
3600 ; Retry after 1 hour
|
||
604800 ; Expire after 1 week
|
||
86400 ) ; Minimum TTL of 1
|
||
day</programlisting>
|
||
|
||
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><hostid role="domainname">example.org.</hostid></term>
|
||
|
||
<listitem>
|
||
<para>il nome di dominio, inoltre è
|
||
l'origine per questo file di zona.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><hostid role="fqdn">ns1.example.org.</hostid></term>
|
||
|
||
<listitem>
|
||
<para>il name server primario/autoritativo
|
||
per questa zona.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>admin.example.org.</literal></term>
|
||
|
||
<listitem>
|
||
<para>la persona responsabile per questa
|
||
zona, un indirizzo email con <quote>@</quote>
|
||
sostituito. (<email>admin@example.org</email>
|
||
diventa <literal>admin.example.org</literal>)</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>2006051501</literal></term>
|
||
|
||
<listitem>
|
||
<para>il numero di serie del file. Questo
|
||
deve essere aumentato ogni volta che il file di
|
||
zona è modificato. Al giorno d'oggi
|
||
molti amministratori preferiscono un formato
|
||
<literal>yyyymmddrr</literal> per il numero
|
||
di serie.
|
||
<literal>2006051501</literal> significherebbe
|
||
modificato l'ultima volta il 05/15/2006, l'ultimo
|
||
<literal>01</literal> essendo la prima volta che
|
||
il file di zona è stato modificato in
|
||
questo giorno. Il numero di serie è
|
||
importante dato che avverte
|
||
name server slave per una zona quando questa
|
||
` modificata.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<programlisting>
|
||
IN NS ns1.example.org.</programlisting>
|
||
|
||
<para>Questa è una linea NS. Ogni name server che
|
||
replicherà in maniera autoritativa la zona deve
|
||
avere una di queste linee. Il <literal>@</literal> come
|
||
visto potrebbe essere stato <hostid role="domainname">
|
||
example.org.</hostid>
|
||
Il <literal>@</literal> si traduce nell'origine.</para>
|
||
|
||
<programlisting>
|
||
localhost IN A 127.0.0.1
|
||
ns1 IN A 192.168.1.2
|
||
ns2 IN A 192.168.1.3
|
||
mx IN A 192.168.1.4
|
||
mail IN A 192.168.1.5</programlisting>
|
||
|
||
<para>Il record A indica un nome macchina. Come visto
|
||
sopra, <hostid role="fqdn">ns1.example.org</hostid>
|
||
risolverebbe in <hostid role="ipaddr">192.168.1.2</hostid>.
|
||
</para>
|
||
|
||
<programlisting>
|
||
IN A 192.168.1.1</programlisting>
|
||
|
||
<para>Questa linea assegna l'indirizzo IP
|
||
<hostid role="ipaddr">192.168.1.1</hostid> alla corrente origine,
|
||
in questo caso <hostid role="domainname">example.org</hostid>.</para>
|
||
|
||
<programlisting>
|
||
www IN CNAME @</programlisting>
|
||
|
||
<para>Il record nome canonico è usato per dare alias
|
||
ad una macchina. Nell'esempio, <hostid>www</hostid>
|
||
è tramutato in alias nella macchina <quote>master</quote>
|
||
che corrisponde al domain name <hostid role="domainname">example.org
|
||
</hostid> (<hostid role="ipaddr">192.168.1.1</hostid>).
|
||
CNAME possono essere usati per fornire alias
|
||
ad hostname o distribuire in round robin un
|
||
hostname fra molte macchine.</para>
|
||
|
||
<indexterm>
|
||
<primary>MX record</primary>
|
||
</indexterm>
|
||
|
||
<programlisting>
|
||
IN MX 10 mail.example.org.</programlisting>
|
||
|
||
<para>Il record MX ` usato per specificare quali
|
||
mail server sono responsabili per gestire mail
|
||
entranti per la zona.
|
||
<hostid role="fqdn">mail.example.org
|
||
</hostid> è l'hostname del mail
|
||
server, e 10 è la priorità di
|
||
quel mail server.</para>
|
||
|
||
<para>Uno può avere molti mail server, con
|
||
priorità di 10, 20 e così via. Un mail server che
|
||
cerca di consegnare una mail a
|
||
<hostid role="domainname">example.org</hostid>
|
||
proverà prima l'MX con la più alta
|
||
priorità (il record con il numero di priorita' minimo)
|
||
poi il secondo, etc., fino a
|
||
chè la mail non sia
|
||
consegnata correttamente.</para>
|
||
|
||
<para>Per file di zona in-addr.arpa (DNS inverso), lo stesso
|
||
formato è usato, eccetto con linee PTR
|
||
al posto di A o CNAME.</para>
|
||
|
||
<programlisting>$TTL 3600
|
||
1.168.192.in-addr.arpa. IN SOA ns1.example.org. admin.example.org. (
|
||
2006051501 ; Serial
|
||
10800 ; Refresh
|
||
3600 ; Retry
|
||
604800 ; Expire
|
||
3600 ) ; Minimum
|
||
|
||
IN NS ns1.example.org.
|
||
IN NS ns2.example.org.
|
||
|
||
1 IN PTR example.org.
|
||
2 IN PTR ns1.example.org.
|
||
3 IN PTR ns2.example.org.
|
||
4 IN PTR mx.example.org.
|
||
5 IN PTR mail.example.org.</programlisting>
|
||
|
||
<para>Questo file da la corretta mappa da indirizzi
|
||
IP ad hostname per il nostro dominio fittizio.</para>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Caching Name Server</title>
|
||
|
||
<indexterm>
|
||
<primary>BIND</primary>
|
||
<secondary>caching name server</secondary>
|
||
</indexterm>
|
||
|
||
<para>Un name server caching è un name server
|
||
che non è autoritativo per nessuna zona.
|
||
Fa semplicemente query, e ne memorizza le risposte
|
||
per uso successivo. Per impostarne uno, configura
|
||
il name server come al solito, omettendo ogni
|
||
inclusione di zona.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Sicurezza</title>
|
||
|
||
<para>Anche se BIND è la più comune
|
||
implementazione del DNS, c'è sempre la questione
|
||
della sicurezza. Talvolta vengono trovati possibili
|
||
e sfruttabili buchi di sicurezza.</para>
|
||
|
||
<para>Mentre &os; tiene <application>named</application>
|
||
automaticamente in un ambiente &man.chroot.8;,
|
||
ci sono molti altri meccanismi di sicurezza che
|
||
potrebbero essere sfruttati per attacchi al servizio
|
||
<acronym>DNS</acronym>.</para>
|
||
|
||
<para>È una buona idea leggere
|
||
gli avvisi sulla sicurezza di <ulink
|
||
url="http://www.cert.org/">CERT</ulink> e
|
||
sottoscrivere le &a.security-notifications;
|
||
per stare aggiornato con le questioni
|
||
correnti di sicurezza di Internet e FreeBSD.</para>
|
||
|
||
<tip>
|
||
<para>Se sorge un problema, tenere i
|
||
sorgenti aggiornati e fare una compilazione
|
||
al volo di <application>named
|
||
</application> non farebbe male.</para>
|
||
</tip>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Ulteriori letture</title>
|
||
|
||
<para>Pagine di manuale di
|
||
BIND/<application>named</application>:
|
||
&man.rndc.8; &man.named.8; &man.named.conf.5;</para>
|
||
|
||
<itemizedlist>
|
||
<listitem>
|
||
<para><ulink
|
||
url="http://www.isc.org/products/BIND/">Official ISC BIND
|
||
Page</ulink></para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><ulink
|
||
url="http://www.isc.org/sw/guild/bf/">Official ISC BIND
|
||
Forum</ulink></para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><ulink
|
||
url="http://www.nominum.com/getOpenSourceResource.php?id=6">
|
||
BIND FAQ</ulink></para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><ulink url="http://www.oreilly.com/catalog/dns4/">O'Reilly
|
||
DNS and BIND 4th Edition</ulink></para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><ulink
|
||
url="ftp://ftp.isi.edu/in-notes/rfc1034.txt">RFC1034
|
||
- Domain Names - Concepts and Facilities</ulink></para>
|
||
</listitem>
|
||
|
||
<listitem>
|
||
<para><ulink
|
||
url="ftp://ftp.isi.edu/in-notes/rfc1035.txt">RFC1035
|
||
- Domain Names - Implementation and Specification</ulink></para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="network-apache">
|
||
<sect1info>
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Murray</firstname>
|
||
|
||
<surname>Stokely</surname>
|
||
|
||
<contrib>Grazie al contributo di </contrib>
|
||
</author>
|
||
</authorgroup>
|
||
</sect1info>
|
||
|
||
<title>Apache HTTP Server</title>
|
||
|
||
<indexterm>
|
||
<primary>web server</primary>
|
||
<secondary>installare</secondary>
|
||
</indexterm>
|
||
<indexterm><primary>Apache</primary></indexterm>
|
||
|
||
<sect2>
|
||
<title>Uno sguardo d'insieme</title>
|
||
|
||
<para>&os; è usato per far girare
|
||
alcuni dei siti web più trafficati
|
||
al mondo. La maggioranza dei web server
|
||
su Internet usano attualmene
|
||
<application>Apache HTTP Server</application>.
|
||
Il pacchetto software di
|
||
<application>Apache</application>
|
||
dovrebbe essere incluso nel tuo media di
|
||
installazione di FreeBSD. Se non hai
|
||
installato <application>Apache</application>
|
||
quando hai installato FreeBSD per la prima volta,
|
||
lo puoi installare dal port
|
||
<filename role="package">www/apache13</filename>
|
||
o <filename role="package">www/apache22</filename>.</para>
|
||
|
||
<para>Una volta che <application>Apache</application>
|
||
è stato installato con successo, deve essere
|
||
configurato.</para>
|
||
|
||
<note>
|
||
<para>Questa sezione copre la versione 1.3.X
|
||
di <application>Apache HTTP Server</application>
|
||
dato che è la versione più usata per
|
||
&os;. <application>Apache</application> 2.X
|
||
introduce molte nuove tecnologie ma queste non
|
||
saranno discusse in questa sede. Per maggiori
|
||
informazioni su
|
||
<application>Apache</application> 2.X, per favore
|
||
consulta <ulink
|
||
url="httpd://httpd.apache.org/"></ulink>.</para>
|
||
</note>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Configurazione</title>
|
||
|
||
<indexterm>
|
||
<primary>Apache</primary>
|
||
<secondary>file di configurazione</secondary>
|
||
</indexterm>
|
||
|
||
<para>Il principale file di configurazione
|
||
di <application>Apache HTTP Server</application>
|
||
è installato in
|
||
<filename>/usr/local/etc/apache/httpd.conf</filename>
|
||
su &os;. Questo file è un tipico file di testo
|
||
di configurazione di &unix; con linee di commento
|
||
che cominciano col carattere <literal>#</literal>.
|
||
Una descrizione comprensiva di tutte le possibili
|
||
opzioni di configurazione è al di fuori dello
|
||
scopo di questo libro, così solo le direttive
|
||
usate più di frequente saranno descritte
|
||
di seguito.</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><literal>ServerRoot "/usr/local"</literal></term>
|
||
|
||
<listitem>
|
||
<para>Questo specifica la gerachia di directory
|
||
di default per l'installazione di
|
||
<application>Apache</application>. I binari
|
||
sono conservati nelle sottodirectory
|
||
<filename class="directory">bin</filename> e
|
||
<filename class="directory">sbin</filename>
|
||
sotto la server root, ed i file di configurazione
|
||
sono conservati sotto
|
||
<filename class="directory">etc/apache</filename>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>ServerAdmin you@your.address</literal></term>
|
||
|
||
<listitem>
|
||
<para>L'indirizzo email al quale i problemi
|
||
riguardanti il server dovrebbero essere
|
||
inviati. Questo indirizzo appare su alcune
|
||
pagine generate dal server,
|
||
come alcuni documenti di errore.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>ServerName www.example.com</literal></term>
|
||
|
||
<listitem>
|
||
<para><literal>ServerName</literal> ti permette di
|
||
impostare un nome host che viene inviato
|
||
ai client per il tuo server, se questo
|
||
è differente da quello per il quale l'host
|
||
è configurato (ad esempio usi <hostid>www
|
||
</hostid> invece del vero nome host).</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>DocumentRoot "/usr/local/www/data"</literal></term>
|
||
|
||
<listitem>
|
||
<para><literal>DocumentRoot</literal>: La directory
|
||
dalla quale servirai documenti. Di default
|
||
tutte le richieste sono girate a questa
|
||
directory, ma link simbolici ed alias
|
||
possono essere usati per puntare ad altre
|
||
locazioni.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<para>È sempre una buona idea fare copie di
|
||
backup del tuo file di configurazione di
|
||
<application>Apache</application> prima di
|
||
modificarlo. Una volta che sei soddisfatto dalla
|
||
tua configurazione iniziale sei pronto per
|
||
iniziare ad eseguire <application>Apache</application>.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Eseguire <application>Apache</application></title>
|
||
|
||
<indexterm>
|
||
<primary>Apache</primary>
|
||
<secondary>avviarlo o fermarlo</secondary>
|
||
</indexterm>
|
||
|
||
<para><application>Apache</application> non viene eseguito
|
||
dal super server <application>inetd</application>
|
||
a differenza di molti altri server di
|
||
rete. È configurato
|
||
per girare standalone per migliori performance
|
||
per gestire le richieste HTTP in entrata dai client
|
||
web browser. Un wrapper shell script è
|
||
incluso per rendere il più semplice
|
||
possibile lo start, lo stop ed il restart del
|
||
server. Per avviare <application>Apache</application>
|
||
per la prima volta, esegui:</para>
|
||
|
||
<screen>&prompt.root; <userinput>/usr/local/sbin/apachectl start</userinput></screen>
|
||
|
||
<para>Puoi fermare il server in ogni istante
|
||
digitando:</para>
|
||
|
||
<screen>&prompt.root; <userinput>/usr/local/sbin/apachectl stop</userinput></screen>
|
||
|
||
<para>Dopo aver fatto modifiche al file
|
||
di configurazione per una qualsiasi ragione,
|
||
avrai bisogno di riavviare
|
||
il server:</para>
|
||
|
||
<screen>&prompt.root; <userinput>/usr/local/sbin/apachectl restart</userinput></screen>
|
||
|
||
<para>Per riavviare <application>Apache</application>
|
||
senza mandare in abort le connessioni correnti,
|
||
esegui.</para>
|
||
|
||
<screen>&prompt.root; <userinput>/usr/local/sbin/apachectl graceful</userinput></screen>
|
||
|
||
<para>Informazioni addizionali sono
|
||
disponibili sulla pagina di manuale
|
||
di &man.apachectl.8;.</para>
|
||
|
||
<para>Per eseguire <application>Apache</application>
|
||
all'avvio del sistema, aggiungi la seguente
|
||
linea ad <filename>/etc/rc.conf</filename>:</para>
|
||
|
||
<programlisting>apache_enable="YES"</programlisting>
|
||
|
||
<para>o per <application>Apache</application> 2.2:</para>
|
||
|
||
<programlisting>apache22_enable="YES"</programlisting>
|
||
|
||
<para>Se volessi fornire opzioni addizionali
|
||
di linea di comando al programma
|
||
<application>Apache</application>
|
||
<command>httpd</command>
|
||
avviato al boot di sistema, puoi specificarle
|
||
con una linea addizionale in
|
||
<filename>rc.conf</filename>:</para>
|
||
|
||
<programlisting>apache_flags=""</programlisting>
|
||
|
||
<para>Ora che il web server è in esecuzione
|
||
puoi navigare il tuo sito web puntando
|
||
il tuo web browser ad
|
||
<literal>http://localhost/</literal>.
|
||
La pagina di default che viene mostrata
|
||
è
|
||
<filename>/usr/local/www/data/index.html</filename>.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Virtual Hosting</title>
|
||
|
||
<para><application>Apache</application> supporta due
|
||
tipi diversi di Virtual Hosting. Il primo metodo
|
||
è Virtual Hosting basato sul nome. Il
|
||
Virtual Hosting basato sul nome usa gli header
|
||
HTTP/1.1 per scoprire l'hostname. Questo permette
|
||
a molti domini diversi di condividere lo stesso
|
||
indirizzo IP.</para>
|
||
|
||
<para>Per fare sì che
|
||
<application>Apache</application>
|
||
usi Virtual Hosting basato sui nomi aggiungi una
|
||
entry come la seguente al tuo file
|
||
<filename>httpd.conf</filename>:</para>
|
||
|
||
<programlisting>NameVirtualHost *</programlisting>
|
||
|
||
<para>Se il tuo webserver era nominato
|
||
<hostid role="fqdn">www.domain.tld</hostid> e
|
||
tu avessi voluto installare un dominio virtuale
|
||
per <hostid role="fqdn">www.someotherdomain.tld
|
||
</hostid> avresti dovuto aggiungere le seguenti entry
|
||
a <filename>httpd.conf</filename>:</para>
|
||
|
||
<screen><VirtualHost *>
|
||
ServerName www.domain.tld
|
||
DocumentRoot /www/domain.tld
|
||
</VirtualHost>
|
||
|
||
<VirtualHost *>
|
||
ServerName www.someotherdomain.tld
|
||
DocumentRoot /www/someotherdomain.tld
|
||
</VirtualHost></screen>
|
||
|
||
<para>Sostituisci gli indirizzi con gli indirizzi
|
||
che vuoi usare ed i percorsi dei documenti con quelli
|
||
che usi.</para>
|
||
|
||
<para>Per maggiori informazioni sull'impostazione
|
||
dei virtual host, per favore consulta la
|
||
documentazione ufficiale a
|
||
<ulink url="http://httpd.apache.org/docs/vhosts/">
|
||
</ulink>.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Moduli Apache</title>
|
||
|
||
<indexterm>
|
||
<primary>Apache</primary>
|
||
<secondary>moduli</secondary>
|
||
</indexterm>
|
||
|
||
<para>Ci sono molti diversi moduli
|
||
<application>Apache</application> disponibili
|
||
per aggiungere funzionalità al server base.
|
||
La Collezione Port di FreeBSD fornisce un modo
|
||
semplice di installare <application>Apache</application>
|
||
assieme ad alcuni dei più popolari moduli
|
||
aggiuntivi.</para>
|
||
|
||
<sect3>
|
||
<title>mod_ssl</title>
|
||
|
||
<indexterm>
|
||
<primary>server web</primary>
|
||
<secondary>sicuri</secondary>
|
||
</indexterm>
|
||
<indexterm><primary>SSL</primary></indexterm>
|
||
<indexterm><primary>crittografia</primary></indexterm>
|
||
|
||
<para>Il modulo <application>mod_ssl</application>
|
||
usa la libreria OpenSSL per fornire una forte
|
||
crittografia attraverso i protocolli Secure
|
||
Sockets Layer (SSL v2/v3) e Transport Layer
|
||
Security (TLS v1). Questo modulo fornisce tutto
|
||
il necessario per richiedere
|
||
un certificato firmato da un'autorità fidata
|
||
che emette certificati, cosicchè puoi eseguire
|
||
un web server sicuro su &os;.</para>
|
||
|
||
<para>Se non hai ancora installato
|
||
<application>Apache</application>, una versione
|
||
di <application>Apache</application> 1.3.X
|
||
che includa <application>mod_ssl</application>
|
||
può essere installata con il port
|
||
<filename role="package">www/apache13-modssl</filename>.
|
||
Il supporto ad SSL è anche disponibile per
|
||
<application>Apache</application> 2.X nel port
|
||
<filename role="package">www/apache22</filename>,
|
||
dove viene abilitato di default.</para>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Siti web dinamici con Perl & PHP</title>
|
||
<para>Negli ultimi anni, molte aziende si sono rivolte a Internet
|
||
per migliorare i loro ricavi e aumentare la loro esposizione.
|
||
Questo ha anche aumentato il bisogno di contenuti interattivi
|
||
web. Mentre alcune società come µsoft; hanno introdotto
|
||
soluzioni nei loro prodotti proprietari, la comunità
|
||
open source ha risposto all'appello. Due opzioni per contenuti
|
||
web dinamici includono <application>mod_perl</application>
|
||
& <application>mod_php</application>.</para>
|
||
|
||
<sect4>
|
||
<title>mod_perl</title>
|
||
|
||
<indexterm><primary>Perl</primary></indexterm>
|
||
|
||
<para>Il progetto di integrazione
|
||
<application>Apache</application>/Perl
|
||
mette assieme la grande potenza del linguaggio
|
||
di programmazione Perl e
|
||
l'<application>Apache HTTP Server</application>.
|
||
Con il modulo <application>mod_perl</application>
|
||
è possibile scrivere moduli <application>Apache
|
||
</application> interamente in Perl. In aggiunta
|
||
l'interprete persistente integrato nel server
|
||
evita l'overhead di avviare un interprete esterno
|
||
e la penalizzazione del tempo di
|
||
caricamento Perl.</para>
|
||
|
||
<para><application>mod_perl</application> è disponibile
|
||
in alcuni modi diversi. Per usare <application>mod_perl
|
||
</application> ricorda che <application>mod_perl</application>
|
||
1.0 funziona solo con <application>Apache</application> 1.3
|
||
e <application>mod_perl</application> 2.0 funziona solo
|
||
con <application>Apache</application> 2.X.
|
||
<application>mod_perl</application> 1.0 è disponibile
|
||
in <filename role="package">www/mod_perl</filename> ed una versione
|
||
compilata staticamente è disponibile in
|
||
<filename role="package">www/apache13-modperl</filename>.
|
||
<application>mod_perl</application> 2.0 è disponibile in
|
||
<filename role="package">www/mod_perl2</filename>.</para>
|
||
</sect4>
|
||
|
||
|
||
<sect4>
|
||
<sect4info>
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Tom</firstname>
|
||
|
||
<surname>Rhodes</surname>
|
||
|
||
<contrib>Scritto da </contrib>
|
||
</author>
|
||
</authorgroup>
|
||
</sect4info>
|
||
|
||
<title>mod_php</title>
|
||
|
||
<indexterm>
|
||
<primary>mod_php</primary>
|
||
<secondary>PHP</secondary>
|
||
</indexterm>
|
||
|
||
<para>PHP, anche noto come <quote>Hypertext Prepocessor</quote>
|
||
è un linguaggio di scripting di scopo generale che è
|
||
particolarmente adatto per lo sviluppo Web. Adatto ad essere
|
||
usato all'interno dell'<acronym>HTML</acronym>, la sua sintassi
|
||
deriva dal C, &java;, e Perl con l'intenzione di permettere agli
|
||
sviluppatori web di scrivere pagine web generate dinamicamente
|
||
in modo veloce.</para>
|
||
|
||
<para>Per integrare supporto a <acronym>PHP</acronym>5 per
|
||
il web server <application>Apache</application>, inizia
|
||
con l'installare il port
|
||
<filename role="package">lang/php5</filename>.
|
||
</para>
|
||
|
||
<para>Se il port <filename role="package">lang/php5</filename>
|
||
viene installato per la prima volta, le <literal>OPTIONS</literal>
|
||
disponibili saranno mostrate automaticamente.
|
||
Se non viene mostrato un menu, ad esempio perché
|
||
il port <filename role="package">lang/php5</filename>
|
||
è stato installato qualche volta in passato,
|
||
è sempre possibile rivedere il menu a dialogo
|
||
con le opzioni eseguendo:</para>
|
||
|
||
<screen>&prompt.root; <userinput>make config</userinput></screen>
|
||
|
||
<para>nella directory dei port.</para>
|
||
|
||
<para>Nel menu a dialogo delle opzioni,
|
||
flagga l'opzione <literal>APACHE</literal>
|
||
per compilare <application>mod_php5</application>
|
||
come modulo caricabile per il web server
|
||
<application>Apache</application>.</para>
|
||
|
||
<note>
|
||
<para>Molti siti stanno ancora usando
|
||
<acronym>PHP</acronym>4 per varie ragioni (ad esempio
|
||
questioni di compatibilità o applicativi web già
|
||
costruiti). Se si necessita del modulo <application>mod_php4</application>
|
||
invece che di <application>mod_php5</application>, siete pregati
|
||
di usare il port <filename role="package">lang/php4</filename>.
|
||
Il port <filename role="package">lang/php4</filename> supporta
|
||
molte delle configurazioni e delle opzioni di build-time
|
||
del port <filename role="package">lang/php5</filename>.</para>
|
||
</note>
|
||
|
||
<para>Questo installerà e
|
||
configurerà i moduli richiesti
|
||
per supportare applicazioni web dinamiche <acronym>PHP</acronym>.
|
||
Controlla che le seguenti linee siano state aggiunte al file
|
||
<filename>/usr/local/etc/apache/httpd.conf</filename>:</para>
|
||
|
||
<programlisting>LoadModule php5_module libexec/apache/libphp5.so
|
||
AddModule mod_php5.c
|
||
<IfModule mod_php5.c>
|
||
DirectoryIndex index.php index.html
|
||
</IfModule>
|
||
|
||
<IfModule mod_php5.c>
|
||
AddType application/x-httpd-php .php
|
||
AddType application/x-httpd-php-source .phps
|
||
</IfModule></programlisting>
|
||
|
||
<para>Una volta completato, una semplice chiamata
|
||
al comando <command>apachectl</command> per un tranquillo
|
||
restart è richiesto per caricare il modulo
|
||
<acronym>PHP</acronym>:</para>
|
||
|
||
<screen>&prompt.root; <userinput>apachectl graceful</userinput></screen>
|
||
|
||
<para>Per upgrade futuri di <acronym>PHP</acronym>, il comando
|
||
<command>make config</command> non sarà richiesto;
|
||
le <literal>OPTIONS</literal> selezionate sono salvate automaticamente
|
||
dal sistema dei Ports di &os;.</para>
|
||
|
||
<para>Il supporto a <acronym>PHP</acronym> in &os; è
|
||
estremamente modulare così l'installazione
|
||
base è molto limitata. È molto facile
|
||
aggiungere supporto usando il port
|
||
<filename role="package">lang/php5-extensions</filename>.
|
||
Questo port fornisce un interfaccia a menu per l'installazione
|
||
di estensioni a <acronym>PHP</acronym>. Alternativamente
|
||
le singole estensioni possono essere installate usando
|
||
il port appropriato.</para>
|
||
|
||
<para>Ad esempio, per aggiungere supporto al database
|
||
<application>MySQL</application> a <acronym>PHP</acronym>5,
|
||
semplicemente installa
|
||
<filename role="package">databases/php5-mysql</filename>.</para>
|
||
|
||
<para>Dopo aver installato un'estensione, il server
|
||
<application>Apache</application> deve essere riavviato per
|
||
caricare i cambiamenti della nuova configurazione:</para>
|
||
|
||
<screen>&prompt.root; <userinput>apachectl graceful</userinput></screen>
|
||
|
||
</sect4>
|
||
</sect3>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="network-ftp">
|
||
<sect1info>
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Murray</firstname>
|
||
|
||
<surname>Stokely</surname>
|
||
|
||
<contrib>Grazie al Contributo di </contrib>
|
||
</author>
|
||
</authorgroup>
|
||
</sect1info>
|
||
|
||
<title>File Transfer Protocol (FTP)</title>
|
||
|
||
<indexterm><primary>Server FTP</primary></indexterm>
|
||
|
||
<sect2>
|
||
<title>Uno sguardo d'insieme</title>
|
||
|
||
<para>Il File Transfer Protocol (FTP) fornisce
|
||
agli utenti un semplice modo di trasferire
|
||
file da e verso un server
|
||
<acronym role="File Transfer Protocol">FTP</acronym>.
|
||
&os; include software per server
|
||
<acronym role="File Transfer Protocol">FTP</acronym>
|
||
nel sistema base. Questo rende l'installazione
|
||
e l'ammininistrazione di un server
|
||
<acronym role="File Transfer Protocol">FTP</acronym>
|
||
molto semplice.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Configurazione</title>
|
||
|
||
<para>Il più importante passo di
|
||
configurazione è decidere a quali
|
||
account saraà permesso
|
||
accedere al server FTP. Un sistema normale
|
||
FreeBSD ha un certo numero di account di sistema
|
||
usati per vari demoni, ma agli utenti estranei
|
||
non dovrebbe essere permesso di loggarsi con questi
|
||
account. Il file
|
||
<filename>/etc/ftpusers</filename> è una lista
|
||
di utenti a cui è negato l'accesso FTP.
|
||
Di default include gli account di sistema sopra citati
|
||
ma è possibile aggiungere utenti specifici
|
||
che non dovrebbero avere accesso FTP.</para>
|
||
|
||
<para>Può essere che tu voglia restringere
|
||
l'accesso ad alcuni utenti senza impedir loro
|
||
di usare completamente FTP. Ciò
|
||
può essere ottenuto
|
||
con il file <filename>/etc/ftpchroot</filename>.
|
||
Questo file elenca utenti e gruppi soggetti a
|
||
restrizioni di accesso FTP. La pagina di manuale
|
||
&man.ftpchroot.5; ha tutti i dettagli così
|
||
non sarà descritta qui.</para>
|
||
|
||
<indexterm>
|
||
<primary>FTP</primary>
|
||
<secondary>anonimo</secondary>
|
||
</indexterm>
|
||
|
||
<para>Se tu volessi abilitare accesso anonimo
|
||
FTP al tuo server, devi creare un utente chiamato
|
||
<username>ftp</username> sul tuo sistema &os;.
|
||
Gli utenti allora potranno loggarsi al tuo server FTP
|
||
con uno username di <username>ftp</username>
|
||
o <username>anonymous</username> e con
|
||
una password qualsiasi
|
||
(di norma dovrebbe essere usato un indirizzo email
|
||
dell'utente come password). Il server FTP
|
||
chiamerà &man.chroot.2; quando un utente
|
||
anonimo si logga, per restringere l'accesso solo
|
||
alla home directory di <username>ftp</username>.</para>
|
||
|
||
<para>Ci sono due file di testo che specificano
|
||
messaggi di benvenuto per i client FTP. Il contenuto
|
||
del file <filename>/etc/ftpwelcome</filename> sarà
|
||
mostrato agli utenti prima che raggiungano il prompt
|
||
del login. Dopo un login di successo, il contenuto
|
||
del file <filename>/etc/ftpmotd</filename> sarà
|
||
mostrato. Nota che il percorso di questo file è
|
||
relativo all'ambiente di login, così
|
||
saraà mostrato il file
|
||
<filename>~ftp/etc/ftpmotd</filename>.</para>
|
||
|
||
<para>Una volta che il server FTP è
|
||
stato configurato
|
||
correttamente, deve essere abilitato in
|
||
<filename>/etc/inetd.conf</filename>. Tutto ciò
|
||
che viene richiesto è rimuovere il simbolo
|
||
di commento <quote>#</quote> dall'inizio della linea
|
||
relativa a <application>ftpd</application>:</para>
|
||
|
||
<programlisting>ftp stream tcp nowait root /usr/libexec/ftpd ftpd -l</programlisting>
|
||
|
||
<para>Come spiegato in <xref linkend="network-inetd-reread"/>,
|
||
la configurazione di <application>inetd</application>
|
||
deve essere ricaricata dopo che
|
||
che questo file di configurazione è stato cambiato.</para>
|
||
|
||
<para>Ora puoi loggarti al tuo server FTP digitando:</para>
|
||
|
||
<screen>&prompt.user; <userinput>ftp localhost</userinput></screen>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Manutenzione</title>
|
||
|
||
<indexterm><primary>syslog</primary></indexterm>
|
||
<indexterm>
|
||
<primary>file di log</primary>
|
||
<secondary>FTP</secondary>
|
||
</indexterm>
|
||
|
||
<para>Il demone <application>ftpd</application> usa
|
||
&man.syslog.3; per loggare i mesaggi. Di default
|
||
il demone dei log di sistema girerà
|
||
i messaggi relativi a FTP nel file
|
||
<filename>/var/log/xferlog</filename>. La posizione
|
||
del log FTP può essere modificata cambiando
|
||
la seguente linea in
|
||
<filename>/etc/syslog.conf</filename>:</para>
|
||
|
||
<programlisting>ftp.info /var/log/xferlog</programlisting>
|
||
|
||
<indexterm>
|
||
<primary>FTP</primary>
|
||
<secondary>anonimo</secondary>
|
||
</indexterm>
|
||
|
||
<para>Presta attenzione ai problemi potenziali
|
||
correlati all'esecuzione di un server FTP anonimo.
|
||
In particolare, dovresti pensarci due volte prima di
|
||
permettere agli utenti anonimi di fare upload di file.
|
||
Potresti scoprire che il tuo sito FTP è
|
||
diventato un forum per il commercio di software
|
||
commerciale senza licenza o anche peggio.
|
||
Se hai veramente bisogno di permettere upload FTP
|
||
anonimi, allora dovresti impostare i permessi
|
||
in modo che questi file non possano essere letti
|
||
da altri utenti fino a che non siano
|
||
stati revisionati.</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="network-samba">
|
||
<sect1info>
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Murray</firstname>
|
||
|
||
<surname>Stokely</surname>
|
||
|
||
<contrib>Grazie al contributo di </contrib>
|
||
</author>
|
||
</authorgroup>
|
||
</sect1info>
|
||
|
||
<title>Servizi di File e Stampa per client
|
||
µsoft.windows; (Samba)</title>
|
||
|
||
<indexterm><primary>Server Samba</primary></indexterm>
|
||
<indexterm><primary>Microsoft Windows</primary></indexterm>
|
||
<indexterm>
|
||
<primary>file server</primary>
|
||
<secondary>Windows client</secondary>
|
||
</indexterm>
|
||
<indexterm>
|
||
<primary>print server</primary>
|
||
<secondary>Windows client</secondary>
|
||
</indexterm>
|
||
|
||
<sect2>
|
||
<title>Uno sguardo d'insieme</title>
|
||
|
||
<para><application>Samba</application> è un
|
||
popolare pacchetto software open source che
|
||
fornisce servizi di file e stampa per client
|
||
µsoft.windows;. Tali client possono connettersi
|
||
ed usare un file system FreeBSD
|
||
come se fosse un disco locale, o stampanti
|
||
FreeBSD come se fossero stampanti locali.</para>
|
||
|
||
<para>Il pacchetto software
|
||
<application>Samba</application>
|
||
dovrebbe essere incluso nel tuo media di
|
||
installazione FreeBSD. Se non hai
|
||
installato <application>Samba</application>
|
||
quando hai installato per la prima volta FreeBSD,
|
||
puoi sempre installarlo dal port o pacchetto
|
||
<filename role="package">net/samba3</filename>.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Configurazione</title>
|
||
|
||
<para>Un file di configurazione di
|
||
<application>Samba</application> di default è
|
||
installato in
|
||
<filename>/usr/local/share/examples/smb.conf.default</filename>.
|
||
Questo file deve essere copiato in
|
||
<filename>/usr/local/etc/smb.conf</filename>
|
||
e personalizzato prima che
|
||
<application>Samba</application> possa essere usato.</para>
|
||
|
||
<para>Il file <filename>smb.conf</filename> contiene
|
||
informazione di configurazione runtime per
|
||
<application>Samba</application>, come le definizioni
|
||
delle stampanti e <quote>share di file system</quote>
|
||
che vorresti condividere con &windows; client.
|
||
Il pacchetto <application>Samba</application> include
|
||
un tool basato sul web chiamato
|
||
<application>swat</application> che fornisce
|
||
un modo semplice di configurare il file
|
||
<filename>smb.conf</filename>.</para>
|
||
|
||
<sect3>
|
||
<title>Usare il Samba Web Administration Tool (SWAT)</title>
|
||
|
||
<para>Il Samba Web Administration Tool (SWAT) viene
|
||
eseguito come demone da
|
||
<application>inetd</application>.
|
||
Quindi, dovresti togliere i commenti
|
||
alla seguente linea in
|
||
<filename>/etc/inetd.conf</filename>
|
||
prima che <application>swat</application> possa essere
|
||
usato per configurare
|
||
<application>Samba</application>:</para>
|
||
|
||
<programlisting>swat stream tcp nowait/400 root /usr/local/sbin/swat swat</programlisting>
|
||
|
||
<para>Come spiegato in
|
||
<xref linkend="network-inetd-reread"/>,
|
||
la configurazione di <application>inetd</application>
|
||
deve essere ricaricata dopo che
|
||
questo file di configurazione è
|
||
stato cambiato.</para>
|
||
|
||
<para>Una volta che <application>swat</application>
|
||
è stato abilitato in
|
||
<filename>inetd.conf</filename>,
|
||
puoi usare un browser per connetterti a
|
||
<ulink url="http://localhost:901"></ulink>.
|
||
Dovrai prima loggarti con l'account di sistema
|
||
<username>root</username>.</para>
|
||
|
||
<!-- XXX screenshots go here, loader is creating them -->
|
||
|
||
<para>Una volta che ti sei loggato con successo
|
||
alla pagina principale di configurazione di
|
||
<application>Samba</application>, puoi navigare
|
||
la documentazione di sistema, o iniziare
|
||
cliccando sul tab
|
||
<guimenu>Globals</guimenu>. La sezione
|
||
<guimenu>Globals</guimenu> corrisponde alle variabili
|
||
che sono impostate nella sezione
|
||
<literal>[global]</literal> di
|
||
<filename>/usr/local/etc/smb.conf</filename>.</para>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Impostazioni Globali</title>
|
||
|
||
<para>Sia che tu stia usando
|
||
<application>swat</application>
|
||
o che tu stia editando direttamente
|
||
<filename>/usr/local/etc/smb.conf</filename>,
|
||
le prime direttive che tu puoi incontrare quando
|
||
configuri <application>Samba</application> sono:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><literal>workgroup</literal></term>
|
||
|
||
<listitem>
|
||
<para>Nome dominio NT o nome Workgroup
|
||
per i computer che accedono a questo server.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>netbios name</literal></term>
|
||
|
||
<listitem>
|
||
<indexterm><primary>NetBIOS</primary></indexterm>
|
||
|
||
<para>Questo imposta il nome NetBIOS attraverso
|
||
il quale un <application>Samba</application>
|
||
è conosciuto. Di default è
|
||
lo stesso della prima parte del nome host
|
||
DNS.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>server string</literal></term>
|
||
|
||
<listitem>
|
||
<para>Questo imposta la stringa che sarà
|
||
mostrata con il comando <command>net view</command>
|
||
e con alcuni altri strumenti di rete che cercano
|
||
di mostrare testo descrittivo sul
|
||
server.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Impostazioni di Sicurezza</title>
|
||
|
||
<para>Due delle più importanti impostazioni
|
||
in <filename>/usr/local/etc/smb.conf</filename>
|
||
sono i modelli di sicurezza usati, ed il formato
|
||
delle password di backend per utenti client.
|
||
Le seguenti direttive controllano queste
|
||
opzioni:</para>
|
||
|
||
<variablelist>
|
||
<varlistentry>
|
||
<term><literal>security</literal></term>
|
||
|
||
<listitem>
|
||
<para>Le due più comuni opzioni in
|
||
questo caso sono
|
||
<literal>security = share</literal>
|
||
e <literal>security = user</literal>.
|
||
Se i tuoi client usano nomi utente che sono
|
||
gli stessi dei nomi utenti sulla tua macchina
|
||
&os;, allora vorrai sicurezza di tipo
|
||
user. Questa è la policy di sicurezza
|
||
di default e richiede ai client prima di
|
||
loggarsi prima che possano accedere a risorse
|
||
condivise.</para>
|
||
|
||
<para>Nel modello di sicurezza di tipo share,
|
||
i client non hanno bisogno di loggarsi al server
|
||
con una valida coppia username e password
|
||
prima che provino a connettersi a risorse
|
||
condivise. Questo è il modello di sicurezza
|
||
di default per versioni precedenti di
|
||
<application>Samba</application>.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
|
||
<varlistentry>
|
||
<term><literal>passdb backend</literal></term>
|
||
|
||
<listitem>
|
||
<indexterm><primary>NIS+</primary></indexterm>
|
||
<indexterm><primary>LDAP</primary></indexterm>
|
||
<indexterm><primary>SQL database</primary></indexterm>
|
||
|
||
<para><application>Samba</application> ha molti
|
||
modelli diversi di backend di autenticazione.
|
||
Puoi autenticare i client con LDAP, NIS+, un
|
||
database SQL, o un file di password modificato.
|
||
Il metodo di autenticazione di default
|
||
è <literal>smbpasswd</literal>, e questo
|
||
sarà l'unico coperto qui.</para>
|
||
</listitem>
|
||
</varlistentry>
|
||
</variablelist>
|
||
|
||
<para>Assumendo che il backend usato sia
|
||
quello di default, <literal>smbpasswd</literal>,
|
||
il file <filename>/usr/local/private/smbpasswd</filename>
|
||
deve essere creato per permettere a
|
||
<application>Samba</application> di autenticare i
|
||
client. Se tu volessi dare ai tuoi account
|
||
&unix; accesso da client &windows;, usa il seguente
|
||
comando:</para>
|
||
|
||
<screen>&prompt.root; <userinput>smbpasswd -a username</userinput></screen>
|
||
|
||
<para>Per favore consulta l' <ulink
|
||
url="http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/">Official Samba HOWTO</ulink>
|
||
<ulink
|
||
url="http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/">HOWTO
|
||
Ufficiale di Samba</ulink>
|
||
per informazioni addizionali sulle opzioni
|
||
di configurazione.
|
||
Con le basi delineate qui, dovresti avere tutto
|
||
ciò di cui hai bisogno per avviare
|
||
<application>Samba</application>.</para>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Avviare <application>Samba</application></title>
|
||
|
||
<para>Il port <filename role="package">net/samba3</filename>
|
||
aggiunge un nuovo script di avvio, che può essere
|
||
usato per controllare
|
||
<application>Samba</application>. Per abilitare questo script,
|
||
in modo tale da essere usato per esempio per avviare
|
||
fermare o far ripartire
|
||
<application>Samba</application>, aggiungi la riga seguente
|
||
al file <filename>/etc/rc.conf</filename>:</para>
|
||
|
||
<programlisting>samba_enable="YES"</programlisting>
|
||
|
||
<para>Oppure, per un controllo più accurato:</para>
|
||
|
||
<programlisting>nmbd_enable="YES"</programlisting>
|
||
|
||
<programlisting>smbd_enable="YES"</programlisting>
|
||
|
||
<note>
|
||
<para>In questo modo <application>Samba</application>
|
||
viene avviato automaticamente ad ogni avvio
|
||
del sistema.</para>
|
||
</note>
|
||
|
||
<para>Per avviare
|
||
<application>Samba</application> digita:</para>
|
||
|
||
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba start</userinput>
|
||
Starting SAMBA: removing stale tdbs :
|
||
Starting nmbd.
|
||
Starting smbd.</screen>
|
||
|
||
<para>Fai riferimento alla <xref linkend="configtuning-rcd"/> per
|
||
ulteriori informazioni sull'uso degli script rc.</para>
|
||
|
||
<para><application>Samba</application> attualmente
|
||
consiste di tre demoni separati. Dovresti
|
||
osservare che entrambi <application>nmbd</application>
|
||
e <application>smbd</application> siano avviati
|
||
dallo script <filename>samba</filename>. Se
|
||
hai abilitato servizi di risoluzione di nomi
|
||
winbind in <filename>smb.conf</filename>, allora
|
||
osserverai che anche il demone
|
||
<application>winbindd</application> è avviato.</para>
|
||
|
||
<para>Puoi anche fermare <application>Samba</application>
|
||
in ogni istante digitando:</para>
|
||
|
||
<screen>&prompt.root; <userinput>/usr/local/etc/rc.d/samba stop</userinput></screen>
|
||
|
||
<para><application>Samba</application> è una suite
|
||
complessa di software con funzionalità che permette
|
||
una larga integrazione con reti µsoft.windows;.
|
||
Per maggiori informazioni sulle funzionalità
|
||
al di là dell'installazione di base descritta qui
|
||
per favore consulta <ulink url="http://www.samba.org">
|
||
</ulink>.</para>
|
||
</sect2>
|
||
</sect1>
|
||
|
||
<sect1 id="network-ntp">
|
||
<sect1info>
|
||
<authorgroup>
|
||
<author>
|
||
<firstname>Tom</firstname>
|
||
|
||
<surname>Hukins</surname>
|
||
|
||
<contrib>Grazie al contributo di </contrib>
|
||
</author>
|
||
</authorgroup>
|
||
</sect1info>
|
||
|
||
<title>Sincronizzazione del Clock con NTP</title>
|
||
|
||
<indexterm><primary>NTP</primary></indexterm>
|
||
|
||
<sect2>
|
||
<title>Uno sguardo d'insieme</title>
|
||
|
||
<para>Al passare del tempo, il clock di un computer tende
|
||
a perdere la sincronizzazione. Il Network Time Protocol
|
||
(NTP) fornisce un modo per assicurarti che il tuo
|
||
clock sia accurato.</para>
|
||
|
||
<para>Molti servizi Internet si basano sul fatto che
|
||
il clock del computer sia accurato, o comunque
|
||
traggono notevole beneficio
|
||
da questo fatto. Per esempio, un web server
|
||
può ricevere richieste di inviare un file se
|
||
questo è stato modificato da una certa
|
||
data. In un ambiente locale di rete, è
|
||
essenziale che i computer che condividono
|
||
i file dallo stesso file server abbiano clock
|
||
sincronizzati cosicchè i timestamp dei file
|
||
siano consistenti. Anche servizi come &man.cron.8;
|
||
si basano su un clock di sistema accurato per eseguire
|
||
comandi al momento specificato.</para>
|
||
|
||
<indexterm>
|
||
<primary>NTP</primary>
|
||
<secondary>ntpd</secondary>
|
||
</indexterm>
|
||
|
||
<para>FreeBSD è dotato del server &man.ntpd.8;
|
||
<acronym role="Network Time Protocol">NTP</acronym>
|
||
che può essere usato per interrogare altri
|
||
server <acronym role="Network Time Protocol">NTP</acronym>
|
||
per impostare il clock sulla tua macchina o fornire
|
||
servizi di time ad altri.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Scegliere Server NTP Appropriati</title>
|
||
|
||
<indexterm>
|
||
<primary>NTP</primary>
|
||
<secondary>scegliere i server</secondary>
|
||
</indexterm>
|
||
|
||
<para>Per sincronizzare il tuo
|
||
clock, avrai bisogno di scegliere uno o più
|
||
server <acronym role="Network Time Protocol">NTP</acronym>
|
||
da usare. Il tuo amministratore di rete o ISP
|
||
potrebbe aver impostato un server NTP, a questo scopo
|
||
— controlla la loro documentazione per vedere se
|
||
questo è il caso. C'è una
|
||
<ulink url="http://ntp.isc.org/bin/view/Servers/WebHome">
|
||
lista online di server NTP pubblicamente accessibili
|
||
</ulink> che tu puoi usare per trovare un server NTP
|
||
vicino a te. Accertati di essere al corrente della
|
||
politica di ogni server che scegli, e chiedi il
|
||
permesso se necessario.</para>
|
||
|
||
<para>Scegliere molti server NTP non connessi
|
||
fra loro è una buona idea in caso uno
|
||
dei server che stai usando diventa irraggiungibile
|
||
o il suo clock è inaffidabile.
|
||
&man.ntpd.8; usa le risposte che riceve
|
||
da altri server in modo intelligente;
|
||
favorirà server inaffidabili meno di quelli
|
||
affidabili.</para>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Configurare la tua Macchina</title>
|
||
|
||
<indexterm>
|
||
<primary>NTP</primary>
|
||
<secondary>configurazione</secondary>
|
||
</indexterm>
|
||
|
||
<sect3>
|
||
<title>Configurazione Base</title>
|
||
|
||
<indexterm><primary>ntpdate</primary></indexterm>
|
||
|
||
<para>Se desideri solo sincronizzare il tuo clock
|
||
al momento del boot della macchina, puoi usare
|
||
&man.ntpdate.8;. Questo può essere
|
||
appropriato per alcune macchine desktop che sono
|
||
rebootate di frequente e richiedono
|
||
sincronizzazione non frequente, ma le altre macchine
|
||
dovrebbero eseguire &man.ntpd.8;.</para>
|
||
|
||
<para>Usare &man.ntpdate.8; al momento del boot
|
||
è una buona idea per le macchine che eseguono
|
||
&man.ntpdate.8;. Il programma &man.ntpd.8; cambia il
|
||
clock gradualmente, mentre &man.ntpdate.8; imposta
|
||
il clock, indipentemente da quanto grande sia la
|
||
differenza fra l'impostazione di clock corrente di una
|
||
macchina e l'ora corretta.</para>
|
||
|
||
<para>Per abilitare &man.ntpdate.8; al momento del boot,
|
||
aggiungi <literal>ntpdate_enable="YES"</literal>
|
||
a <filename>/etc/rc.conf</filename>. Avrai anche
|
||
bisogno di specificare tutti i server
|
||
con i quali ti desideri
|
||
sincronizzare ed ogni flags passato a &man.ntpdate.8;
|
||
in <varname>ntpdate_flags</varname>.</para>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Configurazione Generale</title>
|
||
|
||
<indexterm>
|
||
<primary>NTP</primary>
|
||
<secondary>ntp.conf</secondary>
|
||
</indexterm>
|
||
|
||
<para>NTP è configurato dal file
|
||
<filename>/etc/ntp.conf</filename> nel formato
|
||
descritto da &man.ntp.conf.5;. Questo è
|
||
un semplice esempio:</para>
|
||
|
||
<programlisting>server ntplocal.example.com prefer
|
||
server timeserver.example.org
|
||
server ntp2a.example.net
|
||
|
||
driftfile /var/db/ntp.drift</programlisting>
|
||
|
||
<para>L'opzione <literal>server</literal> specifica
|
||
quali server siano da usare, con un server elencato
|
||
su ogni linea. Se un server è specificato con
|
||
l'argomento <literal>prefer</literal>, come con
|
||
<hostid role="fqdn">ntplocal.example.com</hostid>,
|
||
quel server saraà preferito rispetto ad
|
||
altri. Una risposta da un server preferito
|
||
sarà scartata se differisce
|
||
in modo significativo dalle risposte di altri server,
|
||
altrimenti sarà usata senza nessuna
|
||
considerazione delle altre risposte. L'argomento
|
||
<literal>prefer</literal> è normalmente usato
|
||
per server NTP che sono noti per
|
||
essere molto accurati, come quelli con hardware a
|
||
monitoraggio speciale del tempo.</para>
|
||
|
||
<para>L'opzione <literal>driftfile</literal> specifica
|
||
quale file sia usato per conservare la frequenza di
|
||
scostamento dal clock di sistema. Il programma
|
||
&man.ntpd.8; usa questo dato per compensare
|
||
automaticamente le imprecisioni naturali del clock,
|
||
permettendo di mantenere una impostazione ragionevolmente
|
||
corretta anche se gli è impedito di accedere
|
||
a tutte le sorgenti di sincronizzazione tempo esterne
|
||
per un certo periodo di tempo.</para>
|
||
|
||
<para>L'opzione <literal>driftfile</literal> specifica
|
||
quale file sia usato per conservare informazioni sulle
|
||
risposte precedenti dai server NTP che usi. Questo file
|
||
contiene informazioni interne per NTP. Non dovrebbe
|
||
essere modificato da altri processi.</para>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>Controllare l'Accesso ad i tuoi Server</title>
|
||
|
||
<para>Di default, il tuo server NTP sarà accessibile
|
||
a tutti gli host su Internet. L'opzione
|
||
<literal>restrict</literal> in
|
||
<filename>/etc/ntp.conf</filename> ti permette
|
||
di controllare quali macchine possano accedere al tuo
|
||
server.</para>
|
||
|
||
<para>Se vuoi negare a tutte le macchine accesso
|
||
al tuo server NTP, aggiungi la seguente linea a
|
||
<filename>/etc/ntp.conf</filename>:</para>
|
||
|
||
<programlisting>restrict default ignore</programlisting>
|
||
|
||
<note>
|
||
<para>Inoltre questo settaggio vieta l'accesso
|
||
al tuo server dai server elencati nella tua configurazione
|
||
locale. Se hai bisogno di sincronizzare il tuo
|
||
server NTP con un server NTP esterno devi permettere
|
||
il server che vuoi usare. Guada la pagina man
|
||
&man.ntp.conf.5; per ulteriori dettagli.</para>
|
||
</note>
|
||
|
||
<para>Se vuoi permettere solo alle macchine della tua rete
|
||
di sincronizzare il loro clock con il tuo server,
|
||
ma assicurarti che non gli sia permesso configurare
|
||
il server o che non sianousate
|
||
come punto di riferimento per
|
||
sincronizzarsi, aggiungi</para>
|
||
|
||
<programlisting>restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap</programlisting>
|
||
|
||
<para>invece, dove<hostid role="ipaddr">192.168.1.0</hostid>
|
||
è un indirizzo IP sulla tua rete e
|
||
<hostid role="ipaddr">255.255.255.0</hostid>
|
||
è la netmask della tua rete.</para>
|
||
|
||
<para><filename>/etc/ntp.conf</filename> può
|
||
contenere molte opzioni <literal>restrict</literal>.
|
||
Per maggiori dettagli, consulta la sezione
|
||
<literal>Access Control Support</literal> di
|
||
&man.ntp.conf.5;.</para>
|
||
</sect3>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Eseguire il Server NTP</title>
|
||
|
||
<para>Per assicurarsi che il server NTP sia avviato
|
||
al momento del boot, aggiungi la linea
|
||
<literal>ntpd_enable="YES"</literal> a
|
||
<filename>/etc/rc.conf</filename>. Se desideri
|
||
passare flag addizionali a &man.ntpd.8;, edita
|
||
il parametro <varname>ntpd_flags</varname>
|
||
in <filename>/etc/rc.conf</filename>.</para>
|
||
|
||
<para>Per avviare il server senza riavviare la tua
|
||
macchina, esegui <command>ntpd</command> accertandoti
|
||
di specificare ogni parametro addizionale in
|
||
<varname>ntpd_flags</varname> presente in
|
||
<filename>/etc/rc.conf</filename>. Per esempio:</para>
|
||
|
||
<screen>&prompt.root; <userinput>ntpd -p /var/run/ntpd.pid</userinput></screen>
|
||
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Usare ntpd con una Connessione Temporanea
|
||
ad Internet</title>
|
||
|
||
<para>Il programma &man.ntpd.8; non necessita di una
|
||
connessione permanente ad Internet per funzionnare
|
||
correttamente. Comunque, se hai una connessione
|
||
temporanea che è configurata per effettuare
|
||
una chiamata su richiesta, è una buona idea
|
||
evitare che il traffico NTP causi la chiamata
|
||
o mantenga la connessione attiva. Se stai usando
|
||
PPP utente, puoi usare le direttive
|
||
<literal>filter</literal> in
|
||
<filename>/etc/ppp/ppp.conf</filename>.
|
||
Per esempio:</para>
|
||
|
||
<programlisting> set filter dial 0 deny udp src eq 123
|
||
# Prevent NTP traffic from initiating dial out
|
||
set filter dial 1 permit 0 0
|
||
set filter alive 0 deny udp src eq 123
|
||
# Prevent incoming NTP traffic from keeping the connection open
|
||
set filter alive 1 deny udp dst eq 123
|
||
# Prevent outgoing NTP traffic from keeping the connection open
|
||
set filter alive 2 permit 0/0 0/0</programlisting>
|
||
|
||
<para>Pre maggiori dettagli consulta la sezione
|
||
<literal>PACKET FILTERING</literal> in &man.ppp.8;
|
||
e gli esempi in
|
||
<filename>/usr/share/examples/ppp/</filename>.</para>
|
||
|
||
<note>
|
||
<para>Alcuni provider di accesso ad Internet bloccano
|
||
le porte dal numero basso, impedendo ad NTP di
|
||
funzionare dato che le repliche non raggiungono mai
|
||
la tua macchina.</para>
|
||
</note>
|
||
</sect2>
|
||
|
||
<sect2>
|
||
<title>Informazioni Ulteriori</title>
|
||
|
||
<para>La documentazione per il server NTP
|
||
può essere trovata in formato HTML in
|
||
<filename>/usr/share/doc/ntp/</filename>.</para>
|
||
</sect2>
|
||
</sect1>
|
||
</chapter>
|