Questa piccola guida spiega come impostare su un pc con due schede di rete un bridge tra queste ultime.
Facciamo un esempio io ho un notebook, che chiamo N, e mi connetto ad internet tramite un router adsl , che chiamo R.
Risulterebbe uno schema così:
[N][R]------>internet
Ora io voglio inserire nel mezzo un secondo PC, che chiamo F . Se avessi voluto usare un secondo pc per collegarmi ad internet lo avrei potuto collegare direttamente al router o magari usare uno switch, ma io voglio proprio che questo pc faccia da filtro per il mio portatile. quindi o schema sarebbe :
[N][F][R]----->internet
Il mio pc F quindi dovrà avere 2 schede ethernet e quindi 2 interfacce, che chiameremo eth0 ed eth1.
Ecco il bridge, letteralmente ponte, che andremo a creare servirà proprio a far fluire i dati in modo trasparente tra queste 2 interfacce.
Incominciamo installando il software necessario:
sudo apt-get install bridge-utils
dopo di che potremo verificare la funzionalità del comando brctl:
$sudo brctl
commands:
addbr add bridge
delbr delete bridge
addif add interface to bridge
delif delete interface from bridge
setageing set ageing time
setbridgeprio set bridge priority
setfd set bridge forward delay
sethello set hello time
setmaxage set max message age
setpathcost set path cost
setportprio set port priority
show show a list of bridges
showmacs show a list of mac addrs
showstp show bridge stp info
stp {on|off} turn stp on/off
I comandi che ci interessano sono principalmente 2 : addbr, per creare il ponte, e addif per aggiungervi le interfacce.
Crea il ponte br0
$sudo brctl addbr br0
Aggiungi le interfacce Ethernet da usare nel ponte
$sudo brctl addif br0 eth0
$sudo brctl addif br0 eth1
Configura le interfacce Ethernet
$sudo ifconfig eth0 0.0.0.0
$sudo ifconfig eth1 0.0.0.0
$sudo ifconfig br0 up
Ora il ponte è creato e si può usare, per verificare ciò basta fare un ping dal portatile verso il router, se risponde vuol dire che tutto è andato bene, nel caso ci fossero problemi provate a riavviare i servizi di networking col comando :
$sudo /etc/init.d/networking restart
Ora pero se volessimo utilizzare internet dal pc F sarebbe impossibile perché il ponte non ha un indirizzo così come le altre interfacce e manca anche il gateway. quindi ci serviranno altri pochi comandi:
$sudo route add default gateway 192.168.1.254
con questo comando imposto come gateway il router R col quale mi connetto ad internet, naturalmente questo ip nel vostro caso potrebbe essere diverso, comunque se voi siete in grado di navigare in internet col portatile...beh allora guardate li come è impostato il gateway e poi copiate l'ip col comando precedente.
Non abbiamo ancora assegnato un IP al nostro bridge, quindi se vogliamo impostare l'assegnazione automatica dell'indirizzo ip usiamo:
$sudo dhclient br0
Con questo comando, infatti, imposto la configurazione ip dinamica sul ponte, che gli verrà assegnata dal router R come avviene anche per il portatile.
Se invece vogliamo assegnargli subito un indirizzo statico allora useremo:
$sudo ifconfig br0 192.168.1.32
Con questo si conclude la guida, e nel caso vogliate ripristinare le condizioni iniziali:
$sudo ifconfig br0 down
$sudo brctl delbr br0
cioè elimino l'interfaccia virtuale e distruggo il ponte rilasciando le 2 interfacce.
Nel caso voleste rendere le cose permanenti...dato che al riavvio perdereste tutto, potrete procedere in 2 modi:
- Fare uno script contenente tutte le istruzioni elencate sopra e farlo eseguire all'avvio del pc
- Modificare il file /etc/network/interfaces in maniera tale da far avviare il servizio di rete come ci fa comodo
Entrambe sono valide soluzioni ma la seconda è veramente semplice infatti modificando il file :
$sudo nano /etc/network/interfaces
e inserendo questo
auto lo
iface lo inet loopback
auto br0
iface br0 inet dhcp
bridge_ports eth0 eth1
iface eth0 inet static
address 0.0.0.0
iface eth1 inet static
address 0.0.0.0
cancellate il resto oppure commentatelo con degli "#" all'inizio di ogni riga
dopo di che salvate il file e riavviate il servizio di rete
$sudo /etc/inidìt.d/networking restart
così avete risolto.
Per configurazioni più complicate vi riporto qualche esempio:
iface br0 inet manual
bridge_ports eth1 eth2
bridge_maxwait 0
Con questa avete impostato un bridge anonimo e trasparente senza assegnare alcun ip.
auto br0
iface br0 inet static
address 192.168.1.2
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
bridge_ports all
con questa avete impostato un ip statico.
Se volessimo far eseguire un comando prima o dopo che l'interfaccia venga attivata dal servizio di rete useremo i comandi pre-up e post-up :
auto br0
iface br0 inet static
address 192.168.1.2
network 192.168.1.0
netmask 255.255.255.0
broadcast 192.168.1.255
bridge_ports all
pre-up iwconfig wlan0 mode master essid myESSID
Così, se come interfaccia avessi una scheda wifi che fa da access point , verrebbe impostata insieme al ponte senza ulteriori script.





