<!doctype linuxdoc system>

<!-- LinuxDoc file was created by LyX 1.0 (C) 1995-1999 by <pramsey> Thu Jun 22 09:21:23 2000
 -->

<article opts="italian">

<title>
Red Hat Linux 6.X as an Internet Gateway for a Home Network
</title>
<author>
Paul Ramsey &lt;pramsey@refractions.net&gt;
</author>
<date>
22 Giugno 2000
</date>
<abstract>
Un semplice tutorial su come configurare la distribuzione Red Hat 6 e
 relative varianti per operare come gateway per internet per una piccola rete
 domestica o in ufficio. Gli argomenti trattati comprendono masquerading, DNS,
 DHCP e sicurezza di base.
 Traduzione a cura di Alessio Ciregia, &lt;alciregi(at)tin.it&gt;, e revisione
 a cura di Daniele Masini, &lt;d.masini(at)tiscali.it&gt;.
</abstract>
<toc>
<sect>
Introduzione
<p>
Questa pagina contiene un semplice manuale per impostare Red
 Hat 6.X come gateway per Internet per una rete domestica o una piccola
 rete in ufficio. Le istruzioni sono molto semplificate: non sarà discusso
 nessun caso particolare e saranno fatte alcune considerazioni su
 quali indirizzi di rete saranno utilizzati. Le assunzioni principali
 sono: 
</p>
<p>
<itemize>
 <item>
Si ha una connessione Cable o ADSL full time ad Internet.
 <item>
Si ha installato <htmlurl url="http://www.redhat.com" name="Red Hat 6.x"> su
 almeno uno dei propri computer.
 Si noti che queste indicazioni sono valide anche per le distribuzioni derivate
 da Red Hat, come <htmlurl url="http://www.linux-mandrake.com" name="Mandrake
 6.X"> che è distribuita da MacMillan Publishing sotto una vari nomi.
 <item>
Il proprio computer Linux ha due schede di rete installare ed entrambe sono
 compatibili con Linux.  
 <item>
Si ha un hub ethernet per collegare in rete più di un computer o un cavo
 incrociato se si vuole collegare in rete un solo computer.  
 <item>
Si sa come modificare file di testo sulla propria macchina Linux.  
 <item>
Si è in grado di effettuare il login sulla macchina Linux come <tt>root</tt>.
 Si è in grado di installare pacchetti RPM dal proprio CD-ROM Linux.
</itemize>
</p><p>
Se qualcuna di queste condizioni non è soddisfatta, allora questo
 documento probabilmente non è quello fa per il lettore. 
</p>
<p>
Non c'è nulla di particolare che deve essere fatto durante il processo di
 installazione. Si scelga semplicemente un'installazione che abbia senso e
 la si porti a termine. Questo documento suggerisce di installare da zero
 ogni cosa che abbia a che fare con la rete, per evitare di fare supposizioni
 su cosa è stato installato o configurato durante l'installazione. Per essere
 sicuri che le cose funzionino e non ci sia confusione circa l'inserimento
 delle varie informazioni, tutte le configurazioni saranno fatte modificando
 direttamente i file di configurazione del sistema invece di utilizzare gli
 strumenti di configurazione grafici forniti da Red Hat. Da un lato, questo
 potrebbe risultare un po' più difficile, ma in questo modo le indicazioni
 saranno più facilmente applicabili a distribuzioni e situazioni differenti
 (per esempio, se X non funziona o si sta configurando un server senza
 monitor).
</p>
<sect1>
Versioni
<p>
L'ultima versione di questo documento dovrebbe sempre essere
 disponibile su <htmlurl
 url="http://www.coastnet.com/~pramsey/linux/homenet.html"
 name="http://www.coastnet.com/~pramsey/linux/homenet.html"> per la versione
 HTML e su <htmlurl url="http://www.coastnet.com/~pramsey/linux/homenet.sgml"
 name="http://www.coastnet.com/~pramsey/linux/homenet.sgml"> per la versione
 SGML.
</p>
<p>
<itemize>
 <item>
21 Dicembre 1999: Prima versione.
 <item>
2 Gennaio 2000: Aggiunti i suggerimenti di John Mellor sui collegamenti di
 rete esterni.
 <item>
22 Gennaio 2000: Piccoli aggiornamenti a proposito di schede di rete
 identiche ed informazioni sull'IP aliasing da parte di Chris Lea.
 <item>
16 Marzo 2000: Alcune informazioni sulla sicureza dei name server
 e sul supporto a Caldera da parte Nelson Gibbs.
 <item>
22 Giugno 2000: Documentate le stranezze riguardanti la configurazione
 di Red Hat 6.2. Ulteriori informazioni sul PPPoE da parte Kerr First.
</itemize>
</p><sect1>
Copyright
<p>
Copyright © 2000, Paul Ramsey. 
</p>
<p>
This manual may be reproduced in whole or in part, without fee,
 subject to the following restrictions:  
</p>
<p>
<itemize>
 <item>
The copyright notice above and this permission notice must be
 preserved complete on all complete or partial copies. 
 <item>
Any translation or derived work must be approved by the author
 in writing before distribution.  
 <item>
If you distribute this work in part, instructions for obtaining
 the complete version of this manual must be included, and a means
 for obtaining a complete version provided.  
 <item>
Small portions may be reproduced as illustrations for reviews
 or quotes in other works without this permission notice if proper
 citation is given.   
</itemize>
</p><p>
Exceptions to these rules may be granted for academic purposes:
 Write to the author and ask. These restrictions are here to protect
 us as authors, not to restrict you as learners and educators. 
</p>
<sect>
Mettere insieme le cose
<p>
Nel caso in cui si stia usando o meno un hub, la topologia della propria
 rete sarà lievemente differente. Qui saranno trattate soltanto le connessioni
 con cablaggio RJ45 (quella cosa che somiglia al cavo telefonico)
 senza parlare di cavi coassiali. Col coassiale si possono collegare in rete
 più macchine senza aver bisogno di un hub, ma si deve avere attenzione
 a terminare i cavi e ad altre cose. Se si conosce già tutto sui collegamenti
 di rete, queste istruzioni risulteranno una ripetizione. 
</p>
<sect1>
Con un hub
<p>
Se si ha un hub, la rete somiglierà a <htmlurl
url="http://www.coastnet.com/~pramsey/linux/w_hub.gif" name="questa">.
</p>
<p>
Si colleghi la scheda <tt>eth0</tt> della macchina Linux al modem o
 al terminale ADSL utilizzando il cavo fornito dal provider al momento
 dell'installazione (o uno che si sa che funzioni in questa configurazione).
 Questo è importante perché a volte è necessario collegare i modem
 con un cavo incrociato ed altre volte bisogna utilizzare un cavo dritto:
 quello che si deve usare è quello fornito dalla compagnia telefonica. 
</p>
<p>
Si colleghi la scheda <tt>eth1</tt> della macchina Linux all'hub con un cavo
 dritto. Si colleghino tutti gli altri computer all'hub con cavi dritti. 
