Linux Bridges, VLANs und ein Trunk?

31. Mai 2011 | Von | Kategorie: Admin | Virtualisierung

Für eine Virtualisierungsumgebung benötigten wir virtuelle Switches mit VLANs und der Möglichkeit, diese über einen Trunk zu verbinden. Dabei sollte das ganze auf Debian Squeeze mit so wenig Anpassungen erfolgen. Leider ist Openvswitch noch nicht Bestandteil der Distribution, sonst wäre dies die erste Wahl gewesen. Da Openvswitch aber sogar den Kernel modifiziert (zusätzliches Modul) schied es zunächst aus. Das ganze sollte mit Hausmitteln erfolgen.

Bridges

Eine Bridge unter Linux aufzubauen, ist einfach. Hierzu gibt es den Befehl brctl. Damit können einfach Bridges gebaut werden. Debian unterstützt den Bau von Bridges sogar über die Datei /etc/network/interfaces:

auto br0
   iface br0 inet dhcp
   bridge_ports eth0
   bridge_stp off
   bridge_maxwait 0
   bridge_fd 0

Damit die Switches später über KVM einfach erkannt und eingebunden werden konnten, sollten diese aber anders benannt werden. Auch dies ist einfach mit der Datei möglich. Die Switches können jeden Namen erhalten:

auto extern0
iface extern0 inet dhcp
   bridge_ports eth0
   bridge_stp off
   bridge_maxwait 0
   bridge_fd 0

VLANs

Nun sollte jedoch auch VLANs unterstützt werden. Dies bietet Linux mit dem Bridge-Code nicht. Openvswitch könnte das. Unter Linux müssen hierfür einfach mehrere Bridges gebaut werden. Dabei können die Bridges auch den Namen des VLANs erhalten. Werden also zwei VLANs (mailsrv und filesrv) benötigt, so werden zwei Bridges erzeugt. Diese Bridges sind nun nicht mit der Außenwelt verbunden. Ihnen fehlt ein physikalischer Bridge-Port (bridge_ports).

auto mailsrv
iface mailsrv inet dhcp
   bridge_stp off
   bridge_maxwait 0
   bridge_fd 0

auto filesrv
iface filesrv inet dhcp
   bridge_stp off
   bridge_maxwait 0
   bridge_fd 0

Trunk

Um nun die Bridges auf mehreren physikalischen Systemen über einen VLAN-Trunk zu verbinden, muss das physikalische System den Trunk zerlegen und die VLANs auf verschiedene virtuelle Netzwerkkarten aufteilen. Diese können dann den Bridges zugeordnet werden. In unserem Fall hatten wir ein VLAN 101 welches für die Mailserver gedacht war. Im einfachsten Fall verwendet man unter Debian:

auto eth0.101
iface eth0.101 inet manual
   vlan_raw_device eth0

Dies erzeugt ein VLAN Interface für das VLAN 101. Dies kann nun als Bridge-Port einer Bridge zugeordnet werden. Sollen die Namen sprechender sein, kann man auch folgende Konfiguration verwenden:

auto mailvlan
iface mailvlan inet manual
   up ip link add link eth0 name mailvlan type vlan id 101
   up ip link set dev mailvlan up
   down ip link del dev mailvlan

Dass die virtuelle Karte das richtige VLAN und die richtige physikalische Netzwerkkarte als Backend verwendet kann unter /proc/net/vlan/mailvlan kontrolliert werden.

Werden für jedes VLAN nun entsprechende virtuelle Netzwerkkarten eingerichtet und diese den Bridges zugeordnet, so entsteht im Grunde ein in VLANs aufgteilter und über einen Trunk verbundener virtueller Switch. Natürlich muss der physikalische Switch, der die beiden physikalischen Rechner mit den Bridges verbindet auch die entsprechenden Ports im Trunk-Modus aktiviert haben und die entsprechenden VLANs erlauben.

Post to Twitter Post to Yahoo Buzz Post to Delicious Post to Digg Post to Facebook Post to Ping.fm Post to Reddit

Tags: | | |

Schreibe einen Kommentar

Fühle dich ermuntert einen Kommentar, Anmerkungen, Hinweise oder deine Ideen zum Thema zu hinterlassen. Wir freuen uns über deine Rückmeldung.