Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 1378

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Bridging mini-Howto</TITLE>


</HEAD>
<BODY>
<H1>Bridging mini-Howto</H1>

<H2>Christopher Cole,  <CODE>
<A HREF="mailto:cole@lynkmedia.com">cole@lynkmedia.com</A></CODE>. Tradotto da Alessandro Rubini (<CODE>rubini@linux.it</CODE>).</H2>v1.10, 13 Novembre 1997. Tradotto il 30 Novembre 1997.
<P><HR>
<EM>Questo documento descrive come preparare un bridge per reti Ethernet.
Ma cos'&egrave; un bridge? &Egrave; un dispositivo che controlla il flusso dei
pacchetti in una sottorete cercando di ridurre l'ammontare di traffico.
Un bridge di solito viene posizionato tra due gruppi di computer che
parlano molto tra loro ma poco con i calcolatori dell'altro gruppo.
Come esempio prendiamo un gruppo di Macintosh e un gruppo di
macchine Unix: entrambi questi gruppi tendono a chiacchierare abbastanza
al loro interno e il traffico che producono causa collisioni nelle
comunicazioni tra le altre macchine che tentano di parlare tra loro;
questa &egrave; una situazione in cui occorrerebbe mettere un bridge tra i due
gruppi di calcolatori. Il lavoro del bridge, allora, sta nell'esaminare
il destinatario di ciascuno dei pacchetti e decidere se tale pacchetto deve
essere ritrasmesso sull'altro segmento Ethernet oppure no. Il risultato
di questo lavoro &egrave; una rete pi&ugrave; veloce perch&eacute; si verificano meno
collisioni.</EM>
<HR>
<H2><A NAME="s1">1. Preparazione</A></H2>

<P>
<OL>
<LI>Ci si procuri il pacchetto ``Bridge Config'':
<BLOCKQUOTE><CODE>
<A HREF="ftp://shadow.cabi.net/pub/Linux/BRCFG.tgz">ftp://shadow.cabi.net/pub/Linux/BRCFG.tgz</A></CODE></BLOCKQUOTE>

</LI>
<LI>Ci si procuri e si legga il ``Multiple Ethernet'' HOWTO:
<BLOCKQUOTE><CODE>
<A HREF="ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/Multiple-Ethernet">ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/mini/Multiple-Ethernet</A></CODE></BLOCKQUOTE>

</LI>
<LI><P>Si abiliti la seconda interfaccia ethernet sulla propria macchina
aggiungendo questo al proprio <CODE>/etc/lilo.conf</CODE>,
e si reinvochi <CODE>lilo</CODE>:
<BLOCKQUOTE><CODE>
<PRE>
append = "ether=0,0,eth1"
        
</PRE>
</CODE></BLOCKQUOTE>

Se si hanno tre interfacce sul bridge, si usi questa riga al
posto della precedete:
<BLOCKQUOTE><CODE>
<PRE>
append = "ether=0,0,eth1 ether=0,0,eth2"
        
</PRE>
</CODE></BLOCKQUOTE>
<P>Si possono usare pi&ugrave; interfacce aggiungendo altre direttive
<CODE>ether</CODE>. Normalmente il kernel di Linux cerca solo una scheda
ethernet, e una volta che l'ha trovata smette di verificare
l'hardware installato. Le direttive <CODE>append</CODE> mostrate sopra
servono a dire al kernel di continuare a cercare schede ethernet
anche dopo che ne ha trovata una.
<P>In alternativa, si pu&ograve; usare il parametro di linea di comando
al momento del boot:
<BLOCKQUOTE><CODE>
<PRE>
linux ether=0,0,eth1
        
</PRE>
</CODE></BLOCKQUOTE>

Oppure, se si hanno 3 interfacce:
<BLOCKQUOTE><CODE>
<PRE>
linux ether=0,0,eth1 ether=0,0,eth2
        