</p>
<sect1>
Senza un hub
<p>
Se non si ha un hub, si può comunque connettere un computer alla macchina
 Linux, utilizzando un cavo incrociato. La topologia della rete somiglierà
 a <htmlurl url="http://www.coastnet.com/~pramsey/linux/wo_hub.gif"
 name="questa">.
</p>
<p>
Si colleghi la scheda <tt>eth0</tt> della macchina Linux al modem o
 al terminale ADSL utilizzando il cavo fornito dal provider. Si colleghi la
 scheda <tt>eth1</tt> della macchina Linux all'altro computer con un cavo
 incrociato.
</p>
<sect1>
Con una sola scheda di rete
<p>
Questa non è una configurazione consigliata (in questa configurazione
 la rete interna e quella esterna sono sulla stessa rete fisica e sono
 perciò teoricamente più suscettibili al cracking; in realtà, il rischio è
 probabilmente molto basso) ma <it>può</it> essere realizzata. Il
 percorso può variare. 
</p>
<p>
Il kernel Linux include il supporto per l'&quot;IP aliasing&quot;,
 che permette ad una scheda ethernet di funzionare simultaneamente
 con due indirizzi IP differenti. I tipi di kernel forniti con Red Hat e
 Mandrake comprendono di default il supporto per l'IP aliasing. Per impostare
 il gateway con una sola scheda di rete ethernet, in tutti i seguenti
 codici esemplificativi, si sostituisca semplicemente <tt>eth1</tt> con
 <tt>eth0:0</tt>.
</p>
<p>
<it>Nella situazione con una singola scheda, </it>non<it> è raccomandato
utilizzare un server DHCP.</it>
</p>
<p>
Si colleghino tutte le macchine ed il modem o il terminale ADSL all'hub.
Incrociare le dita e proseguire.
</p>
<sect>
Configurare la rete
<p>
Bene, a questo punto Linux è già installato sul gateway.
 È possibile che una delle schede di rete sia già configurata, e che la
 connessione ad Internet sia già impostata. Comunque sia, ripercorriamo
 la configurazione dall'inizio, assumendo che non sia stato configurato
 niente.
</p>
<p>
Si effettui l'accesso come <tt>root</tt>. Tutte le istruzioni fornite in
 questo documento presumono che si sia riconosciuti dal sistema come
 <tt>root</tt>.
</p>
<p>
Il kernel di Linux si riferisce alle due schede ethernet come <tt>eth0</tt>
 e <tt>eth1</tt>, per cui è in questo modo che da ora in poi ci si riferirà ad
 esse. Il problema è riconoscerle. Ecco una maniera &quot;semplice&quot;
 per capirlo, che sicuramente funziona almeno il 50&percnt; delle volte:
 si metta il computer su un tavolo con la scheda madre orizzonatale ed il
 pannello posteriore di fronte (come si farebbe se si volesse aprirlo per
 farci qualche lavoro). La scheda più a sinistra è l'<tt>eth0</tt> -- si può
 etichettarla in qualche modo. Adesso, si annoti su un foglio il costruttore
 ed il modello sia dell'<tt>eth0</tt> che dell'<tt>eth1</tt>.
