Poiché un bridge è un dispositivo Ethernet, necessita di un indirizzo MAC. Un bridge linux può dare origine a cose come frame di protocollo spanning-tree e un traffico del genere ha bisogno di un indirizzo MAC di origine.
Un bridge non richiede un indirizzo ip. Ci sono molte situazioni in cui non ne avrai uno. Tuttavia, in molti casi puoi averne uno, come:
-
Quando il bridge funge da gateway predefinito per un gruppo di contenitori o macchine virtuali (o anche interfacce fisiche). In questo caso ha bisogno di un indirizzo IP (poiché il routing avviene a livello IP).
-
Quando la tua NIC "primaria" è un membro del bridge, in modo tale che il bridge sia la tua connettività con il mondo esterno. In questo caso, piuttosto che assegnare un indirizzo IP a (per esempio)
eth0
, lo assegneresti invece al dispositivo bridge.
Se il ponte non richiesto per il routing IP, quindi non necessita di un indirizzo IP. Esempi di questa situazione includono:
- Quando il bridge viene utilizzato per creare una rete privata di dispositivi senza connettività esterna o con connettività esterna fornita tramite un dispositivo diverso dal bridge.
Sì, l'interfaccia bridge funge da porta aggiuntiva.
Dopo man 5 systemd.netdev
:
Un dispositivo bridge è uno switch software e ciascuno dei suoi dispositivi slave e il bridge stesso sono porte dello switch.
Il dispositivo bridge elencato con gli altri dispositivi di rete non rappresenta il bridge virtuale, rappresenta una NIC virtuale connessa al bridge. Se avessi un bridge fisico connesso a dispositivi di rete fisici, non vedresti nemmeno il bridge fisico elencato nei tuoi dispositivi di rete, ma vedresti la tua scheda NIC collegata al bridge, che ovviamente ha il proprio indirizzo MAC come qualsiasi altro dispositivo di rete.
L'assegnazione di un indirizzo IP al dispositivo bridge (che, ancora una volta, è in realtà una NIC virtuale connessa al bridge virtuale) consente al dispositivo host di instradare i pacchetti alla sottorete creata dal bridge e a tutti i dispositivi ad esso collegati. Perfetto!
Mentre strumenti per dispositivi di rete come iproute2
(con il ip link
e ip addr
comandi) consentono di vedere la NIC virtuale collegata al bridge, è anche possibile vedere il bridge virtuale stesso con il brctl
programma. Il brctl show
comando elencherà tutti i bridge e le loro interfacce collegate. Ecco un esempio che utilizza iproute
e brctl
con bridge Linux e tuntaps:
# ip link add br0 type bridge
# ip tuntap add dev tap0 mode tap
# ip tuntap add dev tap1 mode tap
# ip addr add 10.0.0.1/24 broadcast 10.0.0.255 dev br0
# ip addr add 10.0.0.2/24 broadcast 10.0.0.255 dev tap0
# ip addr add 10.0.0.3/24 broadcast 10.0.0.255 dev tap1
# brctl addif br0 tap0
# brctl addif br0 tap1
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.2e22e593fe8c no tap0
tap1
# ip addr show to 10.0.0.0/24
11: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
inet 10.0.0.1/24 brd 10.0.0.255 scope global br0
valid_lft forever preferred_lft forever
12: tap0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN group default qlen 1000
inet 10.0.0.2/24 brd 10.0.0.255 scope global tap0
valid_lft forever preferred_lft forever
13: tap1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN group default qlen 1000
inet 10.0.0.3/24 brd 10.0.0.255 scope global tap1
valid_lft forever preferred_lft forever
Nota che ciò che è elencato sotto "interfacce" nell'output di brctl show
sono gli altri interfacce collegate al bridge, oltre al br0
interfaccia che è stata aggiunta automaticamente quando è stato creato il bridge. (Immagino che Linux non consenta la creazione di un bridge virtuale senza dispositivi collegati e i bridge senza dispositivi vengano automaticamente distrutti.) Per la cronaca, non ho effettuato ricerche nel kernel, né sono un esperto di reti. Ho pubblicato questo perché sembra spiegare in modo convincente l'implementazione piuttosto confusa dei bridge virtuali in Linux. Non credo che gli stessi bridge virtuali abbiano indirizzi MAC.