Bridge einrichten. Und was ist das überhaupt?

Einrichten des lokalen Netzes, Verbindung zu anderen Computern und Diensten.
Antworten
buhtz
Beiträge: 1225
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

Bridge einrichten. Und was ist das überhaupt?

Beitrag von buhtz » 05.12.2020 22:35:28

Ich nutze hier Debian 10 auf einem alten QNap Gerät mit zwei LAN Ports. Das Gerät ist headless und wird nur per SSH gesteuert.
Ich habe mir diese Anleitung zu Herzen genommen. https://wiki.debian.org/BridgeNetworkConnections

Ich möchte einen zweiten PC an den zweiten LAN-Port (eth1) des QNap hängen, so dass der zweite PC wie ein regulärer Client im Netzwerkauft auftaucht, so als würde er direkt an der FritzBox hängen. Nenn man sowas "Bridge"? Es scheint mehrere Varianten zu geben, wenn ich mir die Quellen im Netz anschaue.

Scheinbar jegliche Verbindung zum Gerät brach ab, als ich brctl addif br0 eth0 eth1 machte. Auch Debianping ging nicht. In der FritzBox war das Gerät aber noch sichtbar.
Ausschalten, Einschalten, dann ging die Verbindung per SSH wieder. Jetzt bin ich verunsichert, was falsch gelaufen sein könnte.

Die Bridge br0 ist nach dem reboot auch nicht mehr da.

Code: Alles auswählen

$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:08:9b:bf:c0:ab brd ff:ff:ff:ff:ff:ff
    inet 192.168.178.39/24 brd 192.168.178.255 scope global dynamic eth0
       valid_lft 863778sec preferred_lft 863778sec
    inet6 fe80::208:9bff:febf:c0ab/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 00:08:9b:bf:c0:aa brd ff:ff:ff:ff:ff:ff
In der Anleitung bin ich bis zu diesem Satz gekommen: "Well, now we have our bridges, so bring all the interfaces up, and you’ll be set! "
Wie gesagt, ging mein SSH nicht mehr. Wie soll ich da irgendwas "up" bringen. Auch weiss ich gar nicht, wie das geht.

Möchte nun beim nächsten Versuch vermeiden, dass ich etwas dauerhaft beschädige und dann gezwungen bin die Kiste abzubauen, um da irgendwie einen Monitor und Keyboard anstöpseln zu können. ;)
Zuletzt geändert von buhtz am 06.12.2020 09:04:30, insgesamt 1-mal geändert.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

Benutzeravatar
smutbert
Beiträge: 8356
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Bridge einrichten

Beitrag von smutbert » 05.12.2020 23:02:30

Mit bridges habe ich mich auch gerade beschäftigt und so wie ich das verstehe müsstest du statt eth0 das bridge-Interface br0 konfigurieren.

Dann hängt das QNAP sozusagen an br0 und der zweite PC an eth1 und beide werden über die Bridge mit eth0 verbunden. Phyische Interfaces, die an einer Bridge hängen konfiguriert man nicht (wobei ich mir nicht sicher bin ob es nicht Ausnahmen von dieser Regel gibt).

(Dazu muss ich aber noch sagen, dass ich mich um eine zweite Netzwerkschnittstelle als Backup bemüht habe, bevor ich mit den bridge-Experimenten am headless-System angefangen habe, damit ich nicht wahlweise den Computer oder Monitor+Tastatur herumtragen muss ☺)
Zuletzt geändert von smutbert am 05.12.2020 23:04:27, insgesamt 1-mal geändert.

Benutzeravatar
heisenberg
Beiträge: 4158
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Bridge einrichten

Beitrag von heisenberg » 05.12.2020 23:03:30

buthz hat geschrieben:Scheinbar jegliche Verbindung zum Gerät brach ab, als ich brctl addif br0 eth0 eth1 machte.
Wenn Du das machst, dann werden die bisherigen Interfaces(eth0/eth1) zu slave interfaces von br0. Du musst hier noch die IP-Konfiguration von eth0 auf br0 übertragen. Die Slave interfaces sollen keine IP-Konfiguration mehr haben. D. h. die Verbindung fliegt Dir in dem Moment weg, weil das Bridge-Interface keine IP-Konfig hat und (ich vermute) die IP-Konfig von den Slave-Interfaces nicht mehr aktiv ist.
buthz hat geschrieben:Die Bridge br0 ist nach dem reboot auch nicht mehr da.
Damit die Bridge persistent ist, musst Du die natürlich auch persistent konfigurieren, z. B. (/etc/network/interfaces):