</p>
<p>
Bene, vediamo se l'<tt>eth0</tt> e l'<tt>eth1</tt> sono state riconosciute
 automaticamente dal kernel. Si digiti <tt>ifconfig eth0</tt> e <tt>ifconfig
 eth1</tt>. In entrambi i casi, se il kernel ha riconosciuto la scheda, si
 dovrebbe vedere qualcosa tipo questo (considerando che i numeri e chissà
 cos'altro potrebbero essere differenti):
</p>
<p>
<verb>
eth0   Link encap: Ethernet   HWaddr 00:60:67:4A:02:0A   
       inet addr:0.0.0.0  Bcast:0.0.0.0  Mask:255.255.255.255 
       UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1 
       RX packets:466 errors:0 dropped:0 overruns:0 frame:0 
       TX packets:448 errors:0 dropped:0 overruns:0 carrier:0 
       collisions:85 txqueuelen:100  
       Interrupt:10 Base address:0xe400 
 </verb>
</p><p>
Se il kernel non riconosce la scheda di rete si vedrà qualcosa tipo questo:  
</p>
<p>
<verb>
eth0: error fetching interface information: Device not found.  
</verb>
</p><sect1>
Configurare un driver di rete
<p>
Se entrambe le schede sono state riconosciute, si può saltare alla prossima
 sezione. Altrimenti, si legga questa sezione. 

</p>
<p>
Quindi una o entrambe le schede non sono state riconosciute
 dal kernel. Questo non è un problema, davvero. Quello che stiamo
 per andare a fare è di dire al kernel più esplicitamente come trovare
 le schede. Ci sono un sacco di metodi e &quot;trucchi&quot;, e non
 saranno trattati tutti. Si ricordi: quando le cose si fanno dure,
 i duri si rivolgono all'<htmlurl
 url="http://www.linuxdoc.org/HOWTO/Ethernet-HOWTO.html"
 name="Ethernet HOWTO">. Ecco dei consigli riassuntivi:
</p>
<p>
<itemize>
 <item>
<it>Si ha una scheda di rete PCI.</it> Probabilmente si è in una buona
 posizione, sempre che non sia talmente recente che non esistano ancora i
 relativi driver. È possibile raccogliere un grande quantità di informazioni
 sulle schede di rete (ed altre cose) andando a leggere in <tt>/proc/pci</tt>,
 annotandosi produttori e modelli.  
 <item>
<it>Si ha una scheda di rete ISA.</it> Probabilmente si dovrà scoprire
 l'indirizzo di I/O di base e l'IRQ con cui opera la scheda. Si hanno i
 manuali, vero? Vero? Se non è così, potrebbe essere il momento di visitare il
 sito web del produttore e vedere se contiene qualche riferimento online.
 Oppure se si ha un vecchio dischetto DOS per la configurazione della scheda,
 si avvii il DOS e si guardi se c'è un programma di setup con cui si può
 leggere ed impostare l'indirizzo di I/O e l'IRQ.  
 <item>
<it>Si ha una scheda ISA Plug'n'Play.</it> Prima si dovrà imparare come
 configurarla -- leggere il <htmlurl
 url="http://www.linuxdoc.org/HOWTO/Plug-and-Play-HOWTO.html"
 name="Plug'n'Play HOWTO">. Fortunatamente, una volta che la scheda sarà
 configurata si conoscerà esattamente sia l'indirizzo di I/O che l'IRQ.
</itemize>
</p><p>
Ora, poiché si conoscono sia la marca che il modello dell'<tt>eth0</tt> e
 dell'<tt>eth1</tt> si può visitare la <htmlurl
 url="http://www.linuxdoc.org/HOWTO/Ethernet-HOWTO-5.html"
 name="pagina di compatibilità"> dell'<htmlurl
 url="http://www.linuxdoc.org/HOWTO/Ethernet-HOWTO.html"
 name="Ethernet HOWTO"> e cercare la scheda. Si prenda nota del driver
 consigliato e di qualsiasi informazione a proposito di opzioni particolari
 che potrebbe richiedere la scheda.
</p>
<p>
È il momento di modificare un file di configurazione! Il file che
 modificheremo è <tt>/etc/conf.modules</tt>. Si apra il file nell'editor di
 testo preferito. Poiché ci sono così tante possibilità e combinazioni
 di cose che si possono trovare in questo file, sarà presentata come esempio
 la configurazione del mio gateway. Esso ha una scheda PCI 10/100Mb basata sul
 chip VIA Rhine, ed un clone di una scheda ISA 10Mb NE2000. Si usa quella a
 100Mb per la rete interna e la scheda a 10Mb per la connessione esterna. Il
 file <tt>/etc/conf.modules</tt> è il seguente: 
</p>
<p>
<verb>
alias parport_lowlevel parport_pc
alias eth0 ne
options ne io=0x300 irq=10
alias eth1 via-rhine
</verb>
</p><p>
Il file <tt>conf.modules</tt> è configurato come segue:
</p>
<p>
<itemize>
 <item>
La prima riga configura la porta parallela per la stampa. Probabilmente se ne
 avrà una simile anche nella popria configurazione. La si lasci pure così.
 <item>
La seconda riga (<tt>alias eth0 ne</tt>) dice al kernel di usare il driver
 <tt>ne</tt> per il dispositivo <tt>eth0</tt>.
 <item>
La terza riga (<tt>options ne io=0x300 irq=10</tt>) dice al driver <tt>ne</tt>
 a quale indirizzo I/O e a quale interrupt IRQ troverà la scheda ISA. Se si
 ha una scheda ISA probabilmente si dovrà usare questo tipo di direttiva: si
 sostituisca semplicemente il driver, l'indirizzo I/O e l'IRQ con le corrette
 informazioni riguardanti la propria scheda.  
 <item>
La quarta riga (<tt>alias eth1 via-rhine</tt>) dice al kernel di usare
 il driver via-rhine per l'<tt>eth1</tt>. Visto che la scheda <tt>eth1</tt>
 di esempio è una scheda PCI, non si ha bisogno di fornire informazioni
 riguardanti I/O e IRQ: il sottosistema PCI configura automaticamente il
 dispositivo.
</itemize>
</p><p>
Ci si assicuri di avere la voce <tt>alias</tt> nel file <tt>conf.modules</tt>
 per entrambe le proprie schede, e le righe corrette per le opzioni riguardanti
 tutte le schede ISA. Si potrebbero avere già delle righe in
 <tt>conf.modules</tt> per ogni scheda ethernet configurata durante
 l'installazione.
</p>
<p>
Quando il file <tt>conf.modules</tt> è stato modificato, si provi a digitare
 <tt>ifconfig eth0</tt> e <tt>ifconfig eth1</tt>. Si dovrebbe ricevere qualche
 errore se sono modificati gli indirizzi di I/O e gli IRQ senza un manuale
 del fabbricante.
</p>
<sect2>
Due schede di rete identiche  
<p>
Dunque, si è stati molto molto astuti, comprando due schede di rete identiche
 per il proprio gateway Linux, ed ora non si riesce a farle funzionare
 insieme? Non bisogna preoccuparsi, per farle coesistere è solo una questione
 di usare la sintassi corretta nel file <tt>/etc/conf.modules</tt>. Supponendo
 che gli indirizzi e i numeri di IRQ siano già stati recuperati e presumendo
 che le schede in questione siano cloni NE2000 (una scelta comune) identici,
 il file <tt>/etc/conf.modules</tt> dovrebbe somigliare a questo: 
</p>
<p>
<verb>
alias eth0 ne
alias eth1 ne
options ne io=0x330,0x360 irq=7,9
</verb>
</p><p>
Le opzioni di indirizzamento sono state scritte sulla stessa riga, ed il
 primo numero per ogni tipo di indirizzamento è relativo all'<tt>eth0</tt>,
 mentre il secondo numero è per l'<tt>eth1</tt>. 
</p>
<sect1>
Configurare la rete interna
<p>
La &quot;rete interna&quot; è la rete su cui parlano tutti i computer
 di casa o dell'ufficio. La &quot;rete esterna&quot; è la spaventosa
 Internet dall'altro lato della macchina Linux. Nel complesso,
 la rete interna sarà completamente isolata dalla rete esterna madiante
 la macchina Linux, la quale opererà come un firewall con livello
 di sicurezza intermedio.
</p>
<sect2>
Il dispositivo di rete
<p>
Dal momento che i driver sono funzionanti ed il sistema è in grado di vedere
 sia l'<tt>eth0</tt> che l'<tt>eth1</tt> con il comando <tt>ifconfig</tt>, è
 il momento di configurare la rete casalinga interna. Si suppone che la rete
 interna sia collegata all'<tt>eth1</tt> e quella esterna all'<tt>eth0</tt>.
</p>
<p>
La rete interna sarà una rete privata e perciò avrà un indirizzo IP
 speciale riservato per il networking interno: <tt>192.168.1.0</tt>.
 Questa è una &quot;rete privata di classe C&quot;, nel caso si vogliano
 impressionare i propri amici.
</p>
<p>
Prima di tutto dobbiamo assicurarci che la rete sia attivata. Si modifichi
 il file <tt>/etc/sysconfig/network</tt> e ci si assicuri che esistano le
 seguenti righe:
</p>
<p>
<verb>
NETWORKING=yes
FORWARD_IPV4=yes
</verb>
</p><p>
La prima riga dice a Linux che vogliamo che i dispositivi di rete vengano
 attivati al momento dell'avvio del sistema. La seconda riga dice a Linux di
 abilitare l'IP forwarding. Questo sarà richiesto quando andremo a configurare
 il masquerading nella Sezione 4.
</p>
<p>
<it>Nota di Redhat 6.2:</it> Per supportare correttamente l'IP forwarding
 e il masquerading, Red Hat 6.2 richiede delle modifiche al file
 <tt>/etc/sysctl.conf</tt>. Assicurarsi che le seguenti righe esistano e che
 siano impostate con i valori corretti:
</p>
<p>
<verb>
net.ipv4.ip_forward = 1
net.ipv4.ip_always_defrag = 1
</verb>
</p><p>
In Red Hat e nelle distribuzioni da essa derivate tutte le impostazioni delle
 interfacce di rete sono contenute in dei file che si trovano nella directory
 <tt>/etc/sysconfig/network-scripts</tt>. In questa directory, si crei il
 file <tt>ifcfg-eth1</tt> con al suo interno le seguenti righe:
</p>
<p>
<verb>
DEVICE=eth1
IPADDR=192.168.1.1
ONBOOT=yes
</verb>
</p><p>
Queste impostazioni dicono agli script di rete di configurare <tt>eth1</tt> al
 momento del boot e di assegnargli un particolare indirizzo IP. Attivare
 la propria rete con le nuove impostazioni per mezzo del seguente comando:
 <tt>/etc/rc.d/init.d/network restart</tt>
</p>
<sect2>
Il server DHCP
<p>
Un server DHCP configurerà automaticamente i dispositivi della rete casalinga
 interna con indirizzi IP. Questo è molto utile se si hanno dei computer
 portatili: si potranno semplicemente collegarli alla rete e saranno
 immediatamente configurati nel modo corretto. Se non si desidera impostare
 un server DHCP sulla rete interna, si può saltare questa sezione.
</p>
<p>
Prima di tutto si deve essere sicuri di avere installato il server DHCP.
 Per far questo si monti il CD di Linux e si installi l'RPM relativo al <tt>dhcp</tt>. Quindi
 si modifichi il file <tt>/etc/dhcpd.conf</tt> con le seguenti righe (e solo
 queste):  

</p>

<p>
<verb>
subnet 192.168.1.0 netmask 255.255.255.0 &lcub;  
  range 192.168.1.2 192.168.1.60; 
  default-lease-time 86400; 
  max-lease-time 86400; 
  option routers 192.168.1.1; 
  option ip-forwarding off; 
  option broadcast-address 192.168.1.255; 
  option subnet-mask 255.255.255.0; 
&rcub; 
 

</verb>
</p><p>
Se si ha intenzione di impostare la macchina Linux per funzionare da
 caching domain name server, si inserisca la seguente opzione: 

</p>

<p>
<verb>
option domain-name-servers 192.168.1.1;  
 

</verb>
</p><p>
Se si conosce l'indirizzo del server DNS esterno e <it>non</it> si ha intenzione
 di usare la macchina Linux come server DNS, inserire la seguente
 opzione, dove x.x.x.x e y.y.y.y sono gli indirizzi IP dei server DNS esterni:
 

</p>

<p>
<verb>
option domain-name-servers x.x.x.x, y.y.y.y;  
 

</verb>
</p><p>
Se si utilizzerà Samba come servizio di file sharing
 sulla macchina Linux per i computer Windows, si aggiungano le seguenti
 opzioni per usare la macchina Linux come server WINS e browsing server
 di default: 

</p>

<p>
<verb>
option netbios-name-servers 192.168.1.1;   
option netbios-dd-server 192.168.1.1;  
option netbios-node-type 8;  
option netbios-scope &quot;&quot;; 
 

</verb>
</p><p>
La configurazione di Samba e del WINS va al di là dello scopo
 di questo documento. Per informazioni a riguardo, si inizi col vedere
 il <htmlurl url="http://www.linuxdoc.org/HOWTO/SMB-HOWTO.html" name="SMB HOWTO"> e si proceda da lì.

</p>
<p>
Ci sono ancora un po' di passi da fare. Quindi, si modifichi il file
 <tt>/etc/rc.d/init.d/dhcpd</tt> ricercando la seguente riga: 

</p>

<p>
<verb>
/sbin/route add -host 255.255.255.255 dev eth1  
 

</verb>
</p><p>
I client DHCP su cui gira Windows hanno bisogno di un particolare
 indirizzo di broadcast nelle risposte DHCP, e questo comando forza
 lo stack TCP/IP di Linux a produrlo. Se la riga precedente non c'è,
 <it>la si aggiunga</it>. Se invece <it>si trova</it> una riga analoga a quella precedente, ci si assicuri che il
 dispositivo a cui essa si riferisce sia <tt>eth1</tt>. 

</p>
<p>
Il prossimo passo consiste nel modificare il file <tt>/etc/rc.d/init.d/dhcpd</tt>
 per usare l'<tt>eth1</tt> come il dispositivo di default. Sostituire la riga:
 

</p>

<p>
<verb>
daemon /usr/sbin/dhcpd  
 

</verb>
</p><p>
con: 

</p>

<p>
<verb>
daemon /usr/sbin/dhcpd eth1  
 

</verb>
</p><p>
Adesso siamo pronti per avviare il server DHCP con il comando: <tt>/etc/rc.d/init.d/dhcpd start</tt>.  

</p>
<p>
Quindi, dobbiamo accertarci che il server DHCP si avvii all'avvio
 del sistema. Alcuni pacchetti RPM del server DHCP non includono le
 direttive per garantire che il server parta ogni volta, così ci assicureremo
 che parta invocando il comando <tt>chkconfig dhcpd on</tt>. 

</p>
<p>
Questo comando fa sì che RedHat aggiunga lo script di avvio del
 DHCP nelle directory dei vari runlevel sotto <tt>/etc/rc.d</tt>. Nei runlevel
 3 e 5 (multiuser console e multiuser X) il server DHCP viene avviato.
 Nei runlevel 0, 1 e 6 (shutdown, single user e reboot) il server
 DHCP viene disattivato. 

</p>
<sect2>
I computer client 
<p>
Se si è impostato il DHCP, la configurazione dei computer
 client è molto semplice: si abiliti semplicemente la configurazione tramite
 DHCP. Per i computer Windows, questo vuol dire aprire il &quot;Pannello
 di Controllo&quot;, quindi cliccare sull'opzione &quot;Rete&quot;, cercare il protocollo
 &quot;TCP/IP&quot; e continuare con &quot;Configura&quot;. Spuntare
 l'opzione che dice &quot;Configura l'indirizzo TCP/IP automaticamente&quot;,
 applicare le modifiche e riavviare. 

</p>
<p>
Prima di riavviare, si può digitare (sul gateway) il seguente comando: <tt>tail
 -f /var/log/messages</tt>. Questo visualizzerà il log di sistema di Linux
 continuamente. Se tutto è andato bene, quando il computer
 Windows verrà riavviato, si vedrà la sua richiesta di un indirizzo IP e la risposta da parte del server
 DHCP. Per interrompere il comando <tt>tail -f</tt>, premere Control-C. 

</p>
<p>
Se non si è impostato il DHCP, la configurazione è comunque
 piuttosto semplice. Si apra l'opzione &quot;Rete&quot; dal
 &quot;Pannello di Controllo&quot;, e si scelga di configurare il protocollo
 TCP/IP. Si può assegnare ai computer client qualsiasi indirizzo
 nella rete 192.168.1.0 eccetto 192.168.1.0 (l'indirizzo di rete),
 192.168.1.255 (l'indirizzo di broadcast) o 192.168.1.1 (il server
 Linux). Si ricordi di non assegnare mai lo stesso indirizzo IP a due computer.
 Si imposti l'indirizzo del &quot;Gateway&quot; a 192.168.1.1, cosicché
 il traffico in uscita sia indirizzato attraverso il gateway Linux.
 

</p>
<p>
L'<htmlurl url="http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html" name="IP Masquerading HOWTO"> contiene informazioni molto dettagliate sulla configurazione dei
 client nella <htmlurl url="http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO-4.html" name="sezione relativa alla configurazione">.

</p>
<p>
In generale, per configurare un computer client, si abilita
 la configurazione tramite DHCP, oppure si assegna manualmente un
 indirizzo della rete 192.168.1.X con il gateway 192.168.1.1. Si faccia
 in modo che anche il server DNS sia 192.168.1.1 se si è attivato un
 caching DNS server (v. più avanti) oppure si imposti il DNS con gli indirizzi
 forniti dal provider. 

</p>
<sect2>
Il server DNS  
<p>
Far funzionare la macchina Linux da caching DNS server migliorerà
 (leggermente) la velocità di navigazione, perché gli indirizzi DNS
 comunemente usati saranno salvati nella rete interna e non sarà necessario
 andarli a richiedere su Internet. 

</p>
<p>
Se si è interessati a creare un DNS pienamente funzionante, c'è
 una grande quantità di cose (complesse) da imparare. È disponibile
 un <htmlurl url="http://www.linuxdoc.org/HOWTO/DNS-HOWTO.html" name="DNS HOWTO">, e il libro <htmlurl url="http://www.oreilly.com/catalog/dns3" name="DNS and BIND"> è un buon riferimento cartaceo (ed anche molto completo).

</p>
<p>
Per fare in modo che le macchine client ottengano un vantaggio dal
 caching server, devono essere configurate per usare il gateway Linux
 come server DNS primario. Le direttive sul DHCP fornite nella
 sezione 3.2.2 sono un modo per farlo. Se i client sono configurati
 manualmente, si può cambiare la configurazione relativa al
 DNS negli stessi file usati per impostare
 l'indirizzo IP della macchina. 

</p>
<p>
Per installare il server DNS, si installi l'RPM <tt>bind</tt>, quindi
 l'RPM <tt>caching-nameserver</tt>. A questo punto, è quasi tutto pronto.
 

</p>
<p>
Appena installato, il caching server funzionerà bene, ma se
 si conoscono gli indirizzi IP dei DNS del provider Internet si possono migliorare
 leggermente le prestazioni modificando il file <tt>/etc/named.conf</tt> e aggiungendo
 la riga seguente subito dopo quella contenente la direttiva <tt>directory</tt> (dove x.x.x.x e y.y.y.y sono gli indirizzi IP del
 server DNS primario e secondario): 

</p>

<p>
<verb>
forwarders &lcub; x.x.x.x; y.y.y.y; &rcub;;   
 

</verb>
</p><p>
Questa modifica fa in modo che il server DNS interno interroghi
 i server DNS del provider prima di attraversare Internet alla ricerca
 di un dato indirizzo. I server dei provider hanno spesso una cache
 di informazioni DNS molto ricca e possono offrire più velocemente una risposta rispetto a quanto possa fare il server DNS interno. 

</p>
<p>
Il demone <tt>named</tt> ha avuto qualche problema di sicurezza negli
 ultimi 12 mesi, perciò è molto importante utilizzare l'ultima
 versione, e fare qualche cambiamento alle impostazioni di default
 per aumentare la sicurezza. 

</p>

<p>
<enum>
 <item>
Si controlli la versione di <tt>bind</tt> e ci si assicuri che sia almeno
 la 8.2.2. Controllare l'ultima versione sul sito <htmlurl url="ftp://updates.redhat.com" name="Red Hat Updates"> oppure <htmlurl url="ftp://ftp.linux-mandrake.com/pub/updates" name="Mandrake Updates">.
 <item>
Si restringa l'accesso al name server interno solo alla rete locale
 aggiungendo la riga <tt>allow-query &lcub; 192.168.1/24; 127.0.0.1/32;
 &rcub;;</tt> nel file <tt>/etc/named.conf</tt> subito dopo la direttiva <tt>forwarders</tt>. 
 <item>
Si eviti di far girare il name server con i privilegi di <tt>root</tt>. Se il server
 girasse con tali privilegi, un exploit del server concederebbe all'intruso
 i privilegi di <tt>root</tt>. Facendo girare il server con i diritti di un utente con delle restrizioni,
 come <tt>nobody</tt>, si possono diminuire i rischi dovuti ad un eventuale exploit.
 Per far girare il name server come <tt>nobody</tt>, si modifichi il file <tt>/etc/rc.d/init.d/named</tt>
 cambiando la riga <tt>daemon named</tt> in <tt>daemon named -u nobody -g nobody</tt>.
 

</enum>
</p><p>
Per assicurarsi che il server DNS parta al momento del boot, digitare: <tt>chkconfig
 named on</tt>. Di nuovo, questo assicura che il servizio venga attivato al boot per i runlevel
 usuali (3 e 5). 

</p>
<p>
Bene, adesso si può avviare il server DNS: <tt>/etc/rc.d/init.d/named
 start </tt> 

</p>
<sect2>
Verificare la rete interna  
<p>
Finché non configuriamo la rete esterna, il servizio DNS non
 funzionerà (visto che deve comunicare con altri server DNS su Internet),
 ma possiamo provare la connettività interna di base con il programma
 <tt>ping</tt>. 

</p>
<p>
Su uno dei computer client, si apra un terminale
 (MSDOS), e si digiti <tt>ping 192.168.1.1</tt>. Questo spedirà pacchetti verso
 la macchina Linux ad intervalli regolari, e la macchina Linux risponderà con altri
 i pacchetti. Se le cose stanno funzionando nel modo giusto,
 si dovrebbero vedere i tempi di ritorno dei pacchetti.  

</p>
<sect1>
Configurare la rete esterna  
<p>
Ora siamo pronti per configurare la rete esterna. Talvolta può
 essere difficoltoso, a seconda di quanto il provider supporta
 Linux. Se si hanno delle difficoltà, c'è un <htmlurl url="http://www.linuxdoc.org/HOWTO/mini/ADSL.html" name="ADSL mini-HOWTO"> che descrive più dettagliatamente gli aspetti dell'ADSL. Se riesco a trovare un HOWTO sui modem, inserirò
 il link.

</p>
<p>
Il problema principale della maggior parte delle connessioni è quello di <it>ottenere
 un indirizzo IP</it>. Alcuni provider Internet assegnano indirizzi IP
 statici agli abbonati ADSL, e in questo caso la configurazione è
 semplice. Però, la maggior parte dei provider si sono spostati verso
 la configurazione dinamica mediante (indovinato) il DHCP. Questo
 vuol dire che il computer Linux fungerà da <it>server</it>
 DHCP sull'interfaccia <tt>eth1</tt>, e da <it>client</it> DHCP sull'interfaccia <tt>eth0</tt>.
 

</p>
<p>
Inoltre, molti provider hanno iniziato a fornire i loro servizi
 in modi specializzati e non standard presumendo che i loro clienti
 stiano usando Windows. Alcuni di questi casi saranno discussi alla
 fine della sezione 3.3.2. 

</p>
<sect2>
Con un IP statico  
<p>
Se il provider Internet fornisce un indirizzo IP statico,
 siamo in una botte di ferro. Prima di tutto, si crei un nuovo file di
 configurazione relativo ad un'interfaccia, <tt>/etc/sysconfig/network-scripts/ifcfg-eth0</tt>
 contenente le seguenti righe: 

</p>

<p>
<verb>
DEVICE=eth0  
IPADDR=x.x.x.x 
NETMASK=y.y.y.y 
ONBOOT=yes 
 

</verb>
</p><p>
Sostituire x.x.x.x e y.y.y.y con i valori forniti dal
 provider Internet. Adesso si modifichi il file <tt>/etc/resolv.conf</tt> e si inseriscano
 le seguenti informazioni: 

</p>

<p>
<verb>
search dominio_del_provider  
nameserver n.n.n.n 
nameserver m.m.m.m 
 

</verb>
</p><p>
Il <tt>dominio_del_provider</tt> dovrebbe essere fornito dal
 provider Internet. Quindi si inserisca l'indirizzo IP del DNS primario e quello del DNS secondario al posto
 di n.n.n.n e m.m.m.m. Se la macchina Linux è stata impostata per funzionare da
 server DNS, si può aggiungere la riga <tt>nameserver 127.0.0.1</tt> prima delle altre direttive
 <tt>nameserver</tt>. Ciò farà sì che venga
 usato il caching server prima di inoltrare richieste all'esterno per
 richiedere informazioni concernenti il DNS. 

</p>
<sect2>
Con il DHCP  
<p>
Se il provider Internet usa la configurazione dinamica mediante DHCP,
 si deve creare un nuovo file di configurazione per la relativa interfaccia,
 <tt>/etc/sysconfig/network-scripts/ifcfg-eth0</tt> ed inserirvi le righe
 seguenti: 

</p>

<p>
<verb>
DEVICE=eth0   
BOOTPROTO=dhcp  
ONBOOT=yes 
 

</verb>
</p><p>
Ci si assicuri che il demone dhcpcd client sia installato sul
 sistema: inserire il CD di Linux ed installa il pacchetto RPM <tt>dhcpcd</tt>.
 

</p>
<p>
È il momento di verificare la configurazione di rete del sistema.
 Si può usare semplicemente il comando <tt>/etc/rc.d/init.d/network restart</tt>. Quindi
 si verifichi la connessione esterna eseguendo <tt>ping</tt> verso un computer
 su Internet, tipo <tt>www.yahoo.com</tt>, e si controlli che qualcosa ritorni indietro.
 

</p>
<sect2>
Stranezze ed anomalie  
<p>
La situazione reale può differire dalle semplicistiche situazioni
 qui descritte. Ecco qualche breve nota sulle varie difficoltà riscontrabili
 ed i link alle risorse più autorevoli per procedere alla loro risoluzione. Si ringrazia
 John Mellor per aver fornito i link e per avermi spinto ad aggiungere questa sezione. 

</p>
<sect3>
PPP Over Ethernet (PPPoE)  
<p>
Molti provider ADSL (Bell Atlantic, per esempio) stanno attualmente
 insistendo che il loro nuovi utenti debbano utilizzare,
 per connettersi al servizio, il protocollo &quot;PPP over Ethernet&quot;
 (PPPoE). A tal fine, forniscono un programma client per Windows: non
 molto utile per gli utenti Linux. Fortunatamente, PPPoE è un protocollo
 semplice e sono in corso molti sforzi per il supporto sotto Linux.
 

</p>

<p>
<itemize>
 <item>
Il <htmlurl url="http://www.roaringpenguin.com/pppoe.html" name="Roaring Penguin PPPoE Client"> è consigliato da Kerr First.
 <item>
<url url="* http://www.panix.com/~dfoster/prog/linux/pppoe.html" name="PPPoE on Linux for Bell Sympatico">
 <item>
PPPoE on Linux for Sympatico (<htmlurl url="http://www.carricksolutions.com/pppoe.htm" name="General Info">) (<htmlurl url="http://www.carricksolutions.com/linuxpppoe.htm" name="Linux Info">)

</itemize>
</p><sect3>
Semplici trucchi per il DHCP  
<p>
Una delle abitudini preferite che hanno i provider è
 quella di legare il servizio ad un solo hostname, o comunque a
 una sola interfaccia di rete. Probabilmente questo è per prevenire
 che si possano collegare più computer alla stessa porta ethernet utilizzando un hub
 (naturalmente, usando Linux e il Masquerading si può ottenere lo stesso effetto
 con una maggiore sicurezza e la compagnia telefonica non ha modo di saperlo!).
 

</p>
<p>
Se il provider ci ha assegnato un hostname ed ha insistito affinché
 si impostasse la macchina Windows con questo nome, al fine di usare
 il loro servizio, allora bisogna assicursi che la macchina Linux
 invii questo hostname quando fa una richiesta al DHCP per ottenere
 un indirizzo IP. 

</p>
<p>
Il client DHCP di Red Hat viene chiamato quando si imposta il <tt>BOOTPROTO</tt>
 con <tt>dhcp</tt> nel file di configurazione dell'interfaccia, ma viene
 chiamato senza riferimenti ad un hostname. Per chiamare il programma
 con un hostname, in Red Hat 6.1, si modifichi il file <tt>/etc/sysconfig/network</tt>,
 cambiando la riga: 

</p>
<p>
<tt>HOSTNAME=</tt> 

</p>
<p>
In modo che risulti come questa:  

</p>
<p>
<tt>HOSTNAME=nome_assegnato_dal_provider</tt> 

</p>
<p>
In alcune varianti di Red Hat potrebbe non funzionare. Se non
 funziona, controllare lo script <tt>/sbin/ifup</tt> e guardando se le chiamate a
 <tt>dhcpcd</tt> e <tt>pump</tt> includono il parametro <tt>-h &dollar;HOSTNAME</tt>.
 Se non lo fanno, lo si aggiunga, in modo che esse risultino analoghe a <tt>/sbin/dhcpcd
 -i &dollar;DEVICE -h &dollar;HOSTNAME</tt> e <tt>/sbin/pump -i &dollar;DEVICE
 -h &dollar;HOSTNAME</tt>. 

</p>
<sect3>
Road Runner  
<p>
Il servizio Road Runner ha un processo di login particolare che
 deve essere eseguito prima che il server possa essere utilizzato. Fortunatamente è disponibile un dettagliato http://usmcug.usm.maine.edu/&tilde;kpesce/rr&rcub;&lcub;Linux Road
 Runner HOWTO&rcub;.

</p>
<sect2>
Uno sguardo alle impostazioni di rete
<p>
Ora si ammiri il proprio lavoro. Si digiti <tt>ifconfig</tt> per vedere la configurazione di tutti
 i dispositivi di rete. Sul gateway dovrebbe risultare qualcosa di analogo a: 

</p>

<p>
<verb>
eth0  Link encap:Ethernet  HWaddr 00:60:67:4A:02:0A   
      inet addr:24.65.182.43  Bcast:24.65.182.255  Mask:255.255.255.0  
      UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1  
      RX packets:487167 errors:0 dropped:0 overruns:0 frame:0  
      TX packets:467064 errors:0 dropped:0 overruns:0 carrier:0  
      collisions:89 txqueuelen:100  
      Interrupt:10 Base address:0xe400 
eth1  Link encap:Ethernet  HWaddr 00:80:C8:D3:30:2C  
      inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0  
      UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1  
      RX packets:284112 errors:0 dropped:0 overruns:0 frame:1  
      TX packets:311533 errors:0 dropped:0 overruns:0 carrier:0  
      collisions:37938 txqueuelen:100  
      Interrupt:5 Base address:0xe800 
lo    Link encap:Local Loopback  
      inet addr:127.0.0.1  Mask:255.0.0.0  
      UP LOOPBACK RUNNING  MTU:3924  Metric:1  
      RX packets:12598 errors:0 dropped:0 overruns:0 frame:0  
      TX packets:12598 errors:0 dropped:0 overruns:0 carrier:0  
      collisions:0 txqueuelen:0 
 

</verb>
</p><p>
Si noti che l'interfaccia <tt>eth0</tt> ha un indirizzo IP esterno
 di fantasia, e l'<tt>eth1</tt> ha un indirizzo interno privato.
 

</p>
<p>
Si dia un'occhiata alla tabella di routing digitando il comando
 <tt>route</tt>. Sul gateway dovrebbe risultare qualcosa di analogo a: 

</p>

<p>
<verb>
  Kernel IP routing table   
  Destination     Gateway      Genmask         Flags Metric Ref Use Iface  
  255.255.255.255 *            255.255.255.255 UH    0      0     0 eth1  
  192.168.1.0     *            255.255.255.0   U     0      0     0 eth1  
  24.65.182.0     *            255.255.255.0   U     0      0     0 eth0  
  127.0.0.0       *            255.0.0.0       U     0      0     0 lo  
  default         24.65.182.1  0.0.0.0         UG    0      0     0 eth0 
 

</verb>
</p><p>
Quindi, abbiamo verificato che la rete esterna è configurata, la rete
 interna è configurata, il dispositivo locale è configurato, l'indirizzo
 speciale di broadcast 255.255.255.255 è configurato, e la route di
 default è configurata per puntare al gateway di default del provider.
 Perfetto! 

</p>
<p>
Ora si hanno la rete interna e quella esterna. Tutto quello che rimane da fare
 consiste nell'aprire la porta fra le due. Quindi, per prima cosa dobbiamo
 assicurarci che nessun &quot;mostro&quot; possa entrare dall'esterno. 

</p>
<sect1>
Sicurezza  
<p>
Uno degli inconvenienti nello stare connessi a Internet in modo
 permanente tramite l'ADSL o via modem è che il computer è esposto
 a potenziali minacce alla sicurezza per 24 ore al giorno, 7 giorni
 alla settimana. Utilizzare Linux come gateway riduce i rischi, perché
 esso nasconde gli altri computer: per quanto riguarda Internet, solo
 la macchina Linux è disponibile per le connessioni. Questo vuol
 dire che la rete interna è sicura quanto la macchina Linux, così
 a questo punto saranno firniti dei consigli basilari per rendere la
 macchina Linux più sicura. 

</p>
<p>
Per prima cosa, si devono chiudere fuori tutti i tipi cattivi. Per
 fare questo, si modifichi il file <tt>/etc/hosts.deny</tt> in modo che somigli
 a questo: 

</p>

<p>
<verb>
&num;   
&num; hosts.deny  This file describes the names of the hosts which are  
&num;             *not* allowed to use the local INET services, as decided  
&num;             by the '/usr/sbin/tcpd' server.  
&num;  
&num;            The portmap line is redundant, but it is left to remind you that  
&num;        the new secure portmap uses hosts.deny and hosts.allow. In particular  
&num;             you should know that NFS uses portmap!  
ALL: ALL  
 

</verb>
</p><p>
Questo indica ai &quot;TCP wrappers&quot; -- che controllano il
 95&percnt; delle connessioni in entrata -- di negare tutte le connessioni
 provenienti da qualsiasi computer. Questa è una regola piuttosto
 buona! Ma, ma ti impedirà anche di accedere alla macchina Linux
 dall'interno della rete casalinga, che è una seccatura,
 così faremo un'eccezione: si modifichi il file <tt>/etc/hosts.allow</tt> in modo
 che somigli a questo: 

</p>

<p>
<verb>
&num;   
&num; hosts.allow  This file describes the names of the hosts which are  
&num;              allowed to use the local INET services, as decided  
&num;              by the '/usr/sbin/tcpd' server.  
&num;  
ALL: 127.0.0.1  
ALL: 192.168.1. 
 

</verb>
</p><p>
Questo indica ai &quot;TCP wrappers&quot; di permettere
 connessioni a tutti i servizi dal dispositivo di loopback (127.0.0.1)
 e dalla rete casalinga (192.168.1.). 

</p>
<p>
Adesso sono stati chiusi fuori i mostri, con un potente lucchetto.
 Se si vogliono attivare barriere e sistemi di allarme, si dovrà essere un
 po' più sofisticati. Il <htmlurl url="http://www.linuxdoc.org/HOWTO/Security-HOWTO.html" name="Security HOWTO"> è un buon posto per iiziare se si desidera
 imparare qualcosa di più su come mettere in sicurezza la macchina
 Linux. 

</p>
<sect>
Configurare il Masquerading  
<p>
Tutto a posto! I preliminari sono finiti, adesso siamo dove inizia
 la magia. L'IP masquerading è uno dei servizi veramente magici che
 Linux fornisce. Ci sono prodotti commerciali per Windows che fanno
 la stessa cosa, ma non in modo così efficace: un vecchio 386 può felicemente
 fornire servizi di IP masquerading per un intero ufficio di medie
 dimensioni, ma non riesce a far girare Windows 95, anche solo col
 pacchetto di masquerading (come supplemento, ho letto su alcune
 recenti riviste che Windows 2000 supporterà la &quot;condivisione
 delle connessioni&quot; senza nessun software aggiuntivo -- questo suona come
 se le compagnie che vendevano software di condivisione delle connessioni
 siano state &quot;abbracciate ed estese&quot; dalla Microsoft -- comunque,
 non consiglio di provare Windows 2000 su un 386). 

</p>
<p>
Linux ha funzionalità di firewall estremamente versatili, ed adesso le andremo
 ad utilizzare nella maniera più semplice e cruda. Se si desidera
 imparare come implementare un firewall da esperto, si dovrebbe
 leggere sia il <htmlurl url="http://www.linuxdoc.org/HOWTO/Firewall-HOWTO.html" name="Firewalling HOWTO"> per capire la teoria e l'<htmlurl url="http://www.linuxdoc.org/HOWTO/IPCHAINS-HOWTO.html" name="IPChains HOWTO"> per le istruzioni sul nuovo
 strumento di firewall <tt>ipchains</tt> che viene fornito col kernel 2.2.X
 (e per estensione con Red Hat 6.X). È anche disponibile un
 <htmlurl url="http://www.linuxdoc.org/HOWTO/IP-Masquerade-HOWTO.html" name="IP Masquerading HOWTO"> molto buono che contiene molti più dettagli riguardo ai trucchi sul masquerading.
 

</p>
<p>
Una volta
 che la rete interna e quella esterna sono operative, configurare un semplice masquerading è molto facile. Si modifichi il
 file <tt>/etc/rc.d/rc.local</tt> aggiungendo le seguenti righe: 

</p>

<p>
<verb>
&num; 1) Svuota le tabelle delle regole.   
/sbin/ipchains -F input  
/sbin/ipchains -F forward  
/sbin/ipchains -F output  
&num; 2) Imposta i tempi del MASQ e consente i pacchetti in entrata per la configurazione DHCP.  
/sbin/ipchains -M -S 7200 10 60  
/sbin/ipchains -A input -j ACCEPT -i eth0 -s 0/0 68 -d 0/0 67 -p udp  
&num; 3) Nega tutti i pacchetti di forwarding tranne quelli della rete interna.  
&num;    Maschera questi ultimi.  
/sbin/ipchains -P forward DENY  
/sbin/ipchains -A forward -s 192.168.1.0/24 -j MASQ  
&num; 4) Carica i moduli di forwarding per i servizi speciali.  
/sbin/modprobe ip_masq_ftp  
/sbin/modprobe ip_masq_raudio 
 

