Ethernet Bridging

Da Guide@Debianizzati.Org.

(Differenze fra le revisioni)
m (Creazione di un ponte permanente)
 
(29 revisioni intermedie non mostrate.)
Riga 1: Riga 1:
-
{{Versioni compatibili|Lenny|Squeeze|Wheezy|}}
+
{{Versioni compatibili}}{{Gateway-Router}}
== Introduzione ==
== Introduzione ==
-
Un bridge, o ponte, con schede di rete può avere svariate finalità e motivazioni. Per quanto riguarda questa guida ci si limiterà al semplice caso di due schede di rete "collegate" al fine di emulare uno switch.
+
Un bridge, o ponte, con schede di rete può avere svariate finalità e motivazioni. Alcuni esempi:
 +
* '''condividere la connessione''' di una macchina con una o più macchine virtuali in esecuzione su di essa, in modo che ciascuna macchina virtuale possa usare indirizzi IP appartenenti alla stessa subnet della propria LAN (ad esempio 192.168.1.0/24);
 +
* '''emulare uno switch''', per cui un computer dotato di due o più schede di rete fa da nodo di giunzione tra due o più parti della stessa LAN (stessa subnet, ad esempio 192.168.1.0/24);
 +
* '''emulare un access point''', caso simile al precedente, ma in cui è coinvolta almeno un interfaccia wireless.
-
Perché emulare uno switch invece che utilizzarne uno vero e proprio complicandosi così la vita? Perché per esempio si ha a disposizione un computer sempre acceso ed un paio di schede di rete.
+
{{Box|CONVENZIONI sugli indirizzi IP|
-
Nel mio caso specifico si tratta di un piccolo server collocato in un locale usato poco di frequente ed in cui arriva un singolo cavo di rete; al fine di rendere disponibile il collegamento ad internet anche per PC portatili eventualmente presenti nel medesimo locale la soluzione bridge di rete mi ha permesso di evitare l'acquisto di uno switch. In sintesi in una scheda di rete ho collegato il cavo della mia LAN e nell'altro un cavo connesso ad un access point wireless; quest'ultimo viene collegato solo quando necessario.
+
* Formato indirizzi IPv4.
 +
* Classe di indirizzi IP scelta ''192.168.0.0/16'', ma si tratta evidentemente di una scelta del tutto arbitraria, nulla vieterebbe infatti di usare la classe ''172.16.0.0/12'' o la ''10.0.0.0/8''.
 +
* Per indicare dei valori arbitrari all'interno degli indirizzi IP saranno usate lettere dell'alfabeto, come '''X''', '''Y''' e '''Z''', tuttavia si tenga sempre presente che tali valori devono essere interi e compresi nell'intervallo [0,254]. }}
== Installazione ==
== Installazione ==
-
Per creare il suddetto ponte ho usato l'applicativo ''bridge-utils''
+
Nelle versioni recenti di debian non è necessario installare alcun applicativo aggiuntivo, infatti i comandi per creare un bridge di rete sono già disponibili in [[Iproute2]], tuttavia per rendere permanente la configurazione di un bridge attraverso <code>interfaces</code> la suite storica <code>bridge-utils</code> può risultare più comoda.<br>
 +
Per installarla
-
<pre># apt-get install bridge-utils</pre>
+
<pre># apt install bridge-utils</pre>
{{ Warningbox | in linea generale si sconsiglia di configurare un bridge di rete da remoto, poiché è possibile perdere la connessione col computer prima di aver eseguito tutti i comandi. Non è possibile configurare più di un bridge direte per computer.}}
{{ Warningbox | in linea generale si sconsiglia di configurare un bridge di rete da remoto, poiché è possibile perdere la connessione col computer prima di aver eseguito tutti i comandi. Non è possibile configurare più di un bridge direte per computer.}}
-
== Creazione di un ponte temporaneo ==
+
== Emulazione di uno switch ==
-
Posto di avere due schede di rete ''eth0'' e ''eth1'' digitare da terminale i seguenti comandi:
+
Perché emulare uno switch invece che utilizzarne uno vero e proprio complicandosi così la vita? Perché per esempio si ha a disposizione un computer sempre acceso ed un paio di schede di rete.<br/>
 +
Nel mio caso specifico si tratta di un piccolo server collocato in un locale usato poco di frequente ed in cui arriva un singolo cavo di rete; al fine di rendere disponibile il collegamento ad internet anche per PC portatili eventualmente presenti nel medesimo locale la soluzione bridge di rete mi ha permesso di evitare l'acquisto di uno switch. In sintesi in una scheda di rete ho collegato il cavo della mia LAN e nell'altro un cavo connesso ad un access point wireless; quest'ultimo viene collegato solo quando necessario.<br/>
 +
 
 +
=== Creazione di un ponte temporaneo ===
 +
 
 +
'''IPOTESI''': si vogliono unire in un bridge due schede di rete ''eth0'' e ''eth1''.
 +
 
 +
==== Con iproute2 ====
 +
 
 +
Creazione ed attivazione dell'interfaccia bridge:
 +
<pre>
 +
# ip link add name br0 type bridge
 +
# ip link set dev br0 up
 +
</pre>
 +
Prima di procedere all'aggiunta di <code>eth0</code> ed <code>eth1</code> assicurarsi che queste non abbiano indirizzi IP configurati
 +
<pre>
 +
# ip address flush dev eth0 scope global
 +
# ip address flush dev eth1 scope global
 +
</pre>
 +
Aggiunta delle interfacce
 +
<pre>
 +
# ip link set dev eth0 master br0
 +
# ip link set dev eth1 master br0
 +
</pre>
 +
Assegnazione indirizzo di rete al bridge
 +
<pre># ip address add 192.168.1.37/24 dev br0</pre>
 +
Visualizzare informazioni sul ponte appena creato
 +
<pre>
 +
ip addr list br0
 +
bridge link
 +
</pre>
 +
Per rimuovere l'interfaccia bridge appena creata rimuovere prima le interfacce <code>eth0</code> ed <code>eth1</code>
 +
<pre>
 +
# ip link set dev eth0 nomaster
 +
# ip link set dev eth1 nomaster
 +
</pre>
 +
quindi eliminare l'interfaccia bridge vera e propria
 +
<pre># ip link del br0</pre>
 +
e riconfigurare opportunamente le interfacce <code>eth0</code> ed <code>eth1</code>.
 +
 
 +
==== Storico con bridge utils ====
<pre>
<pre>
# ifconfig eth0 0.0.0.0
# ifconfig eth0 0.0.0.0
# ifconfig eth1 0.0.0.0
# ifconfig eth1 0.0.0.0
-
# brctl addbr ponte
+
# brctl addbr br0
-
# brctl addif ponte eth0
+
# brctl addif br0 eth0
-
# brctl addif ponte eth1
+
# brctl addif br0 eth1
</pre>
</pre>
-
Le prime due righe servono a "deconfigurare" le interfacce ''eth0'' e ''eth1'', la terza crea l'interfaccia virtuale di nome ''ponte'' e le ultime due specificano le interfacce fisiche che comporranno quella virtuale di nome ''ponte''.
+
Le prime due righe servono a "deconfigurare" le interfacce ''eth0'' e ''eth1'', la terza crea l'interfaccia virtuale di nome ''br0'' e le ultime due specificano le interfacce fisiche che comporranno quella virtuale di nome ''br0''.<br/>
-
A questo punto se lo si desidera è possibile configurare l'interfaccia virtuale ''ponte'' come se fosse una normalissima interfaccia fisica. Si noti che evitando di configurare l'interfaccia ''ponte'' il computer risulterà irraggiungibile dalla propria LAN, pur permettendo le connessioni da parte di tutti gli altri dispositivi di rete.
+
A questo punto se lo si desidera è possibile configurare l'interfaccia virtuale ''br0'' come se fosse una normalissima interfaccia fisica. Si noti che evitando di configurare l'interfaccia ''br0'' il computer risulterà irraggiungibile dalla propria LAN, pur permettendo le connessioni da parte di tutti gli altri dispositivi di rete.
Per una configurazione statica digitare qualcosa del tipo:
Per una configurazione statica digitare qualcosa del tipo:
<pre>
<pre>
-
# ifconfig ponte 192.168.X.Y netmask 255.255.255.0
+
# ifconfig br0 192.168.X.Y netmask 255.255.255.0
# route add default gateway 192.168.X.Z
# route add default gateway 192.168.X.Z
</pre>
</pre>
Riga 40: Riga 86:
Per una configurazione dinamica invece:
Per una configurazione dinamica invece:
-
<pre># dhclient ponte</pre>
+
<pre># dhclient br0</pre>
-
A prescindere che l'interfaccia ''ponte'' sia stata o meno configurata deve essere attivata col comando:
+
A prescindere che l'interfaccia ''br0'' sia stata o meno configurata deve essere attivata col comando:
-
<pre># ifconfig ponte up</pre>
+
<pre># ifconfig br0 up</pre>
-
Per distruggere il ''ponte'' appena creato:
+
Per distruggere il ''br0'' appena creato:
<pre>
<pre>
-
# ifconfig ponte down
+
# ifconfig br0 down
-
# brctl delbr ponte0
+
# brctl delbr br0
</pre>
</pre>
-
== Creazione di un ponte permanente ==
+
=== Creazione di un ponte permanente ===
 +
==== Storico con bridge utils ====
Editare il file <code>/etc/network/interfaces</code> digitando per esempio:
Editare il file <code>/etc/network/interfaces</code> digitando per esempio:
Riga 64: Riga 111:
<pre>
<pre>
-
auto ponte
+
auto br0
-
iface ponte inet dhcp
+
iface br0 inet dhcp
bridge_ports eth0 eth1
bridge_ports eth0 eth1
iface eth0 inet static
iface eth0 inet static
Riga 76: Riga 123:
<pre>
<pre>
-
auto ponte
+
auto br0
-
iface ponte inet static
+
    iface br0 inet static
-
address 192.168.X.Y
+
    address 192.168.X.Y
-
netmask 255.255.255.0
+
    netmask 255.255.255.0
-
network 192.168.X.0
+
    network 192.168.X.0
-
broadcast 192.168.0.255
+
    broadcast 192.168.0.255
-
gateway 192.168.X.Z
+
    gateway 192.168.X.Z
-
bridge_ports eth0 eth1
+
    bridge_ports eth0 eth1
 +
    bridge_fd 9
 +
    bridge_hello 2
 +
    bridge_maxage 12
 +
    bridge_stp on
 +
    bridge_maxwait 0
</pre>
</pre>
-
dove '''X''' e '''Y''' sono variabili che possono assumere valori interi compresi nell'intervallo [0,254]. Per rendere operativo il ponte digitare:
+
Per rendere operativo il ponte digitare:
<pre># /etc/init.d/networking restart</pre>
<pre># /etc/init.d/networking restart</pre>
Riga 92: Riga 144:
o eventualmente riavviare il computer.
o eventualmente riavviare il computer.
-
Qualora si volesse impostare insieme al ponte e senza ulteriori script una scheda wifi che facesse da access point (sempre che sia presente nel computer ovviamente) sarebbe sufficiente aggiungere in coda alle precedenti due configurazioni la seguente riga (opzione da me non testata):
+
== Emulazione di un access point ==
-
<pre>pre-up iwconfig wlan0 mode master essid ''myESSID''</pre>
+
Dal punto di vista della configurazione del bridge di rete non cambia praticamente nulla rispetto al caso dello switch, si tratta solo di aggiungere la propria interfaccia wireless al bridge di rete. Prendendo infatti ad esempio le configurazioni indicate nella precedente sezione si tratterebbe di modificare la riga <code>bridge_ports eth0 eth1</code> in <code>bridge_ports eth0 wlan0</code>, oppure <code>bridge_ports eth0 eth1 wlan0</code> se la macchina è dotata di due interfacce di rete a filo e di una senza fili.<br>
 +
Il punto critico è invece la configurazione dell'interfaccia wireless stessa, che per poter essere aggiunta ad un bridge '''DEVE''' funzionare come access point, ovvero essere impostata in modalità master invece che managed (la modalità predefinita).
 +
{{Box|Nota|Non è scontato che un dispositivo wireless supporti la modalità master, si veda a tal proposito quanto scritto nel paragrafo "Configurazione" della guida [[Wireless Access Point (WAP) personalizzato]]}}
 +
 +
=== ''iwconfig'' ===
 +
Per i dispositivi wireless molto vecchi, ovvero che possono essere configurati tramite <code>iwconfig</code>, e nel caso di comunicazioni in chiaro, dovrebbe essere sufficiente, oltre alla modifica già indicata, aggiungere in coda alle configurazioni d'esempio la seguente riga (opzione da me non testata):
 +
<pre>pre-up iwconfig wlan0 mode master essid myESSID</pre>
dove ''wlan0'' andrebbe sostituito col nome del proprio dispositivo di rete e ''myESSID'' con l'SSID della propria rete wireless.
dove ''wlan0'' andrebbe sostituito col nome del proprio dispositivo di rete e ''myESSID'' con l'SSID della propria rete wireless.
 +
In sintesi nel caso statico si avrebbe:
 +
<pre>
 +
auto br0
 +
    iface br0 inet static
 +
    address 192.168.X.Y
 +
    netmask 255.255.255.0
 +
    network 192.168.X.0
 +
    broadcast 192.168.X.255
 +
    gateway 192.168.X.Z
 +
    bridge_ports eth0 wlan0
 +
    bridge_fd 9
 +
    bridge_hello 2
 +
    bridge_maxage 12
 +
    bridge_stp on
 +
    bridge_maxwait 0
 +
    pre-up iwconfig wlan0 mode master essid myESSID
 +
</pre>
-
== Riferimenti Esterni ==
+
=== ''iw'' e ''hostapd'' ===
 +
Nel caso invece si abbia necessità di criptare le comunicazioni wireless e/o si utilizzi un dispositivo recente, oltre ad aggiungere la propria interfaccia wireless al bridge di rete (come indicato nell'esempio dedicato ad ''iwconfig'') è necessario anche installare e configurare <code>hostapd</code>, descritto nella guida [[Wireless Access Point (WAP) personalizzato]], cui si rimanda.
-
* [http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge Guida] Linux Foundation.
+
== Approfondimenti ==
-
* [http://www.compago.it/index.php/manuali/34-linux/125-come-impostare-un-bridge-tra-due-schede-di-rete-su-ubuntu Guida] compago.
+
 +
=== Manpages ===
 +
* <code>man bridge-utils-interfaces</code>
-
{{Suggerimento|Per favore se modifichi questa guida aggiungi nel box "NOTE" sottostante "Estesa da: mio_nome_utente", se invece l'hai semplicemente consultata, ma ne hai verificato personalmente la correttezza, aggiungi sempre nello stesso box "Verificata da: mio_nome_utente". In questo modo aiuti la comunità a tenere traccia della [http://guide.debianizzati.org/index.php/Aiuto:Contents#Evoluzione_delle_guide maturità] della guida.}}
+
=== Sitografia ===
 +
* [http://www.linuxfoundation.org/collaborate/workgroups/networking/bridge Guida] Linux Foundation.
 +
* [http://www.compago.it/index.php/manuali/34-linux/125-come-impostare-un-bridge-tra-due-schede-di-rete-su-ubuntu Guida] compago.
-
{{Box|NOTE|Autore: [[Utente:Wtf|Wtf]] 22:36, 31 mag 2011 (CEST)
+
{{Autori
 +
|Autore = [[Utente:Wtf|Wtf]] 22:36, 31 mag 2011 (CEST)
}}
}}
[[Categoria:Configurazione ethernet]]
[[Categoria:Configurazione ethernet]]

Versione attuale delle 20:29, 15 set 2019

Debian-swirl.png Versioni Compatibili
Tutte le versioni supportate di Debian
Gateway-Router

Sommario


Indice

Introduzione

Un bridge, o ponte, con schede di rete può avere svariate finalità e motivazioni. Alcuni esempi:

Info.png CONVENZIONI sugli indirizzi IP
  • Formato indirizzi IPv4.
  • Classe di indirizzi IP scelta 192.168.0.0/16, ma si tratta evidentemente di una scelta del tutto arbitraria, nulla vieterebbe infatti di usare la classe 172.16.0.0/12 o la 10.0.0.0/8.
  • Per indicare dei valori arbitrari all'interno degli indirizzi IP saranno usate lettere dell'alfabeto, come X, Y e Z, tuttavia si tenga sempre presente che tali valori devono essere interi e compresi nell'intervallo [0,254].


Installazione

Nelle versioni recenti di debian non è necessario installare alcun applicativo aggiuntivo, infatti i comandi per creare un bridge di rete sono già disponibili in Iproute2, tuttavia per rendere permanente la configurazione di un bridge attraverso interfaces la suite storica bridge-utils può risultare più comoda.
Per installarla

# apt install bridge-utils
Warning.png ATTENZIONE
in linea generale si sconsiglia di configurare un bridge di rete da remoto, poiché è possibile perdere la connessione col computer prima di aver eseguito tutti i comandi. Non è possibile configurare più di un bridge direte per computer.


Emulazione di uno switch

Perché emulare uno switch invece che utilizzarne uno vero e proprio complicandosi così la vita? Perché per esempio si ha a disposizione un computer sempre acceso ed un paio di schede di rete.
Nel mio caso specifico si tratta di un piccolo server collocato in un locale usato poco di frequente ed in cui arriva un singolo cavo di rete; al fine di rendere disponibile il collegamento ad internet anche per PC portatili eventualmente presenti nel medesimo locale la soluzione bridge di rete mi ha permesso di evitare l'acquisto di uno switch. In sintesi in una scheda di rete ho collegato il cavo della mia LAN e nell'altro un cavo connesso ad un access point wireless; quest'ultimo viene collegato solo quando necessario.

Creazione di un ponte temporaneo

IPOTESI: si vogliono unire in un bridge due schede di rete eth0 e eth1.

Con iproute2

Creazione ed attivazione dell'interfaccia bridge:

# ip link add name br0 type bridge
# ip link set dev br0 up

Prima di procedere all'aggiunta di eth0 ed eth1 assicurarsi che queste non abbiano indirizzi IP configurati

# ip address flush dev eth0 scope global
# ip address flush dev eth1 scope global

Aggiunta delle interfacce

# ip link set dev eth0 master br0
# ip link set dev eth1 master br0

Assegnazione indirizzo di rete al bridge

# ip address add 192.168.1.37/24 dev br0

Visualizzare informazioni sul ponte appena creato

ip addr list br0
bridge link

Per rimuovere l'interfaccia bridge appena creata rimuovere prima le interfacce eth0 ed eth1

# ip link set dev eth0 nomaster
# ip link set dev eth1 nomaster

quindi eliminare l'interfaccia bridge vera e propria

# ip link del br0

e riconfigurare opportunamente le interfacce eth0 ed eth1.

Storico con bridge utils

# ifconfig eth0 0.0.0.0
# ifconfig eth1 0.0.0.0
# brctl addbr br0
# brctl addif br0 eth0
# brctl addif br0 eth1

Le prime due righe servono a "deconfigurare" le interfacce eth0 e eth1, la terza crea l'interfaccia virtuale di nome br0 e le ultime due specificano le interfacce fisiche che comporranno quella virtuale di nome br0.
A questo punto se lo si desidera è possibile configurare l'interfaccia virtuale br0 come se fosse una normalissima interfaccia fisica. Si noti che evitando di configurare l'interfaccia br0 il computer risulterà irraggiungibile dalla propria LAN, pur permettendo le connessioni da parte di tutti gli altri dispositivi di rete.

Per una configurazione statica digitare qualcosa del tipo:

# ifconfig br0 192.168.X.Y netmask 255.255.255.0
# route add default gateway 192.168.X.Z

Per una configurazione dinamica invece:

# dhclient br0

A prescindere che l'interfaccia br0 sia stata o meno configurata deve essere attivata col comando:

# ifconfig br0 up

Per distruggere il br0 appena creato:

# ifconfig br0 down
# brctl delbr br0

Creazione di un ponte permanente

Storico con bridge utils

Editare il file /etc/network/interfaces digitando per esempio:

# nano /etc/network/interfaces

Eliminare o commentare le configurazioni delle interfacce eth0 ed eth1 già presenti.

Nel caso di configurazione dinamica includere quanto segue:

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

Nel caso di configurazione statica invece:

auto br0
    iface br0 inet static
    address 192.168.X.Y
    netmask 255.255.255.0
    network 192.168.X.0
    broadcast 192.168.0.255
    gateway 192.168.X.Z
    bridge_ports eth0 eth1
    bridge_fd 9
    bridge_hello 2
    bridge_maxage 12
    bridge_stp on
    bridge_maxwait 0

Per rendere operativo il ponte digitare:

# /etc/init.d/networking restart

o eventualmente riavviare il computer.

Emulazione di un access point

Dal punto di vista della configurazione del bridge di rete non cambia praticamente nulla rispetto al caso dello switch, si tratta solo di aggiungere la propria interfaccia wireless al bridge di rete. Prendendo infatti ad esempio le configurazioni indicate nella precedente sezione si tratterebbe di modificare la riga bridge_ports eth0 eth1 in bridge_ports eth0 wlan0, oppure bridge_ports eth0 eth1 wlan0 se la macchina è dotata di due interfacce di rete a filo e di una senza fili.
Il punto critico è invece la configurazione dell'interfaccia wireless stessa, che per poter essere aggiunta ad un bridge DEVE funzionare come access point, ovvero essere impostata in modalità master invece che managed (la modalità predefinita).

Info.png Nota
Non è scontato che un dispositivo wireless supporti la modalità master, si veda a tal proposito quanto scritto nel paragrafo "Configurazione" della guida Wireless Access Point (WAP) personalizzato


iwconfig

Per i dispositivi wireless molto vecchi, ovvero che possono essere configurati tramite iwconfig, e nel caso di comunicazioni in chiaro, dovrebbe essere sufficiente, oltre alla modifica già indicata, aggiungere in coda alle configurazioni d'esempio la seguente riga (opzione da me non testata):

pre-up iwconfig wlan0 mode master essid myESSID

dove wlan0 andrebbe sostituito col nome del proprio dispositivo di rete e myESSID con l'SSID della propria rete wireless. In sintesi nel caso statico si avrebbe:

auto br0
    iface br0 inet static
    address 192.168.X.Y
    netmask 255.255.255.0
    network 192.168.X.0
    broadcast 192.168.X.255
    gateway 192.168.X.Z
    bridge_ports eth0 wlan0
    bridge_fd 9
    bridge_hello 2
    bridge_maxage 12
    bridge_stp on
    bridge_maxwait 0
    pre-up iwconfig wlan0 mode master essid myESSID

iw e hostapd

Nel caso invece si abbia necessità di criptare le comunicazioni wireless e/o si utilizzi un dispositivo recente, oltre ad aggiungere la propria interfaccia wireless al bridge di rete (come indicato nell'esempio dedicato ad iwconfig) è necessario anche installare e configurare hostapd, descritto nella guida Wireless Access Point (WAP) personalizzato, cui si rimanda.

Approfondimenti

Manpages

Sitografia




Guida scritta da: Wtf 22:36, 31 mag 2011 (CEST)

Swirl-auth20.png Debianized 20%

Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Risorse
Strumenti