Code: Alles auswählen

auto br0
iface br0 inet static
        address  192.168.207.29
        netmask  24
        bridge-ports eth0 eth1
        bridge-stp off
        bridge-fd 0
Dokumentation siehe Debian Wiki: https://wiki.debian.org/BridgeNetworkConnections

buhtz
Beiträge: 1225
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

Re: Bridge einrichten

Beitrag von buhtz » 06.12.2020 00:32:19

smutbert hat geschrieben: ↑ zum Beitrag ↑
05.12.2020 23:02:30
Dann hängt das QNAP sozusagen an br0 und der zweite PC an eth1 und beide werden über die Bridge mit eth0 verbunden.
Klingt für mich einleuchtend.

Du meinst so?

Code: Alles auswählen

brctl addbr br0
brctl addif eth0 br0 eth1
EDIT:
Aber eth0 ist ja keine Bridge. Hab da n Logik-Fehler.

Wenn ich mir die vielen Anleitungen online anschauen, bekomme ich den Eindruck, dass "Bridge" nur ein Überbegriff ist. Also was will ich hier eigentlich? Was ist der Fachausdruck? Mein Ziel, wird laut Debian-Anleitung so beschrieben: "bridging is plugging one computer into another computer that already has a connection to a larger network (like the internet) and letting the bridged computer use the networked computer’s connection. To do so though, the networked computer needs to have two ethernet ports, one for the big network, and one for the bridged computer."

Da mir gerade auf viel, dass mein Primär-PC auch zwei LAN-Ports hat, habe ich den jetzt mal zum Probieren genutzt. Und dafür die, schon eingangs von mir verlinkte, Debian-Anleitung genutzt - auch wenn ich sie nicht vollständig durchdringe.

Code: Alles auswählen

brctl addbr br0

brctl addif br0 enp2s0 enp3s0

# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 80:ee:73:aa:2b:51 brd ff:ff:ff:ff:ff:ff
    inet 192.168.178.37/24 brd 192.168.178.255 scope global dynamic noprefixroute enp2s0
       valid_lft 863192sec preferred_lft 863192sec
    inet6 fe80::82ee:73ff:feaa:2b51/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 80:ee:73:aa:2b:50 brd ff:ff:ff:ff:ff:ff
4: br0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 80:ee:73:aa:2b:50 brd ff:ff:ff:ff:ff:ff
Interfaces wieder "up" bringen.

Code: Alles auswählen

ip link set enp2s0 up
ip link set enp3s0 up
ip link set br0 up
Das sieht am Ende so aus.

Code: Alles auswählen

ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 80:ee:73:aa:2b:51 brd ff:ff:ff:ff:ff:ff
    inet 192.168.178.37/24 brd 192.168.178.255 scope global dynamic noprefixroute enp2s0
       valid_lft 863032sec preferred_lft 863032sec
    inet6 fe80::82ee:73ff:feaa:2b51/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP group default qlen 1000
    link/ether 80:ee:73:aa:2b:50 brd ff:ff:ff:ff:ff:ff
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 80:ee:73:aa:2b:50 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::82ee:73ff:feaa:2b50/64 scope link 
       valid_lft forever preferred_lft forever
Es besteht keine Verbindung mir zum Router. Alles tot. Nur ein Reboot kann das beheben.

Falls die Frage aufkommt, warum ich nicht entsprechend der Anleitung die Konfigurationsdateien angepasst habe: Ich verstehe die Anleitung so, dass es temporär auch ohne geht. Die Konfigurationsdateien sind nur notwendig, um die Bridge permanent (über Reboots hinweg) fest einzurichten. Versteh ich was falsch?

EDIT2:
Hier nochmal bildlich mein Vorhaben.
2928

B soll praktisch alle Entitäten auf dem Bild auch selbst sehen können.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

buhtz
Beiträge: 1225
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

Re: Bridge einrichten. Und was ist das überhaupt?

Beitrag von buhtz » 06.12.2020 12:59:04

Ich weiss nicht, was ich gerade anders mache, aber konnte es bei den letzten zwei Versuchen problemlos reproduzieren. Es geht.