</verb>
</p><p>
Le ultime due righe caricano i moduli del kernel che permettono
 all'FTP ed a RealAudio di funzionare sui computer della rete interna.
 Ci sono altri moduli per i servizi speciali che possono essere aggiunti se se ne
 ha bisogno: 

</p>

<p>
<itemize>
 <item>
CUSeeMe (<tt>/sbin/modprobe ip_masq_cuseeme</tt>)  
 <item>
Internet Relay Chat (<tt>/sbin/modprobe ip_masq_irc</tt>)  
 <item>
Quake (<tt>/sbin/modprobe ip_masq_quake</tt>)  
 <item>
VDOLive (<tt>/sbin/modprobe ip_masq_vdolive</tt>)  

</itemize>
</p><p>
Ora siamo pronti per provare il masquerading! Si lanci lo script
 <tt>rc.local</tt> con il comando <tt>/etc/rc.d/rc.local</tt> e siamo pronti a partire!
 Ci si sieda davanti ad uno degli altri computer e si provi a navigare nel
 web. Con un po' di fortuna, ogni cosa funzionerà. 

</p>
<sect>
Problemi  
<p>
Ci sono un po' di problemi e un po' di cose che possono andare
 male usando un documento semplice come questo, perché ci sono diversi
 casi particolari. La maggior parte di essi riguardano
 la configurazione degli apparati della rete interna e di quella esterna.
 Cercherò di rispondere alle persone che hanno dei problemi: segnalatemi cosa
 è andato male e aggiungerò dei link in questo documento, così le persone che hanno problemi
 riguardanti casi particolari possono avere una traccia per un aiuto.
 Contattatemi pure all'indirizzo <htmlurl url="mailto:pramsey@refractions.net" name="pramsey@refractions.net">. 