</PRE>
</CODE></BLOCKQUOTE>
<P>
</LI>
<LI>Si ricompili il kernel attivando l'opzione ``<CODE>bridging</CODE>''.
</LI>
<LI>Un bridge non dovrebbe avere un indirizzo IP. Pu&ograve; averne uno,
ma un bridge che non svolga altri compiti non ne ha bisogno.
Per rimuovere l'indirizzo IP dal proprio bridge si vada a
vedere 
<CODE>/etc/sysconfig/network-scripts/</CODE> (l'esempio si
riferisce a un sistema RedHat) e si copi
<CODE>ifcfg-lo0</CODE> sopra a <CODE>ifcfg-eth0</CODE> e a
<CODE>ifcfg-eth1</CODE>.
In questi due file ``<CODE>eth</CODE>'', si cambi la riga che contiene
``<CODE>DEVICE=lo</CODE>'' in ``<CODE>DEVICE=eth0</CODE>''
e ``<CODE>DEVICE=eth1</CODE>''.
Altre distribuzioni hanno diversi script di configurazione, e
bisogna applicare modifiche equivalenti ai file appropriati.
Se il proprio bridge ha pi&ugrave; di due interfacce bisogna assicurarsi
di configurare allo stesso modo anche le altre interfacce.

</LI>
<LI>Si riavvii il sistema in modo da far girare il  nuovo kernel, quello
configurato per il bridging; bisogna anche assicurarsi che le
interfacce di rete non abbiano un indirizzo IP assegnato.
</LI>
<LI>Una volta che il sistema &egrave; attivo, si mettano le
schede ethernet in modo promiscuo, in modo che ricevano tutti
i pacchetti che vedono transitare sulla rete:
<BLOCKQUOTE><CODE>
<PRE>
ifconfig promisc eth0 ; ifconfig promisc eth1
        
</PRE>
</CODE></BLOCKQUOTE>

Devono essere messe in modo promiscuo tutte le interfacce
che sono connesse ai segmenti ethernet che si vuole collegare.
</LI>
<LI>Si attivi il ``bridging'' usando il programma <CODE>brcfg</CODE>:
<BLOCKQUOTE><CODE>
<PRE>
brcfg -ena
        
</PRE>
</CODE></BLOCKQUOTE>

</LI>
<LI>Si verifiche che il traffico di rete &egrave; diverso su ciascuna
interfaccia:
<BLOCKQUOTE><CODE>
<PRE>
tcpdump -i eth0      # in una finestra
tcpdump -i eth1      # in un'altra finestra
        
</PRE>
</CODE></BLOCKQUOTE>

</LI>
<LI>Si faccia girare uno ``sniffer'' o <CODE>tcpdump</CODE> su di un'altra
macchina per verificare che il bridge sta partizionando correttamente
la rete.</LI>
</OL>
<H2><A NAME="s2">2. Problemi tipici</A></H2>

<P>
<OL>
<LI>
<DL>
<DT><B>Domanda</B><DD><P>Ricevo il messaggio
<BLOCKQUOTE><CODE>
<PRE>
ioctl(SIOCGIFBR) failed: Package not installed
        
</PRE>
</CODE></BLOCKQUOTE>

Cosa significa?
<DT><B>Risposta</B><DD><P>Il proprio kernel non ha la capacit&agrave; di funzionare da
bridge. Ci si procuri un kernel versione 2.0 o maggiore
e lo si ricompili attivando l'opzione <EM>bridging</EM>.
</DL>

</LI>
<LI>
<DL>
<DT><B>Domanda</B><DD><P>Le macchina da una parte non riescono a raggiungere quelle dall'altra
parte.
<DT><B>Risposta</B><DD><P>
<UL>
<LI>&Egrave; stato abilitato il bridging invocando
``<CODE>brcfg -ena</CODE>''?
(<CODE>brcfg</CODE> dovrebbe dire ``<CODE>bridging is ENABLED</CODE>'')</LI>
<LI>Le due interfacce sono state messe in modo promiscuo?
(si invochi ``<CODE>ifconfig</CODE>'': la modalit&agrave;
``<CODE>PROMISC</CODE>'' dovrebbe risultare attiva per
entrambe le interfacce).</LI>
<LI>Se si usano delle schede di rete a funzionalit&agrave;
multipla (BNC/TP), ci si assicuri di avere abilitato
quella corretta. Occorrer&agrave; usare il programma
di setup che viene fornito insieme con la scheda.</LI>
</UL>
</DL>