Die Anleitung im Wiki ist nicht vollständig und etwas missverständlich (für mich). Die Bezeichnung der Interfaces entspricht nicht der aktuellen Konvention. Und es wird nicht beschrieben, wie man die bridge automatisiert "up" machen kann.

Code: Alles auswählen

brctl addbr br0
brctl addif br0 enp2s0 enp3s0
ip link set enp3s0 up
ip link set enp2s0 up
ip link set br0 up
Um das permanent (nach reboot) zu machen das hier noch in /etc/networks/interfaces anhängen

Code: Alles auswählen

# unklar ob das wirklich nötig ist
iface enp2s0 inet manual
iface enp3s0 inet manual
# so ist die bridge auch nach dem reboot noch da
auto br0
# bridge konfig
iface br0 inet dhcp
    bridge_ports enp2s0 enp3s0
Alle Angaben ohne Gewähr, weil ich selbst nicht genau weiß, warum ich ich hier diverse Dinge gemacht habe.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

Benutzeravatar
smutbert
Beiträge: 8356
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Bridge einrichten. Und was ist das überhaupt?

Beitrag von smutbert » 06.12.2020 22:52:31

Ok, eigentlich hätte heisenberg deine Fragen auch schon beantwortet, aber ich bin mir jetzt nicht sicher wo da ein Mißverständnis vorliegt. Also darf ich vielleicht von vorne anfangen und beim Beispiel deines QNAP bleiben:

ursprüngliche Situation

wenn ich es recht verstanden habe wurde ursprünglich nur die erste Ethernetschnittstelle eth0 genutzt, zu dem Zweck hattest du wahrscheinlich so etwas wie

Code: Alles auswählen

auto eth0
iface eth0 inet dhcp
in der »/etc/network/interface« stehen. Stimmt das soweit?

mit bridge

Mit Bridge, darfst du einmal den obigen Abschnitt zu eth0 in der »/etc/network/interface« nicht beibehalten. eth0 muss unkonfiguriert bleiben. *
Stattdessen konfigurierst du das virtuelle Interface der bridge und verbindest sie auch gleich mit eth0 und eth1, alles wieder in der »/etc/network/interface«, die dann ungefähr so aussehen sollte, wie heisenberg bereits geschrieben hat:

Code: Alles auswählen

auto br0
iface br0 inet dhcp
        bridge-ports eth0 eth1
        bridge-stp off
        bridge-fd 0
Dass die anderen Befehle (brctl und ip) nur den momentanen Zustand, zB zum Testen ändern, aber nichts an der Konfiguration und deshalb alles was du damit machst nach einem Neustart weg ist, hast du ja bereits gemerkt.


Ich mahne noch zur Vorsicht, weil ich zwar glaube durchaus zu verstehen wie das funktioniert, aber ich verwende statt der »/etc/network/interface« nur mehr systemd-networkd und bin da also nicht sehr sattelfest.
Wenn du aber versuchst das Vorgehen zum Testen auf deinen Primär-PC zu übertragen, kann ja nicht so lästig schief gehen wie beim NAS und vielleicht wird da dann auch etwas klarer wo der Fehler liegt.


*
Bei deinem letzten Versuch hast du soweit ich aus deinen Ausgaben erahnen kann denselben Fehler noch einmal gemacht: Eine Schnittstelle deines Computers war konfiguriert (enp2s0) und du hast sie zur bridge hinzugefüht – hier gilt wieder dasselbe. Du musst die Konfiguration der Schnittstelle enp2s0 entfernen und stattdessen das bridge-Interface konfigurieren.
Zuletzt geändert von smutbert am 07.12.2020 12:55:33, insgesamt 1-mal geändert.

buhtz
Beiträge: 1225
Registriert: 04.12.2015 17:54:49
Kontaktdaten:

Re: Bridge einrichten. Und was ist das überhaupt?

Beitrag von buhtz » 07.12.2020 12:13:13

Danke für die DAU-feste Erklärung. Jetzt hab ichs (vermutlich) kapiert.
Werde es nochmal testen.
Debian 11 & 12; Desktop-PC, Headless-NAS, Raspberry Pi 4
Teil des Upstream Betreuer Teams von Back In Time (Debianbackintime)

Antworten