</p>
<sect1>
ICQ non funziona  
<p>
Alcune parti di ICQ funzionano bene con il masquerading. Altre
 parti non funzionano affatto. C'è un <htmlurl url="http://members.xoom.com/djsf/masq-icq/" name="modulo ICQ beta">, anche se in fase di sviluppo,
 che risolve alcuni dei problemi (ma non tutti) nel far girare ICQ
 con il masquerading. Il file <tt>README</tt> nel codice sorgente della distribuzione
 descrive come compilare il modulo. Una volta compilato
 ed installato, si digiti <tt>/sbin/modprobe ip_masq_icq</tt>. 

</p>
<sect1>
Se si ha Caldera 2.X e non Red Hat 6.X  
<p>
Bene, per prima cosa congratulazioni per la controtendenza! Seconda
 cosa, Nelson Gibbs (ngibbs@pacbell.net) invia buone notizie, perché
 molte di queste istruzioni saranno valide per Caldera. Ci sono alcuni
 cambiamenti importanti da tenere in conto, comunque: 

</p>

<p>
<enum>
 <item>
Una dichiarazione <tt>GATEWAY=xxx.xxx.xxx.xxx</tt> nei file <tt>/etc/sysconfig/network-scripts/ifcfg-eth0</tt>
 ed <tt>eth1</tt> per l'interfaccia (l'interfaccia locale usa un indirizzo
 IP remoto e l'interfaccia remota usa l'IP del gateway del provider).
 
 <item>
