Avanti Indietro Indice

3. Configurare Linux

3.1 Configurare il bridge

È 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
        
Nota Importante:

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à.

Ora, le due interfacce fisiche sono diventate un'unica porta logica del bridge. Ehm, ok, avevamo ed avremo sempre due interfacce fisiche. Sono sempre lì, controllate ;-) Ma ora sono parte di un dispositivo bridge logico e quindi non c'è bisogno di alcuna assegnazione di IP. Dunque si possono rilasciare gli indirizzi:
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 :-)
Optional:

Si può associare alla nuova interfaccia logica un IP in questo modo:

root@bridge:~> ifconfig br0 10.0.3.129 up
        


Si confronti la sezione Note Importanti!

3.2 Configurare l'instradamento

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.

3.3 Facciamolo succedere di nuovo!

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.
Suggerimento: debian ha update-rc.d, redhat e successori hanno chkconfig. Infine, anche SuSE ha il suo (il nome del quale non riesco a ricordare facilmente..).
Curiosità sul contenuto di bridge.sh? ;-)
#!/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.


Avanti Indietro Indice