Netzwerkbrücken unter Arch Linux

Eine Netzwerkbrücke (engl. Bridge) ermöglicht es einem, zwei Netzwerke transparent auf der Schicht 2 des OSI-Modells zu verbinden. Der Unterschied zwischen einem Router liegt darin, dass die beiden physikalisch getrennten Netzwerke im gleichen Subnetz liegen, also alle Broadcasts und dergleichen ebenfalls übertragen werden. Bei mir findet ein Bridge eine praktische Anwendung als WLAN/LAN Bridge. Der Grund ist einfach: Mein ADSL-Modem sitz im Erdgeschoss während ein Großteil meiner Computer (aber nicht alle) im Keller stehen. Ein Kabel zwischen Keller und Erdgeschoss ist leider nicht möglich, daher bridge ich die Internetverbindung mittels WLAN (zum Einsatz kommen dabei 2 DD-WRT Router, wobei einer als Router und Accesspoint und der zweite (im Gegensatz zu seinem Namen) ausschließlich als WLAN/LAN Bridge fungiert). In diesem Tutorial möchte ich erklären, wie man eine Netzwerkbrücke unter Arch Linux erstellt.

Theorie von Netzwerkbrücken

Bridges arbeiten wie bereits angesprochen auf der Schicht 2 des OSI-Modells der so genannten Sicherungsschicht. Aufgabe dieser Schicht ist es, eine zuverlässige und möglichst fehlerfreie Übertragung der Pakete sicherzustellen. Man teilt die Schicht weiter in so genannte sub layers der LLC (Logical Link Control) und MAC (Media Access Control) Schicht. Es sei nur soviel gesagt, dass der Unterschied zwischen einer Bridge und einem Switch darin liegt, dass letzterer nur auf der MAC-Schicht arbeitet während eine Bridge beide Modi unterstützt.

Netzwerkbrücke sind immer dann einem Switch überlgen, wenn es darum geht, unterschiedliche Netzwerktypen miteinander zu verbinden, bzw. wenn man eine günstige Methode sucht, den Datenverkehr zwischen den zwei zu verbindenden Netzen regeln zu können. Switches kauft man sich meist als fertige Hardware, während man eine Bridge leicht softwaretechnisch selbst erstellen kann. Dabei hat man im Vergleich zu einem Switch viel mehr Möglichkeiten die über die Bridge laufenden Daten zu filtern oder zu überwachen.

Da Bridges (wie auch Switches) auf ein um dem selben Subnetz operieren und alle Datenpakete (auch Broadcasts für DHCP oder ARP-Pakete) übertragen, ist es für die Clients in den einzelnen Netzen meist nicht erkennbar, ob sie direkt im selben physikalischen Netz liegen, oder in einem geswitchten/gebridgten Netz operieren. Über eine Bridge funktionieren somit auch alle Netzwerkprotokolle ohne etwas von der Bridge zu wissen, würde man einen Router einsetzen, so gäbe es hier weit mehr Probleme.

Software Bridge mit Arch Linux

Um eine Software Bridge unter Linux (geht allerdings auch mit Windows) anzulegen, benötigt man einen Computer mit mindestens zwei Netzwerkschnittstellen. Das können in der Theorie sowohl WLAN als auch LAN-Schnittstellen oder auch ganz andere Netzwerkschnittstellen sein. In der Praxis hat sich jedoch gezeigt, dass vor allem viele WLAN-Karte nicht gebridged werden können (insbesondere im Managed-Mode in Verbindung mit Access Points). Letztendliche Gewissheit schafft hier nur ausprobieren.

Um unter Arch Linux mit Bridges arbeiten zu können benötigt man das Paket bridge-utils:

# pacman -Sy bridge-utils