Ci si assicuri che lo script <tt>/etc/sysconfig/daemons/dhcpd</tt> segnali
 <tt>ROUTE_DEVICE</tt> come <tt>eth1</tt> e <it>non</it> <tt>eth0</tt>. 
 <item>
<tt>/etc/dhcpd.conf</tt> richiede una dichiarazione di sottorete per entrambe
 le interfacce (non sono completamente sicuro perché ho fatto la seconda
 dichiarazione: subnet 216.102.154.201 netmask 255.255.255.255 &lcub;
 &rcub; senza nessun'altra opzione ed il server DHCP ascolta e spedisce
 sulla eth0 e la eth1). Il server DHCP dà errore se è
 specificata una sola sottorete. 
 <item>
<it>Non</it> aggiungere la route all'host <tt>255.255.255.255</tt>, lo script <tt>/etc/rc.d/init.d/dhcpd</tt>
 che usa Caldera ha già risolto il problema. <it>Assicurarsi</it> di cambiare
 a <tt>eth1</tt> tutti i riferimenti all'<tt>eth0</tt> contenuti nello script. 

</enum>
</p><sect1>
Si vuole che una delle macchine interne funzioni come server
 Web  
<p>
Una cosa da nulla! Comunque, <it>si ha bisogno di un indirizzo IP statico</it>
 affinché questa semplice serie di istruzioni funzioni. Nel caso di indirizzo
 IP dinamico, si avrà bisogno di qualche script in più per assicurarci
 che l'indirizzo IP sia aggiornato nei comandi di port forwarding
 quando l'indirizzo cambia. 

