Questa è la configurazione software necessaria sul computer che farà da bridge, secondo quanto descritto nella sezione Terreno di prova.
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
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
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
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
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.
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???
[...]