Avanti Indietro Indice

2. Software necessario

Questa è la configurazione software necessaria sul computer che farà da bridge, secondo quanto descritto nella sezione Terreno di prova.

2.1 Caratteristiche del kernel Linux

L'uso del kernel 2.6 non è ancora una buona idea. Sì, è strano. Il perchè e dove il codice di bridging non funzioni non è ancora saltato fuori. Non è raccomandato utilizzare questa serie. Si ha la soluzione? Si sia certi di poterlo dimostrare e la si invii per e-mail a me (l'indirizzo è nella pagina introduttiva). Si vedano anche le Note sul Kernel per le informazioni aggiuntive. Intanto si usino kernel della serie 2.4.

A partire dalla versione 2.4.18 del kernel, il supporto per l'Ethernet Bridge è già presente. Non è necessaria alcuna patch. A proposito delle versioni più recenti del kernel, bisogna precisare che la versione 2.4.23 è la meno raccomandabile, in particolar modo se usata insieme a ebtables e netfilter-bridging. Sono raccomandate versioni più recenti.
Il paragrafo che segue è sorpassato (12-07-2005) poichè tutto quello di cui si necessita è disponibile nel kernel. Lo si può tranquillamente saltare, viene mantenuto solo per ragioni storiche:
Se si ha intenzione di usare le risorse netfilter, perché si vuole eseguire iptables sul nuovo router/firewall Linux, si rende necessario applicare una patch. Le patch possono essere scaricate dalla homepage del progetto Ethernet Bridge su sourceforge.

root@bridge:~> cd /usr/src/
root@bridge:~> wget -c http://bridge.sourceforge.net/devel/bridge-nf/bridge-nf-0.0.7-against-2.4.18.diff
root@bridge:~> cd /usr/src/linux/
root@bridge:~> patch -p1 -i ../bridge-nf/bridge-nf-0.0.7-against-2.4.18.diff
        

Supponendo di voler utilizzare netfilter sull'interfaccia bridge e di aver già applicato la patch al kernel, si dovranno ora attivare alcune opzioni di configurazione di quest'ultimo. Per i dettagli su come realizzare la propria immagine del kernel si veda CD-Net-Install-HOWTO, Toolbox. Ah si, è ancora solo in tedesco. Ehm, dovrei metterlo a posto un giorno di questi, ma mi manca il tempo... Qualche volontario? (questo mortale silenzio è assordante.. ;)

Per ora, in ogni caso: In

        Code maturity level options
        
si attivi
        [*] Prompt for development and/or incomplete code/drivers
        
e in
        Loadable module support
        
        [*] Enable loadable module support
        [*]   Set version information on all module symbols
        [*]   Kernel module loader
        
Ok, per ora tutto bene. Quindi in
        Networking options
        
si abiliterà
        [*] Network packet filtering (replaces ipchains)
        [ ]   Network packet filtering debugging
        
Nota:

In precedenza, la suindicata opzione di debugging era selezionata. Per ora, a meno che non si voglia che la propria partizione /var/log/ venga riempita in breve tempo, la si disattivi.
Se viene attivata, nel dmesg appariranno centinaia di messaggi in /var/log/{kern.log,debug,syslog,messages}simili al seguente:

skb: pf=2 (unowned) dev=br0 len=52
PROTO=6 156.136.32.121:3709 192.168.101.2:112 L=52 S=0x00 I=35470 F=0x4000 T=51
nf_hook: hook 1 already set.
skb: pf=2 (unowned) dev=br0 len=52
PROTO=6 156.136.32.121:3709 192.168.101.2:112 L=52 S=0x00 I=35470 F=0x4000 T=51
nf_hook: hook 0 already set.
skb: pf=2 (unowned) dev=br0 len=52
PROTO=6 192.168.101.11:2828 192.168.101.2:202 L=52 S=0x10 I=63 F=0x4000 T=64
nf_hook: hook 1 already set.
skb: pf=2 (unowned) dev=br0 len=52
PROTO=6 192.168.101.11:2828 192.168.101.2:202 L=52 S=0x10 I=63 F=0x4000 T=64
nf_hook: hook 3 already set.
skb: pf=7 (owned) dev=eth1 len=1500
        

Poi in

          IP: Netfilter Configuration  --->
        
si selezionerà tutto quello di cui si necessita come modulo. Ed ora il campo tanto atteso: attivare
        <M> 802.1d Ethernet Bridging
        
insieme a
        [*]   netfilter (firewalling) support
        
Nota:

La precedente opzione sarà presente solo se è stata applicata con successo la patch al kernel!

Infine si ha semplicemente bisogno di eseguire:

root@bridge:~> make dep clean bzImage modules modules_install
        

se il comando và a buon fine, tutto è a posto. Non ci si dimentichi di cambiare /etc/lilo.conf e di rilanciare

root@bridge:~> lilo -t
root@bridge:~> lilo
root@bridge:~> reboot
        

Suggerimento:

Si vuole evidenziare il nuovo kernel come bridge kernel? Si apra in un editor il Makefile che si trova nella directory dei sorgenti del kernel e si modifichi la linea di intestazione chiamata EXTRAVERSION =. Si potrebbe modificarla in, magari, bridge? ;-) Dopo il modules_install i nuovi moduli saranno in /lib/modules/2.4.18bridge
Per gli utenti debian (si usi eventualmente prima export PATCH_THE_KERNEL=YES e --added_patches your_patches con make-kpkg):

root@bridge:~> make-kpkg --revision=tf.1.0 kernel_image
          

2.2 Strumento spazio utente: brctl

Ora che il kernel è configurato con il supporto per l'Ethernet Bridge e netfilter, si prepara lo strumento spazio utente brctl. Questo è lo strumento da utilizzare per configurare quanto necesario.

Si scarichi il tarball del sorgente, si decomprima e ci si posizioni nella directory appropriata.

root@bridge:~> wget -c http://bridge.sourceforge.net/bridge-utils/bridge-utils-0.9.5.tar.gz
root@bridge:~> tar xvzf bridge-utils-0.9.5.tar.gz
root@bridge:~> cd bridge-utils-0.9.5
        
Si consultino il file README e quanto presente nella sottodirectory doc/. Quindi si compili con un semplice make e si copi il risultante eseguibile brctl/brctl in /sbin/.
root@bridge:~> make
root@bridge:~> cp -vi brctl/brctl /sbin/
        
Questo è tutto. Si può procedere con la Configurazione.

2.3 Note sul Kernel

Sintomo: Durante la configurazione funziona tutto, ma i pacchetti non attraversano più le interfacce del bridge come succedeva con il kernel 2.4.
ipuk s (qasuari_ @ _yahoo.com) scrive (più o meno a giugno 2005):

[...]
Compilo il mio kernel dal 2.4.18-14 al 2.6.0 e attivo
bridge-netfilter&ebtables.
Dopo la compilazione, non riesco a pingare da un host verso l'interfaccia della linux box.
La linux box ha semplicemente un interfaccia.Cosa ho sbagliato nella compilazione???
[...]
        


Avanti Indietro Indice