</p>
<p>
Si ricordi che fare il forwarding di una porta esterna su una
 macchina interna rende la macchina &quot;interna&quot; meno &quot;interna&quot;
 di prima, ma può essere fatto in maniera trasparente e con
 una degradazione delle prestazioni praticamente nulla. Uno degli effetti collaterali
 del codice dell'IP masquerading nel kernel di Linux è l'abilità di
 fare alcuni giochetti divertenti con i pacchetti quando questi raggiungono
 lo strato network, e <tt>ipmasqadm</tt> ne trae
 vantaggio.

</p>
<p>
Per alcune ragioni <tt>ipmasqadm</tt> non è fornito con tutte le varianti
 di Red Hat e di Mandrake, quindi si dovrà probabilmente scaricarlo dal
 <htmlurl url="http://juanjox.kernelnotes.org" name="sito web"> del manutentore -- esiste un <htmlurl url="http://juanjox.kernelnotes.org/ipmasqadm-0.4.2-2.i386.rpm" name="RPM"> ed anche il codice sorgente. 

</p>
<p>
Una volta ottenuto l'RPM, lo si installi e si aggiungano le seguenti
 righe al file <tt>/etc/rc.d/rc.local</tt>: 

</p>

<p>
<verb>
/usr/sbin/ipmasqadm portfw -f   
/usr/sbin/ipmasqadm portfw -a -P tcp -L x.x.x.x 80 -R 192.168.1.x 80  
 

</verb>
</p><p>
Il primo comando svuota le regole del port forwarding ed il secondo
 comando aggiunge il forward dalla porta 80 dell'interfaccia esterna
 alla porta 80 della macchina interna che fa da web server. Si noti che l'indirizzo IP statico
 esterno va al posto di x.x.x.x e l'indirizzo IP dell'interfaccia
 della macchina interna va al posto di 192.168.1.x. 

</p>
<p>
Adesso le richieste esterne per la porta 80 saranno redirette in
 modo trasparente alla porta 80 della macchina interna. Non
 si può testare questo meccanismo effettuando un telnet o connettendosi alla porta
 80 del gateway da una delle macchine interne: il port forwarder serve
 solo le richieste che arrivano sull'interfaccia <it>esterna</it>. 

</p>

</article>