</LI>
<LI>
<DL>
<DT><B>Domanda</B><DD><P>Non posso fare <CODE>telnet</CODE> n&egrave; <CODE>ftp</CODE> dal
bridge. Perch&eacute;?
<DT><B>Risposta</B><DD><P>Questo perch&eacute; il bridge non ha un indirizzo IP. Un bridge &egrave;
un pezzo di rete che risulta trasparente al resto della rete.
</DL>

</LI>
<LI>
<DL>
<DT><B>Domanda</B><DD><P>Cosa devo fare per predisporre l'instradamento?
<DT><B>Risposta</B><DD><P>Nulla!
Tutte le problematiche di instradamento sono gestite dal
codice del kernel che si occupa del ``bridging''.
Per vedere come il brisge impara l'instradamento dei vari indirizzi
ethernet si usi il comando <CODE>brcfg</CODE> in modalit&agrave; debug:
<BLOCKQUOTE><CODE>
<PRE>
brcfg -deb
        
</PRE>
</CODE></BLOCKQUOTE>
</DL>

</LI>
<LI>
<DL>
<DT><B>Domanda</B><DD><P>Sembra che il bridge funzioni, ma perch&eacute; il comando ``traceroute''
non lo mostra come parte del cammino dei pacchetti?
<DT><B>Risposta</B><DD><P>Per la natura del bridge, un ``traceroute'' NON dovrebbe
mostrare il bridge stesso nel cammino dei pacchetti. Il bridge
dovrebbe essere un componente trasparente della rete.
</DL>

</LI>
<LI>
<DL>
<DT><B>Domanda</B><DD><P>Occorre abilitare <CODE>IP_FORWARD</CODE> quando si compila il kernel?
<DT><B>Risposta</B><DD><P>No. Il codice del kernel che si occupa del bridging si occupa
del trasporto dei pacchetti indipendentemente da <CODE>IP_FORWARD</CODE>.
<CODE>IP_FORWARD</CODE> occorre per i gateway che hanno indirizzi
IP validi associati alle loro interfacce.
</DL>

</LI>
<LI>
<DL>
<DT><B>Domanda</B><DD><P>Perch&eacute; secondo il programma ``<CODE>brcfg</CODE>'' gli indirizzi hardware
delle due porte ethernet sono uguali? Non dovrebbero essere differenti?
<DT><B>Risposta</B><DD><P>No. Per come funziona il bridging, tutte le porte di un bridge
hanno lo stesso indirizzo ethernet fisico.
</DL>

</LI>
<LI>
<DL>
<DT><B>Domanda</B><DD><P>Il bridging non appare tra le opzioni di compilazione del kernel,
come faccio ad abilitarlo?
<DT><B>Risposta</B><DD><P>Durante la configurazione del kernel, si risponda Y alla domanda
``Prompt for
development and/or incomplete code/drivers (CONFIG_EXPERIMENTAL) 
[Y/n/?]''.
</DL>

</LI>
<LI>
<DL>
<DT><B>Domanda</B><DD><P>So che avere troppi hub (4 o pi&ugrave;) in catena sulla stessa ethernet
crea dei problemi di temporizzazione. Che effetto ha un bridge su
una rete che contiene altri hub?
<DT><B>Risposta</B><DD><P>Un bridge non &egrave; un hub, e la regola dei 4 hub va applicata a ciascun
segmento ethernet collegato al bridge. Un bridge non contribuisce
ai problemi di tempo nella trasmissione dei pacchetti.
</DL>

</LI>
<LI>
<DL>
<DT><B>Domanda</B><DD><P>&Egrave; possibile interfacciare con un bridge segmenti ethernet da 10Mb
e da 100Mb? Una configurazione del genere non rallenta il resto
del traffico sul lato ad alta velocit&agrave; della rete?
<DT><B>Risposta</B><DD><P>Si, &egrave; possibile collegare con un bridge un segmento da 10Mb con
un segmento da 100Mb. Finch&eacute; la scheda di rete del bridge collegata
con la rete veloce &egrave; in grado di portare 100Mb, TCP si preoccuper&agrave;
del resto. Anche se &egrave; vero che la comunicazione tra un calcolatore
collegato a 100Mb e uno collegato a 10Mb avverr&agrave; solo a 10Mb, il
resto del traffico sulla rete ad alta velocit&agrave; non viene rallentato
dalla presenza del bridge.
</DL>
</LI>
</OL>
</BODY>
</HTML>