È necessario che il sistema riconosca il bridge. A questo proposito, prima di tutto deve essere indicato che si vuole un'interfaccia bridge Si veda Terreno di prova).
root@bridge:~> brctl addbr br0
Secondo, non si ha bisogno di STP (Spanning Tree Protocol). Nell'esempio
proposto c'è un unico router, quindi un loop è molto
improbabile. Si può quindi disabilitare questa funzionalità.
(La rete risulterà anche meno congestionata):
root@bridge:~> brctl stp br0 off
Dopo questi preparativi, si possono finalmente eseguire i comandi effettivi. Si
aggiungeranno le due (o più) interfacce fisiche, ciò significa
che verranno associate all'interfaccia logica (virtuale) del bridge br0
appena creata.
root@bridge:~> brctl addif br0 eth0
root@bridge:~> brctl addif br0 eth1
Molte persone mi hanno inviato email dicendo che li avrebbe aiutati
parecchio se fossi stato più esaustivo e chiaro sul rischio di
essere tagliati fuori.
Per cui a questo punto si faccia attenzione ai miei ammonimenti:
Se si sta leggendo questo, si è ad un (piccolo) passo dall'essere
_isolati__ dalla macchina che si sta trasformando in un bridging device.
Se vi piace vivere al limite del dissanguamento è il momento giusto
per tirare fuori la cassetta del pronto soccorso. Ne avrete veramente bisogno.
Se non avete l'accesso fisico e nessuno alla vostra portata lo ha:
NON PROCEDERE A MENO CHE LE VOSTRE DITA NON ABBIANO LASCIATO LA TASTIERA CHE
AVETE DI FRONTE E I VOSTRI OCCHI NON SIANO CONCENTRATI SU ALTRO CHE NON SIA LA CONSOLE
SU CUI STATE LAVORANDO.
Ora siete stati avvisati. Non mi assumo nessuna responsabilità.
root@bridge:~> ifconfig eth0 down
root@bridge:~> ifconfig eth1 down
root@bridge:~> ifconfig eth0 0.0.0.0 up
root@bridge:~> ifconfig eth1 0.0.0.0 up
Grande! Ora abbiamo una linux box senza IP. Dunque se hai intenzione di
configurare il tuo futuro firewall/router via TP, usa la tua console locale
;-)) Ne possiedi una seriale ? Buon per te :-)Si può associare alla nuova interfaccia logica un IP in questo modo:
root@bridge:~> ifconfig br0 10.0.3.129 up
Nel caso in cui si intenda configurare un gateway si dovrà abilitare l'inoltro (forwarding) nel kernel.
root@bridge:~> echo "1" > /proc/sys/net/ipv4/ip_forward
La macchina possiede già un IP, ma non una route di default. Si
imposta con
root@bridge:~> route add default gw 10.0.3.129
Alla fine si dovrebbe avere una rete funzionante da, verso e attraverso il
gateway.
Meglio detto come: dobbiamo rendere le modifche permanenti al riavvio.
Per ottenere questo, è necessario qualche tipo di script di shell messo
nell'appropriata directory di boot-up: /etc/init.d/
In seconda battuta, bisogna creare un link nella propria directory di runlevel.
La directory giusta dipende dal proprio gusto e ovviamente dalla distribuzione Linux in uso.
I valori di runlevel più comuni sulle workstation, sono: 2
, 3
e 5
.
Degli esempi sono: /etc/rc?.d/
(sostuire il ? con il giusto runlevel)
Inoltre, bisogna farsi un idea di quando le proprie interfacce di rete devono essere attivate.
Per ora si assume che le interfacce sono attivate alla priorità di sistema
S
per cui non dobbiamo tenerne conto.
Se si ha la necessità di conoscere con esattezza il momento, si guardi in /etc/rcS.d/
.
Si vuole semplicemente che il bridge sia attivo il prima possibile per cui si imposta la priorità a
10
. (Ci si assicuri che nessun servizio che richiede i dispositivi di bridging
parta primai, che abbia cioè valore di priorità inferiore a 10
)
Per ora si assume che il proprio runlevel è 5
:
root@bridge:~> mv -i bridge.sh /etc/init.d/
root@bridge:~> cd /etc/rc5.d/
root@bridge:~> ln -s ../init.d/bridge.sh S10bridge.sh
Di solito, tutte le distribuzioni forniscono qualche tipo di runlevel-checker o
strumento equivalente che assiste nel noioso lavoro di amministrare i link di runlevel.
Si consulti la documentazione della propria distribuzione su questo.
#!/bin/bash
PATH="/sbin:/usr/sbin:/usr/local/sbin";
slaveIfs="1 2 3 4 6 7 8 9 10";
cmd="$1";
[ -z "$cmd" ] && cmd="start";
case "$cmd" in
start)
brctl addbr br0;
brctl stp br0 on;
brctl addif br0 eth0;
brctl addif br0 eth1;
(ifdown eth0 1>/dev/null 2>&1;);
(ifdown eth1 1>/dev/null 2>&1;);
ifconfig eth0 0.0.0.0 up;
ifconfig eth1 0.0.0.0 up;
ifconfig br0 10.0.3.129 broadcast 10.0.3.255 netmask 255.255.255.0 up ### Adapt to your needs.
route add default gw 10.0.3.129; ### Adapt to your needs.
for file in br0 eth0 eth1;
do
echo "1" > /proc/sys/net/ipv4/conf/${file}/proxy_arp;
echo "1" > /proc/sys/net/ipv4/conf/${file}/forwarding;
done;
echo "1" > /proc/sys/net/ipv4/ip_forward;
;;
stop)
brctl delif br0 eth0;
brctl delif br0 eth1;
ifconfig br0 down;
brctl delbr br0;
#ifup eth0; ### Adapt to your needs.
#ifup eth1; ### Adapt to your needs.
;;
restart,reload)
$0 stop;
sleep 3;
$0 start;
;;
esac;
E si, lo si renda eseguibile..
root@bridge:~> chmod 700 /etc/init.d/bridge.sh
Dopo di questo, ci si assicuri che il bridge sopravviva a riavvii inattesi.
È come per i backup: bisogna provarli prima che diventino necessari.