VLANs
Möchte man an einem Standort mehrere Netzwerke auf denselben Geräten verwenden, so sollten die Netzwerke logisch voneinander getrennt werden. Dazu werden VLANs verwendet. In dieser Anleitung sollen VLANs von Grund auf einfach erklärt werden.
Mehrere Netzwerke?
In einfachen Netzwerken - z.B. wenn bei einem Geschäft ein Freifunk-Router aufgestellt wird - muss man sich über VLANs keine Gedanken machen. Bei größeren Installationen mit mehreren Geräten (APs, Switches, Offloader, Richtfunkgeräte) können aber einige Netzwerke an einem Standort zusammenkommen, z.B. Client-Netz, Mesh-Netz (evtl. mehrere), Heimnetzwerk und Managementnetzwerk sowie die bereits bestehenden Netzwerke. Um diese Netzwerke voneinander zu trennen, müsste ohne VLANs sehr viel Hardware (z.B. mehrere Switches) verbaut werden. VLANs ermöglichen es, die Netzwerke auf einem Gerät voneinander zu trennen. Wie das geht, wird in den nächsten Abschnitten erklärt.
Switches zerteilen
Man stelle sich folgendes Setup vor: An einem Standort sollen zwei Computer an das Heimnetzwerk angeschlossen werden. Außerdem soll es einen Freifunk-Offloader geben, der über das Heimnetzwerk mit dem Internet verbunden ist. Der Offloader erstellt ein Client-Netz, an das ein Access Point und ein Computer angeschlossen werden sollen. Ohne VLANs sähe das wie folgt aus:
Der Offloader ist mit dem Heimnetzwerk verbunden und erstellt ein Freifunk-Client-Netzwerk. Beide Netzwerke haben ihren eigenen Switch. Um nun nur einen (größeren) Switch nehmen zu müssen, können die Switch-Ports in VLANs eingeteilt werden. Jedes VLAN hat eine andere Nummer und nur Ports, die dieselbe Nummer haben, sind miteinander verbunden. Damit lässt sich ein Switch also effektiv in mehrere Switches unterteilen.
Für das Heimnetzwerk wurde hier VLAN 1 verwendet und für das Client-Netz VLAN 2. Die Ports 1-4 sind also miteinander verbunden, ebenso wie die Ports 5-7. Port 8 befindet sich in keinem VLAN und ist daher auch weder mit dem Heimnetzwerk, noch mit dem Client-Netzwerk verbunden. Der Switch wurde also effektiv in einen 4-Port-Switch und einen 3-Port-Switch unterteilt. Die Netzwerke sind somit logisch voneinander getrennt.
Braucht man VLANs überhaupt?
Prinzipiell ist es kein Problem, mehrere IP-Netzwerke auf derselben Hardware zu betreiben, ohne VLANs zu verwenden. Die Netzwerke stören sich erst mal nicht gegenseitig. Es gibt aber trotzdem viele Gründe, VLANs zu verwenden:
- Die Trennung ohne VLANs funktioniert nur, wenn die IP-Adressbereiche nicht überlappen - woher soll ein Paket sonst wissen, zu welchem der zwei Netzwerke mit gleichem Subnetz es gehört?
- Auf Routern laufen DHCP-Server, welche den Geräten IP-Adressen zuweisen. Ohne VLANs würden dann alle Router versuchen, einem Gerät eine IP-Adresse zu geben. Das würde vermutlich sogar gehen, ist aber wahrscheinlich ungewollt.
- Wie gerade angemerkt, sind ohne VLANs alle Geräte physikalisch mit allen Netzwerken verbunden. Im obigen Beispiel wäre es dann nicht möglich, auf einem Kabel zu einem Access Point nur das Client Netz zu haben - das eigene Heimnetzwerk wäre auch dabei. Ein Angreifer, der physikalischen Zugriff zum AP hätte, könnte dann einfach das Kabel in seinen Computer stecken und wäre schon mit dem Heimnetzwerk verbunden.
VLANs zwischen Geräten
Bislang wurden VLANs nur benutzt, um Switches in mehrere logische Switches zu unterteilen. Oft ist es aber auch notwendig oder wünschenswert, mehrere Netzwerke über ein Kabel zu leiten. Die Netzwerke könnten dann am nächsten Switch wieder aufgeteilt werden. Als Beispiel soll in dem obigen Beispiel noch ein Richtfunkgerät an den Switch angeschlossen werden, das mit einem neuen Mesh-Netz des Offloaders verbunden wird. Das Mesh-Netz soll die VLAN-ID 3 erhalten. Das Setup würde dann so aussehen:
Der Offloader erzeugt nun ein Mesh-Netz und ein Client-Netz. Da nicht noch ein Kabel verwendet werden soll (und weil unsere Offloader i.d.R. nur zwei LAN-Ports haben), sollen VLANs verwendet werden. Das Client-Netz verwendet VLAN 2, das Mesh-Netz VLAN 3. Das Client-Netz geht nach wie vor an den PC und an den AP. Das neue Mesh-Netz geht an das neue Richtfunkgerät, das einen Port mit VLAN 3 angeschlossen ist.
So weit so einfach. Die technische Umsetzung davon ist aber in der Realität nicht ganz so einfach.
Wenn Daten über ein Netzwerk versendet werden sollen, werden sie in sogenannte IP-Pakete aufgeteilt. Jedes Paket enthält wichtige Informationen über das Paket, wie z.B. Absender und Zieladresse. Wenn das jeweilige Netzwerk ein VLAN verwendet, wird zusätzlich die VLAN-ID auf dem Paket vermerkt. Die VLAN-ID ist quasi nur ein Aufkleber auf jedem Paket. Wenn keine VLANs verwendet werden, fehlt der Aufkleber aber komplett. Somit können mehrere Netzwerke über ein Kabel versendet werden: Da die Pakete den passenden Aufkleber haben, können sie auch am nächsten Gerät noch zugeordnet werden.
Standardmäßig verwenden alle normalen Geräte allerdings keine VLANs. Sie verschicken alle Pakete ohne VLAN-ID und erwarten auch, dass alle Pakete ohne solche ankommen. Dazu zählt z.B. ein normaler Router aus dem Heimnetzwerk, aber auch sämtliche Computer, Handys und Access-Points. Im Gegenteil dazu arbeitet der Offloader aus dem Beispiel aber sehr wohl mit VLANs. Wie können nun manche Netzwerke (genauer: bestimmte Netzwerke bzw. VLANs an bestimmten Ports) mit, und andere Netzwerke ohne VLAN-ID versendet werden?
Das kann einfach an jedem Port mit dem „tagging“ eingestellt werden. Sollen die Pakete mit VLAN-ID verschickt (bzw. eingehende Pakete mit ID erwartet) werden, sagt man, dass das VLAN auf dem jeweiligen Port getagged ist. Die VLAN-ID wird in der Konfiguration oft mit einem „t“ versehen, z.B. „3t“. Sollen die Pakete ohne ID verschickt und erwartet werden, sagt man, das VLAN ist auf dem jeweiligen Port ungetagged. Die VLAN-ID wird ohne „t“ dargestellt, d.h. z.B. „3“ (manchmal auch „3u“). Das Beispiel sähe damit so aus:
Da zwischen Port 5 des Switches und dem Offloader zwei Netzwerke versendet werden (Mesh und Client), sollten die Pakete von mindestens einem der Netzwerke/VLANs getagged sein, also mit Aufkleber versendet werden. In diesem Beispiel sind sogar beide VLANs auf Port 5 getagged. Wie man es macht, ist eigentlich egal. Es muss nur darauf geachtet werden, dass die Geräte auf beiden Seiten passend konfiguriert sind - d.h. der Offloader im Beispiel muss auch so konfiguriert sein, dass beide VLANs getagged sind.
Der AP und der PC im Beispiel wurden nicht weiter konfiguriert. Sie erwarten also, dass das Netzwerk, mit dem sie verbunden sind, ohne VLAN ankommt. Port 6 und 7 sind daher ungetagged. Pakete, die im Switch auf Port 6 oder 7 rausgehen, erhalten also keine ID bzw. keinen Aufkleber. Ebenso sind alle Pakete, die auf diesen Ports ohne VLAN ankommen, im Switch Teil von VLAN 2 (Dass das so funktioniert, ist genau genommen nicht immer so. Auf jedem Port lässt sich eine „Default ID“ einstellen. Alle Pakete ohne ID werden diesem VLAN zugeteilt. Ubiquiti-Geräte z.B. nehmen aber standardmäßig an, dass das einzige ungetaggte VLAN auf einem Port auch die default ID darstellt)
Zuletzt ist das Richtfunkgerät nun noch an Port 8 angeschlossen, auf dem VLAN 3 (Mesh) getagged ist. Natürlich müsste das VLAN hier nicht getagged sein, denn auf dem Port wird ja kein anderes VLAN versendet. Das Richtfunkgerät funktioniert damit aber trotzdem. Alle Pakete, die auf Port 8 raus gehen, werden mit ID 3 versendet. Pakete, die mit ID 3 ankommen, sind dann auch im Switch teil von VLAN 3. Was mit Paketen passiert, die ohne ID ankommen, hängt von der default ID ab. Standardmäßig sollte keine default ID eingestellt sein, sodass alle Pakete ohne ID ignoriert werden.
Noch ein realistisches Beispiel
Hier soll noch ein realistisches Beispiel erklärt werden, das so ähnlich auch in unserer Richtfunk-Installation verwendet wird. Über ein Richtfunkgerät kommt ein Mesh-Netz (VLAN 20) und ein Management-Netz (VLAN 1) rein. An dem Standort sollen Access-Points an das Client-Netz (VLAN 9) angeschlossen werden. Dazu wird erst noch ein Freifunk-Router benötigt, der aus dem Mesh-Netz ein Client-Netz erzeugt. Außerdem soll ein weiteres Richtfunkgerät aufgestellt werden, das neben dem Management-Netz noch ein eigenes Mesh-Netzwerk erhält (warum nicht das bereits vorhandene Mesh-Netzwerk verwendet wird, ist ein anderes Thema). Das zweite Mesh-Netzwerk (VLAN 21) wird vom Freifunk-Router erzeugt.
Das Management-Netz dient dazu, ein Netzwerk zu haben, über das auf sämtliche Geräte ohne Freifunk-Firmware zugegriffen werden kann - also auf Switches und Richtfunkgeräte.
Da das erste Mesh-Netz auf Port 1 zusammen mit dem Management-Netz eingeht, ist es dort getagged.
Der Freifunk-Router soll das Mesh-Netzwerk ungetagged bekommen. Das wurde auf dem Router so eingestellt. Deswegen ist VLAN 20 auf Port 2 ungetagged.
Der Router erstellt dann ein weiteres Mesh-Netzwerk und ein Client-Netzwerk. Diese müssen beide getagged sein, damit sie von VLAN 20 (dem ersten Mesh-Netzwerk) unterschieden werden können. VLAN 9 (Client) und 21 (zweites Mesh-Netz) sind daher auf Port 2 getagged.
Das Client-Netzwerk soll an dem Standort von den Access-Points ausgestrahlt werden. Da die Standardeinstellung der Access-Points übernommen wurde, strahlen sie das Netzwerk aus, das ungetagged ankommt. VLAN 9 (Client) ist daher auf den Ports 4 und 5, wo die APs angeschlossen sind, ungetagged.
Einerseits soll das zweite Richtfunkgerät selbst über das Management-Netz erreichbar sein, andererseits sollen auch die Geräte am nächsten Standort darüber erreichbar sein. Deswegen soll auf Port 8 für das zweite Richtfunkgerät das Management-Netz sein, welches im Switch VLAN 1 verwendet. VLAN 1 soll hier außerdem wieder ungetagged sein. Des weiteren soll das zweite Mesh-Netz, VLAN 21, über das RF-Gerät versendet werden. Um vom Management-Netz unterschieden werden zu können, muss VLAN 21 hier getagged sein.
VLANs auf Ubiquiti-Switches konfigurieren
Zum Schluss ist hier noch eine Beispielkonfiguration von VLANs auf einem Ubiquiti-Switch:
Für jede VLAN ID gibt es eine eigene Zeile, in der man jeweils für jeden Port festlegen kann, ob dieses VLAN auf dem Port getagged (T), ungetagged (U) oder excluded (E) sein soll. Außerdem kann man zu jedem VLAN noch einen Kommentar hinzufügen, damit man direkt sieht, wofür das VLAN gedacht ist.