Da eine Bridge ein Ethernet-Gerät ist, benötigt sie eine MAC-Adresse. Eine Linux-Bridge kann Dinge wie Spanning-Tree-Protokoll-Frames erzeugen, und Verkehr wie dieser benötigt eine Ursprungs-MAC-Adresse.
Eine Brücke ist nicht erforderlich eine IP-Adresse. Es gibt viele Situationen, in denen Sie keine haben werden. In vielen Fällen können Sie dies jedoch tun haben, wie zum Beispiel:
-
Wenn die Bridge als Standard-Gateway für eine Gruppe von Containern oder virtuellen Maschinen (oder sogar physischen Schnittstellen) fungiert. In diesem Fall benötigt es eine IP-Adresse (weil das Routing auf der IP-Schicht erfolgt).
-
Wenn Ihre „primäre“ NIC Mitglied der Bridge ist, so dass die Bridge Ihre Konnektivität zur Außenwelt darstellt. In diesem Fall, anstatt (zum Beispiel)
eth0
eine IP-Adresse zuzuweisen , würden Sie es stattdessen dem Bridge-Gerät zuweisen.
Wenn die Brücke nicht ist erforderlich für IP-Routing, dann benötigt es keine IP-Adresse. Beispiele für diese Situation sind:
- Wenn die Bridge verwendet wird, um ein privates Netzwerk von Geräten ohne externe Konnektivität oder mit externer Konnektivität zu erstellen, die über ein anderes Gerät als die Bridge bereitgestellt wird.
Ja, die Bridge-Schnittstelle fungiert als zusätzlicher Port.
Nach man 5 systemd.netdev
:
Ein Bridge-Gerät ist ein Software-Switch, und jedes seiner Slave-Geräte und die Bridge selbst sind Ports des Switches.
Das mit Ihren anderen Netzwerkgeräten aufgelistete Bridge-Gerät stellt nicht die virtuelle Bridge dar, sondern eine virtuelle NIC, die mit der Bridge verbunden ist. Wenn Sie eine physische Bridge mit physischen Netzwerkgeräten verbunden hätten, würden Sie die physische Bridge auch nicht in Ihren Netzwerkgeräten sehen – aber Sie würden Ihre NIC sehen, die mit der Bridge verbunden ist, die natürlich ihre eigene MAC-Adresse hat, wie z jedes andere Netzwerkgerät.
Durch Zuweisen einer IP-Adresse zum Bridge-Gerät (das wiederum eigentlich eine virtuelle NIC ist, die mit der virtuellen Bridge verbunden ist) kann Ihr Host-Gerät Pakete an das Subnetz weiterleiten, das von der Bridge und allen daran angeschlossenen Geräten erstellt wurde. Ordentlich!
Beim Vernetzen von Gerätetools wie iproute2
(mit dem ip link
und ip addr
-Befehle) ermöglichen es Ihnen, die mit der Bridge verbundene virtuelle NIC zu sehen, es ist auch möglich, die virtuelle Bridge selbst mit dem brctl
zu sehen Programm. Die brctl show
Der Befehl listet alle Bridges und ihre angeschlossenen Schnittstellen auf. Hier ist ein Beispiel mit iproute
und brctl
mit Linux Bridges und 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
Beachten Sie, was in der Ausgabe von brctl show
unter "Schnittstellen" aufgeführt ist sind die anderen Schnittstellen, die zusätzlich zu br0
an die Bridge angeschlossen sind Schnittstelle, die beim Erstellen der Bridge automatisch hinzugefügt wurde. (Ich schätze, Linux erlaubt es nicht, eine virtuelle Brücke ohne angeschlossene Geräte zu erstellen, und Brücken ohne Geräte werden automatisch zerstört.) Fürs Protokoll, ich habe dies im Kernel nicht recherchiert und bin auch kein Netzwerkexperte. Ich habe dies gepostet, weil es die ziemlich verwirrende Implementierung virtueller Brücken in Linux überzeugend zu erklären scheint. Ich glaube nicht, dass die virtuellen Bridges selbst MAC-Adressen haben.