Bridges kann man entweder temporär oder persistent erstellen. Im folgenden erstellen wir eine temporäre Bridge zwischen den beiden Schnittstellen eth0 und eth1:
# brctl addbr br0
# brctl addif br0 eth0
# brctl addif br0 eth1
# ifconfig eth0 down
# ifconfig eth1 down
# ifconfig eth0 0.0.0.0 up
# ifconfig eth1 0.0.0.0 up
# ifconfig br0 up
# dhcpcd br0

Zuerst legt man eine neue Bridge mit dem Namen „br0“ an (man kann jeden beliebigen Namen verwenden) (gelöscht wird mittesl brctl delbr br0 sobald die Bridge nicht mehr aktiv ist). Danach fügt man die beiden Schnittstellen eth0 und eth1 zur br0 hinzu. Anschließend werden die beiden Netzwerkkarte so konfiguriert, dass sie zwar beide up sind, allerdings keine eigene IP-Adresse beziehen. Im Gegensatz zu einem Router hat eine Bridge, wenn überhaupt, nur eine einzige IP-Adresse. Danach wird auch die Bridge selbst aktiviert und per DHCP eine IP-Adresse bezogen. Diese Befehle sollten reichen um die Bridge zu aktivieren und nun sollte es möglich sein, eine Verbindung zwischen Clients auf der Schnittstelle eth0 und jenen auf der Schnittstelle eth1 aufzubauen.

Obwohl oft behauptet wird, braucht man für eine reine Bridge das IP-Forwarding eigentlich (zumindest laut meinen eigenen Erfahrungen) nicht aktivieren. Wer allerdings Probleme hat (weil etwa nicht alle oder gar keine Pakete übertragen werden), kann das IP-Forwarding mit folgendem Befehl temporär aktivieren:

# echo 1 > /proc/sys/net/ipv4/ip_forwarding

Permanente Bridge einrichten

Meist möchte man seine Bridge auch nach einem Neustart zur Verfügung haben. Diese Schritte unterscheiden sich von Distribution zu Distribution oft stark (im Gegensatz zur Einrichtung einer temporären Bridge), weshalb dieser Teil der Anleitung auch nur explizit für Arch Linux gilt.

Bridges werden in Arch Linux zentral über die Datei /etc/conf.d/bridges verwaltet. Für jede Bridge braucht man eine eigene Variable im Format „bridge_NAME_DER_BRIDGE“. Für unsere br0 heißt die Variable also „bridge_br0“. Alle Bridges müssen außerdem in Array „BRIDGES_INTERFACES“ eingetragen werden, damit sie aktiv sind.
bridge_br0="eth0 eth1"
BRIDGES_INTERFACES=(br0)

Damit die Bridge beim starten auch aktiviert wird und eine IP-Adresse bekommt, muss man sie wie auch andere Interfaces (sofern sie nicht über Programme wie WICD oder NetworkManager verwaltet werden) in die Datei /etc/rc.conf eingetragen werden. Das funktioniert für eine Bridge die per DHCP ihre IP-Adresse bezieht etwa so:
eth0="eth0 up"
eth1="eth1 up"
br0="dhcp"
INTERFACES=(eth0 eth1 br0)

Möchte man die Bridge manuell eine IP-Adresse zuweisen, so wäre folgende Syntax notwendig:
eth0="eth0 0.0.0.0 promisc up"
eth1="eth1 0.0.0.0 promisc up"
br0="br0 <server IP> netmask <netmask> broadcast <broadcast IP>"
INTERFACES=(eth0 eth1 br0)
gateway="default gw <gateway IP"

Nach einem Neustart des Systems sollte die Brücke automatisch aktiviert werden!

 

Ich hoffe, ich konnte mit diesem Tutorial etwas Lobbying für Netzwerkbrücken betreiben und eine kurze Hilfestellung geben. Leider kann ich zu Bridges mit WLAN auch nicht sehr viele Informationen geben, außer dass sie sehr oft nicht richtig funktionieren. In meinem Fall erfolgt das Bridging zwischen LAN und WLAN mittels eine WLAN-Routers, der natürlich auch eine etwas speziellere Hardware verbaut hat.

 

Comments are closed.