Zum Inhalt springen

Tippen Sie, um zu suchen

Netzwerksegmentierung: VLANs, Schichten und Zugang

Was ist ein VLAN? 802.1Q-Tag, Access- und Trunk-Port

Ein VLAN teilt einen Switch per 4-Byte-Tag in getrennte Netze. Wie 802.1Q funktioniert, Access- vs. Trunk-Port, das Native-VLAN-Risiko, mit echten Mitschnitten.

Geschrieben von

Stellen Sie sich eine große Fachmesse vor. Am Empfang bekommen Sie ein Namensschild, und darauf steht, welche Halle Sie betreten dürfen. Ein Gebäude, gemeinsame Gänge, gemeinsame Aufzüge. Was Sie von den anderen Besuchern trennt, ist keine Wand. Es ist das Schild um Ihren Hals.

Anzeige

Ein Switch macht dasselbe. Ein VLAN (Virtual Local Area Network) teilt einen physischen Switch in mehrere logisch getrennte Netze, und zwar nicht durch neue Kabel, sondern durch eine kleine Markierung, die an jeden Frame geheftet wird. Dieser Artikel gehört zum Leitfaden Netzwerksegmentierung und verfolgt diese Markierung durch das ganze Netz: wo sie im Frame sitzt, welcher Port sie schreibt, welcher sie transportiert und wie sie in einem echten Mitschnitt von einem echten Switch aussieht.

Alle Befehle und Ausgaben stammen aus dem Labor des Autors (Domäne ad.sercebilisim.com); Adressen und Namen sind so belassen, wie sie gemessen wurden. Wenn Sie nur den Unterschied der beiden Port-Typen suchen, springen Sie zu Access-Port oder Trunk-Port. Haben Sie ein Gerät, das im Netz auftaucht, aber nicht erreichbar ist, gehen Sie direkt zur Fehlersuche.

Was ist ein VLAN? Ein Switch, mehrere Netze

Ein VLAN ist eine logische Trennung, die Gruppen von Geräten am selben physischen Switch voneinander isoliert. Der Rechner der Buchhaltung und ein Smartphone im Gastnetz können an zwei Ports desselben Switches hängen und sich trotzdem nie hören.

Der Fachbegriff für das, was ein VLAN aufteilt, ist die Broadcast-Domäne. Wenn ein Gerät alle anderen im Netz anruft, etwa um die Hardware-Adresse eines Nachbarn zu finden oder eine IP-Adresse anzufordern, hört das nur sein eigenes VLAN. Das VLAN zieht die Grenze dieser Domäne.

Was ginge ohne VLANs kaputt?

Nehmen Sie ein flaches Netz mit 200 Benutzern, 40 Servern und 60 IP-Telefonen: 300 Geräte in einer Broadcast-Domäne. Jedes ruft regelmäßig alle anderen an, um Nachbarn zu finden, Adressen zu erneuern und sich zu melden. Jeder dieser Broadcasts erreicht jede Netzwerkkarte im Gebäude und unterbricht kurz jede CPU, ob gefragt oder nicht.

Die zweite Last ist die schwerere: die Sicherheit. Ein Gerät in derselben Broadcast-Domäne lernt die anderen kennen, ohne zu fragen. Ein Laptop im Gastnetz findet die Adresse des Buchhaltungsservers ohne jedes Hindernis. In einem unsegmentierten Netz heißt „ein Unbefugter ist drin“ immer „ein Unbefugter ist überall drin“.

VLANs senken beides zugleich: Sie halten Broadcasts innerhalb einer Gruppe und zwingen den Verkehr zwischen Gruppen durch eine Kontrollstelle.

Was ist 802.1Q? Wo der Tag im Frame sitzt

802.1Q ist der IEEE-Standard, der die VLAN-Zugehörigkeit direkt in den Ethernet-Frame schreibt, indem er einen 4 Byte großen Tag einfügt. Der Tag sitzt direkt hinter der Quell-MAC-Adresse und vor dem Feld, das den Typ des Frames angibt.

Der Tag wird also weder vorn noch hinten angeklebt. Er wird in die Mitte eingefügt, so wie ein Namensschild an einen Besucher geklemmt wird, ohne dass sich der Besucher ändert. Am Eingang wird zuerst das Schild geprüft.

Die 4 Byte teilen sich in vier Felder:

FeldGrößeInhalt
TPID16 BitFester Wert 0x8100: „dieser Frame ist getaggt“
PCP3 BitPriorität 0 bis 7, für Sprache und Video
DEI1 BitOb der Frame bei Überlast verworfen werden darf
VID12 BitDie VLAN-ID: zu welchem VLAN der Frame gehört

Entscheidend ist die VID, und ihre Größe setzt eine harte Grenze: 12 Bit ergeben 4.096 Werte. Der Standard reserviert 0 und 4.095, nutzbar sind also 1 bis 4.094.

Das ist die Lehrbuchantwort. Ein echtes Gerät kann enger sein: Der Laborswitch dieses Artikels meldet seinen zulässigen Bereich als <1-4093> und behält die letzte Nummer für sich. Das spürt niemand, erinnert aber daran, dass die Obergrenze am Gerät abgelesen wird, nicht im Standard.

Durch den Tag wächst die maximale Frame-Größe von 1.518 auf 1.522 Byte. Normalerweise merken Sie davon nichts. Berücksichtigt ein Gerät im Pfad diese 4 Byte aber nicht, verwirft es getaggte Frames stillschweigend, und ein Teil der Störungen, die im Alltag als „große Pakete kommen nicht durch“ beschrieben werden, beginnt genau hier.

Wo der 802.1Q-Tag im Ethernet-Frame sitzt. Ein ungetaggter Frame enthält der Reihe nach die Ziel-MAC, die Quell-MAC, das Typfeld und die Nutzdaten. Bei einem getaggten Frame wird der 4 Byte lange 802.1Q-Tag zwischen Quell-MAC und Typfeld eingefügt, also in der Mitte des Frames und nicht an einem Ende. Der Tag selbst hat vier Felder: eine 16 Bit lange TPID mit dem festen Wert 0x8100, die den Frame als getaggt kennzeichnet, 3 Bit PCP für die Priorität, 1 Bit DEI, das angibt, ob der Frame verworfen werden darf, und eine 12 Bit lange VID mit der VLAN-ID, einem Wert von 1 bis 4094. Ungetaggter Frame Ziel-MAC Quell-MAC Typ Nutzdaten Hier kommen 4 Byte hinein Getaggter Frame Ziel-MAC Quell-MAC 802.1Q Typ Nutzdaten Im Tag TPID 16 Bit · 0x8100 PCP 3 Bit DEI 1 Bit VID 12 Bit · 1-4094 Der Tag sitzt zwischen Quell-MAC und Typfeld. Für die VLAN-ID bleiben nur 12 Bit. Wo der 802.1Q-Tag im Ethernet-Frame sitzt. Ein ungetaggter Frame enthält der Reihe nach die Ziel-MAC, die Quell-MAC, das Typfeld und die Nutzdaten. Bei einem getaggten Frame wird der 4 Byte lange 802.1Q-Tag zwischen Quell-MAC und Typfeld eingefügt, also in der Mitte des Frames und nicht an einem Ende. Der Tag selbst hat vier Felder: eine 16 Bit lange TPID mit dem festen Wert 0x8100, die den Frame als getaggt kennzeichnet, 3 Bit PCP für die Priorität, 1 Bit DEI, das angibt, ob der Frame verworfen werden darf, und eine 12 Bit lange VID mit der VLAN-ID, einem Wert von 1 bis 4094. Ungetaggter Frame Getaggter Frame Ziel-MAC Quell-MAC Typ Nutzdaten Ziel-MAC Quell-MAC 802.1Q Typ Nutzdaten Hier kommen 4 Byte hinein Im Tag (802.1Q) TPID 16 Bit · 0x8100 PCP 3 Bit DEI 1 Bit VID 12 Bit · 1-4094 Der Tag sitzt zwischen Quell-MAC und Typfeld. Für die VLAN-ID bleiben nur 12 Bit.
Ein Namensschild ändert nicht, wer der Besucher ist; es wird nur angesteckt. Der 802.1Q-Tag funktioniert genauso: Der Frame wird nicht umgeschrieben, der Tag wird zwischen Quell-MAC und Typfeld eingeschoben.

Access-Port oder Trunk-Port

Ein Switch-Port spielt gegenüber VLANs eine von zwei Rollen, und der Unterschied passt in eine Zeile: Ein Access-Port versteckt den Tag, ein Trunk-Port transportiert ihn.

Auf der Messe sind das der Empfang und der Hauptgang.

  • Der Access-Port ist der Empfang. Das angeschlossene Gerät weiß nichts von Tags und sendet einen gewöhnlichen, ungetaggten Frame. Der Port nimmt ihn an, schreibt den Tag seines eigenen VLANs darauf und reicht ihn in den Switch. In Gegenrichtung entfernt er den Tag, bevor der Frame beim Gerät ankommt.
  • Der Trunk-Port ist der Hauptgang. Verkehr aus mehreren VLANs läuft gleichzeitig darüber, und jeder Frame behält seinen Tag. Am anderen Ende sitzt ein Gerät, das Tags versteht: ein weiterer Switch, ein Router, ein Virtualisierungshost oder ein entsprechend konfiguriertes Betriebssystem.

Die Frage, die es entscheidet: Versteht das Gerät am anderen Ende VLANs?

EigenschaftAccess-PortTrunk-Port
Transportierte VLANsEinesMehrere
Tag beim VerlassenEntferntBleibt
Gerät am anderen EndeKennt keine TagsVersteht Tags
Typischer AnschlussPC, Drucker, IP-Telefon, KameraSwitch, Router, Server, Access Point

Ein PC an einem Trunk-Port bekommt ein Schild, das er nicht lesen kann: Jeder eingehende Frame beginnt mit 4 Byte, die er nicht versteht, und die meisten Betriebssysteme verwerfen solche Frames. Ein Switch an einem Access-Port ist der umgekehrte Fall: Sie verengen den Hauptgang auf einen einzigen Empfang, und der Verkehr aller anderen Hallen verschwindet auf diesem Kabel.

Kurz gesagt: An Access-Ports hängen Endgeräte, Trunks sind die Wege zwischen den Geräten, die Verkehr weiterleiten. Die Regel für die Praxis: Jedes Endgerät landet im Normalfall in genau einem VLAN. Entweder kommt es ungetaggt an einem Access-Port an und wird dessen VLAN zugeordnet, oder es kann seine Frames selbst taggen und verlässt einen Trunk in das VLAN seiner Wahl. Letzteres ist die Ausnahme, und genau die baut der Laborabschnitt unten.

VLAN-Typen: Daten, Sprache, Management und VLAN 1

Die „Typen“ von VLANs sind technisch keine verschiedenen VLANs. Alle nutzen denselben 802.1Q-Tag, und der Switch behandelt sie gleich. Unterschiedlich ist die Rolle, die Sie vergeben. Alle Schilder kommen aus demselben Drucker; nur der Aufdruck ändert sich.

  • Daten-VLAN: Arbeitsplatzrechner, Drucker, gewöhnlicher Geschäftsverkehr. Die meisten VLANs sind von dieser Art.
  • Voice-VLAN: reserviert für IP-Telefonie, mit einem Verhalten, das einen eigenen Abschnitt verdient.
  • Management-VLAN: die Verwaltungsoberflächen von Switches, Routern und Access Points. Es wird nicht aus Leistungsgründen getrennt, sondern zur Zugriffskontrolle: Niemand, der sich ins Netz steckt, muss die Anmeldeseite eines Switches sehen.
  • VLAN 1 (Default-VLAN): das VLAN, zu dem ab Werk jeder Port gehört.

Voice-VLAN: zwei Geräte, eine Netzwerkdose

Das Voice-VLAN ist die häufigste Form von „zwei VLANs an einem Port“, und Sie sind vermutlich schon daran vorbeigelaufen. Das Tischtelefon steckt in der Wanddose, der PC im zweiten Anschluss auf der Rückseite des Telefons. Ein Kabel, zwei Geräte.

Der Switch-Port ist so eingestellt, dass der Verkehr des PCs ungetaggt ins Daten-VLAN geht, während das Telefon getaggt ins Voice-VLAN sendet. Das Telefon schreibt den Tag selbst, weil es Tags versteht; der PC merkt davon nichts.

Der Grund ist nicht Bequemlichkeit. Sprachverkehr verträgt weder Verzögerung noch Jitter und muss priorisiert werden, und die Priorität steckt bereits im Tag: Genau dafür gibt es das PCP-Feld aus der Tabelle oben. Das p 0 im Mitschnitt weiter unten kennzeichnet gewöhnlichen Verkehr; ein Sprach-Frame trägt einen höheren Wert.

Warum VLAN 1 Ärger macht

VLAN 1 ist das VLAN, dem auf einem unkonfigurierten Switch jeder Port angehört, und zwei Eigenschaften machen es riskant: Es lässt sich nicht löschen, und es ist standardmäßig überall.

Die VLAN-Liste des Laborswitches zeigt es:

VLAN   Name                             Ports          Type
-----  ---------------                  -------------  --------------
1      default                          Po1-64,        Default
                                        Gi1/0/25-48,
                                        Te1/0/1-4
5      YONETIM                          Gi1/0/1-24     Static
30     LAB-VLAN30                       Gi1/0/3        Static

Drei Dinge sind hier abzulesen:

  1. Die Portliste in der Zeile 1 default enthält jeden Port, den niemand von Hand zugewiesen hat: Gi1/0/25-48 und die ungenutzten Link-Aggregation-Gruppen. Jede freie Dose ist Mitglied von VLAN 1.
  2. Default gegenüber Static in der Spalte Type zeigt, dass VLAN 1 mit dem Gerät kam, nicht mit einer Konfiguration.
  3. 5 YONETIM (türkisch für „Verwaltung“) und 30 LAB-VLAN30 wurden von Hand angelegt. Namen sind optional, aber sechs Monate später oft der einzige Hinweis für die nächste Person, die den Portplan liest.

Die praktische Folge: Wer sich in eine freie Dose steckt, landet ohne weiteres in VLAN 1. Deshalb nutzt man VLAN 1 weder für Benutzerdaten noch als Management-VLAN, und freie Ports werden abgeschaltet oder in ein VLAN verschoben, in dem niemand wohnt.

Was ist ein Native VLAN?

Das Native VLAN ist das VLAN, dem ungetaggte Frames auf einem Trunk-Port zugeordnet werden. Ein Trunk erwartet, dass alles getaggt ist; kommt ein ungetaggter Frame an, verwirft er ihn nicht, sondern steckt ihn ins Native VLAN.

Auf der Messe ist das der Besucher ohne Schild. Der Sicherheitsdienst wirft ihn nicht hinaus, sondern schickt ihn in den allgemeinen Bereich. Welcher Raum das ist, legt die Hausordnung fest, und steht dort das Falsche, landet der Besucher, wo er nicht hingehört.

Zwei Eigenschaften unterscheiden das Native VLAN, und beide laden zu Fehlern ein:

  1. Sein Verkehr läuft ungetaggt. Frames im Native VLAN überqueren den Trunk ohne Tag, bewusst so vom Standard vorgesehen, für ältere Geräte ohne Tag-Verständnis.
  2. Es muss an beiden Enden übereinstimmen. Sagt ein Ende Native 5 und das andere Native 1, landet ein ungetaggter Frame auf der anderen Seite in einem völlig anderen VLAN. Zwei Netze sind verbunden, und niemand bemerkt es.

Das Zweite heißt Native-VLAN-Mismatch, und die meisten Organisationen haben die Voraussetzung dafür ab Werk: Das Native VLAN ist bei den meisten Switches standardmäßig VLAN 1.

Die Regel daraus ist einfach: Lassen Sie das Native VLAN nie auf dem Standardwert. Vergeben Sie eine ungenutzte VLAN-Nummer, an der nichts hängt, und setzen Sie sie an beiden Trunk-Enden gleich. Dann landet ein ungetaggter Frame nicht versehentlich am richtigen Ort, sondern nirgendwo.

VLAN anlegen und Access-Ports zuweisen

VLAN-Konfiguration besteht aus zwei getrennten Schritten, und wer sie verwechselt, erlebt das klassische „VLAN angelegt, funktioniert aber nicht“: Zuerst wird das VLAN angelegt, dann werden Ports ihm zugewiesen. Das Zweite geht nicht ohne das Erste, und das Erste nützt nichts ohne das Zweite. Eine Halle zu eröffnen, ohne Schilder dafür zu drucken, lässt sie leer.

Schritt eins: das VLAN anlegen. Es bekommt eine Nummer; ein Name ist optional, in der Praxis aber Pflicht:

vlan 30
name "LAB-VLAN30"
exit

Schritt zwei: den Port zuweisen. Ports für Endgeräte gehen in den Access-Modus:

interface Gi1/0/1
switchport access vlan 5

Diese zwei Zeilen machen den Port zum Empfang von VLAN 5: Das Gerät spricht ungetaggt, der Port setzt und entfernt den Tag selbst. Am Gerät ist nichts einzustellen, und es sollte auch nichts eingestellt werden. Für mehrere Ports gibt es einen Bereich:

interface range Gi1/0/10-12
switchport access vlan 30

Um einen Port aus einem VLAN zu nehmen, gibt es kein Löschen; der Port kehrt zum Standard zurück, also zu VLAN 1:

interface Gi1/0/10
no switchport access vlan

Das übersieht man leicht, und die Folge betrifft die Sicherheit: Wenn Sie glauben, einen Port „geparkt“ zu haben, haben Sie ihn tatsächlich in das VLAN zurückgeschickt, in das jeder fällt.

Wohin mit ungenutzten Ports? Das Blackhole-VLAN

Der richtige Ort für einen ungenutzten Port ist ein VLAN, das nirgendwohin führt, in der Praxis Blackhole-VLAN genannt. Eine VLAN-Nummer wird reserviert, aber nichts lebt darin, nichts routet es, und kein Trunk transportiert es. Ein Frame, der dort landet, erreicht niemanden. Die Reihenfolge ist dieselbe, nur wird der Port zusätzlich abgeschaltet:

vlan 999
name "BLACKHOLE"
exit
interface Gi1/0/10
switchport access vlan 999
shutdown

Warum beides? Weil jedes allein unvollständig ist. Schalten Sie den Port nur ab, fällt er beim Wiedereinschalten ins Default-VLAN zurück. Verschieben Sie ihn nur ins Blackhole, bleibt er elektrisch aktiv und ein Gerät bekommt zumindest einen Link. Zusammen ist die Tür verschlossen und dahinter ist nichts. Danach sieht der Port so aus:

Port: Gi1/0/10
VLAN Membership Mode: Access Mode
Access Mode VLAN: 999
Trunking Mode Native VLAN: 1 (default)
Trunking Mode VLANs Enabled: All

Die letzten beiden Zeilen überliest man leicht, und sie sind wichtig: Der Port ist im Access-Modus, doch seine Trunk-Einstellungen existieren weiter, mit Standardwerten. Wird er je zum Trunk, ist sein Native VLAN 1 und er erlaubt alle VLANs. Genau deshalb funktioniert das Switch Spoofing aus dem Sicherheitsabschnitt: Die Einstellungen sind nicht gelöscht, nur ruhend.

Muss ich jeden Switch von Hand konfigurieren?

Bei zehn Switches stellt sich die Frage, ob dieselbe VLAN-Liste zehnmal eingetippt werden muss. In den meisten Organisationen lautet die Antwort ja, und das ist eine bewusste Entscheidung, keine Lücke.

Es gibt Protokolle, die die VLAN-Liste automatisch verteilen. Ciscos proprietäres heißt VTP (VLAN Trunking Protocol); das IEEE-Pendant ist GVRP, inzwischen durch MVRP ersetzt. Die Idee ist dieselbe: Ein auf einem Switch angelegtes VLAN verbreitet sich über die Trunks. Der Preis dieser Bequemlichkeit wurde im Feld teuer gelernt: Diese Protokolle verbreiten auch Löschungen. Ein Switch mit scheinbar neuerer Datenbankrevision kann der ganzen Domäne seine Liste aufzwingen und funktionierende VLANs mitnehmen. Statt zu raten, habe ich den Laborswitch gefragt:

console#show vtp status
              ^
% Invalid input detected at '^' marker.

console#show gvrp configuration
Global GVRP Mode: Disabled

Zwei Zeilen, zwei Fakten: VTP gibt es auf diesem Gerät nicht, erwartungsgemäß, denn VTP ist Cisco-spezifisch und der Laborswitch stammt von einem anderen Hersteller. Und GVRP ist vorhanden, aber ab Werk aus, was genau zum Risiko oben passt. Mein Rat: Ist die Zahl der VLANs von Hand beherrschbar, lassen Sie die automatische Verteilung aus. Schalten Sie sie ein, leeren Sie vor dem Anschließen die VLAN-Datenbank jedes neuen Switches.

Labor: zwei VLANs auf einem Kabel

Alles bisher Gesagte lässt sich messen. Der Aufbau: ein verwalteter Switch, ein Arbeitsplatzrechner an einem einzigen Kabel und eine Linux-VM, die per Bridge an der Netzwerkkarte dieses Rechners hängt. Zwei Geräte, ein physischer Port.

Ausgangspunkt war genau das Problem, das zu diesem Artikel führte: Der Port stand im Access-Modus auf switchport access vlan 5. Ein Access-Port trägt ein VLAN, also konnten Rechner und VM nicht in verschiedene VLANs. Beide betraten dieselbe Halle mit demselben Schild. Das Ziel: den Port zum Trunk machen, den Rechner ungetaggt im Native VLAN 5 lassen und die VM getaggt in VLAN 30 schicken. Ein Kabel, zwei VLANs, keine zusätzliche Hardware.

Warum die Befehlsreihenfolge beim Trunk entscheidet

Hier lässt sich etwas verlieren. Sobald Sie den Befehl geben, der den Port zum Trunk macht, landet sein ungetaggter Verkehr im Native VLAN. Das ist standardmäßig 1, die Management-Adresse des Switches liegt aber in VLAN 5. Falsche Reihenfolge, und die Sitzung, in der Sie tippen, schneidet sich selbst ab. Deshalb wird das Native VLAN vor dem Moduswechsel festgelegt:

interface Gi1/0/3
switchport trunk native vlan 5
switchport trunk allowed vlan 5,30
switchport mode trunk

Die Reihenfolge ist bewusst verkehrt herum. Die ersten zwei Zeilen schreiben Trunk-Parameter auf einen Port, der noch im Access-Modus ist, und ändern nichts. Wechselt die dritte Zeile den Modus, ist das Native VLAN schon 5, und der ungetaggte Management-Verkehr bleibt, wo er ist. Der Port danach:

Port: Gi1/0/3
VLAN Membership Mode: Trunk Mode
Trunking Mode Native VLAN: 5
Trunking Mode Native VLAN Tagging: Disabled
Trunking Mode VLANs Enabled: 5,30
  1. VLAN Membership Mode: Trunk Mode: Der Port ist jetzt Gang, nicht Empfang.
  2. Trunking Mode Native VLAN: 5: Alles Ungetaggte zählt als VLAN 5. Diese Zeile hält die Sitzung am Leben.
  3. Native VLAN Tagging: Disabled: Das Native VLAN verlässt den Port ohne Tag; mit Tag würde der Rechner es nicht verstehen.
  4. VLANs Enabled: 5,30: Nur diese zwei Hallen dürfen den Gang nutzen.

Die VM bekommt ein getaggtes Interface

Die Switch-Seite steht. Nun muss die VM getaggte Frames erzeugen, denn VLAN 30 ist nicht native und der Trunk erwartet dafür einen Tag. Unter Linux legt man dafür ein VLAN-Subinterface auf das physische Interface:

Bash
ip link add link ens33 name ens33.30 type vlan id 30
ip addr add 192.168.30.15/24 dev ens33.30
ip link set ens33.30 up

Die Maschine hat nun zwei Interfaces auf derselben Karte:

ens33            UNKNOWN        192.168.1.15/24
ens33.30@ens33   UP             192.168.30.15/24

ens33 spricht ungetaggt und landet im Native VLAN 5. ens33.30 versieht jeden Frame mit dem Tag für VLAN 30. Dieselbe Karte, dasselbe Kabel, zwei Hallen.

Was hat der Switch gesehen?

Die übliche Antwort im Feld lautet, ein Port gehöre zu einem VLAN, und die meisten Portpläne sind so gezeichnet. Die MAC-Adresstabelle des Switches:

Vlan     Mac Address           Type        Port
-------- --------------------- ----------- ---------------------
1        F48E.381B.184D        Management  Vl1
5        000C.29A0.719A        Dynamic     Gi1/0/3
5        5811.22B1.0E54        Dynamic     Gi1/0/3
5        F48E.381B.184D        Management  Vl5
30       000C.29A0.719A        Dynamic     Gi1/0/3
30       F48E.381B.184D        Management  Vl30
  1. 5 ... 5811.22B1.0E54 ... Gi1/0/3: die Karte des Arbeitsplatzrechners, ungetaggt, also im Native VLAN 5.
  2. 5 ... 000C.29A0.719A ... Gi1/0/3: die Karte der VM auf ihrem ungetaggten Interface, ebenfalls in VLAN 5.
  3. 30 ... 000C.29A0.719A ... Gi1/0/3: dieselbe MAC-Adresse, derselbe Port, ein anderes VLAN.

Die dritte Zeile ist der Kern dieses Artikels. Eine Hardware-Adresse ist an einem physischen Port Mitglied zweier VLANs. Der Switch hat nicht anhand der MAC-Adresse entschieden, sondern anhand des Tags am Frame. Mit Schild in Halle 30, alle anderen in den allgemeinen Bereich.

Warum Sie den Tag nicht sehen: zwei Fallen beim Mitschneiden

Einen getaggten Frame mitzuschneiden war schwieriger, als ihn zu konfigurieren, und zwar aus Gründen, die nichts mit VLANs zu tun haben: Die Voreinstellungen der Mitschnitt-Werkzeuge machen den Tag unsichtbar. Der erste Versuch ergab:

vlan 30 etiketli: 0
etiketsiz       : 31

Das Zählskript gab seine Ergebnisse auf Türkisch aus: etiketli heißt „getaggt“, etiketsiz „ungetaggt“. Einunddreißig Frames, keiner getaggt, während der Switch zur selben Zeit MAC-Adressen in VLAN 30 lernte. Widersprechen sich zwei Messungen, ist eine davon falsch.

Falle 1: Der Mitschnittfilter hat die getaggten Frames verworfen

Der Mitschnitt lief mit dem Filter arp or icmp. Er wirkt harmlos und war das ganze Problem: Das Primitiv arp erkennt keinen 802.1Q-getaggten ARP-Frame. Der Filter prüft das Typfeld an Byte 12; im getaggten Frame steht dort die Tag-Markierung 0x8100, nicht ARP. Der Filter greift nicht, und der Frame wird nie in die Datei geschrieben. Die pcap-Datei enthielt also überhaupt keine getaggten Frames, und die spätere Suche nach vlan 30 durchsuchte eine leere Datei. Ohne Filter erschien der Tag:

00:0c:29:a0:71:9a > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 46:
    vlan 30, p 0, ethertype ARP (0x0806), Request who-has 192.168.30.1 tell 192.168.30.15

Diese Zeile ist die Feldtabelle von oben, auf der Leitung eingefangen:

  1. ethertype 802.1Q (0x8100): die TPID, der feste Wert, der den Frame als getaggt kennzeichnet.
  2. vlan 30: die VID, 12 Bit, die Hallennummer.
  3. p 0: die PCP, 3 Bit, Priorität null, gewöhnlicher Verkehr.
  4. ethertype ARP (0x0806): das eigentliche Typfeld, jetzt hinter dem Tag. Hier sehen Sie, dass der Tag eingefügt wurde.

Falle 2: Auf dem Rückweg wird der Tag entfernt

Mit korrigiertem Filter zeigte sich ein zweites, interessanteres Problem. Der ausgehende Frame war getaggt, die Antwort des Switches 1,1 Millisekunden später kam aber ungetaggt:

17:14:44.396425 00:0c:29:a0:71:9a > ff:ff:ff:ff:ff:ff, ethertype 802.1Q (0x8100), length 46: vlan 30, p 0, ethertype ARP (0x0806), Request who-has 192.168.30.1 tell 192.168.30.15
17:14:44.397569 f4:8e:38:1b:18:4d > 00:0c:29:a0:71:9a, ethertype ARP (0x0806), length 60: Reply 192.168.30.1 is-at f4:8e:38:1b:18:4d

Die beiden Zeilen unterscheiden sich in einem Feld: In der zweiten fehlt 802.1Q. Die Antwort kam aus VLAN 30, der Switch schickte sie getaggt über den Trunk, doch bei der VM war der Tag verschwunden. Das Ergebnis ließ sich direkt messen: Die Nachbartabelle des getaggten Interfaces blieb leer.

192.168.30.1 INCOMPLETE

Die Antwort kam an und steht im Mitschnitt, aber ens33.30 erkannte sie nicht als die eigene, weil darauf nicht mehr VLAN 30 stand. Ein ungetaggter Frame wurde dem ungetaggten Interface zugestellt, wo nichts auf ihn wartete.

Die Lehre für die Praxis: Ein VLAN-Pfad kann nur in eine Richtung funktionieren. Zu sehen, dass Verkehr hinausgeht, und „Tagging läuft“ zu erklären, genügt nicht; der Rückweg muss den Tag ebenfalls behalten, und das sehen Sie nur, wenn beide Richtungen im selben Mitschnitt stehen. Für beidseitige Tests mit Tags ist ein physisches Gerät direkt am Switch die sicherere Wahl als eine VM hinter einer Bridge.

Was Segmentierung still kaputt macht: ein Zeitserver, der ins Leere lief

Ein Host, der in ein neues VLAN wandert, verliert nicht nur Erreichbarkeit. Er verliert still jede Abhängigkeit, die das flache Netz nebenbei erfüllt hatte, und meldet es selten. Dasselbe Labor lieferte ein sauberes Beispiel, das im türkischen Original dieses Artikels nicht vorkommt.

Die Linux-VM im Labor ist zugleich der Zeitserver des Labors. Als der Bridge-Port sie auf eine Insel setzte, riss die Abhängigkeitskette Glied für Glied, und jedes Glied wurde gemessen:

  1. Die Maschine konnte die Hardware-Adressen ihres Routers und des DNS-Servers 192.168.1.10 nicht mehr auflösen; die ARP-Einträge wurden nie vollständig.
  2. Ohne DNS ließen sich die per Hostname konfigurierten NTP-Server nicht auflösen.
  3. Ohne auflösbare Server war chronys Quellenliste leer.
  4. chrony fiel auf seine lokale Referenz zurück und lieferte weiter Zeit mit Stratum 10, ohne einen Fehler, den jemand gesehen hätte.

Beunruhigend ist die letzte Zeile: Die Uhr ging weiterhin richtig, innerhalb etwa einer Sekunde zum Host, weil der Hypervisor sie auf Kurs hielt. Nichts sah kaputt aus. Ein Zeitserver ohne vorgelagerte Quelle beantwortete weiter Anfragen, und sein einziges Symptom war eine leere Liste, die niemand prüft, der nicht danach sucht.

Genau das heißt „flache Netze verstecken Abhängigkeiten“. Prüfen Sie vor und nach dem Umzug eines Servers in ein neues VLAN, was er bisher umsonst bekam:

  • Gateway und DNS auf Schicht 2: Hat die ARP-Tabelle vollständige Einträge für Standard-Gateway und DNS-Server?
  • Namensauflösung: Lösen sich die Hostnamen in seiner Konfiguration noch auf?
  • Zeit: Zeigt chronyc sources (unter Windows w32tm /query /status) eine echte Quelle und keinen lokalen Rückfall?
  • Adressvergabe: Hängt das VLAN an DHCP, gibt es ein Relay zum DHCP-Server?

VLAN-Fehler haben eine gemeinsame Signatur: Alles sieht richtig aus. Kabel steckt, LED leuchtet, Subnetz stimmt, Gateway ist gesetzt. Trotzdem ist das Gerät nicht erreichbar. Ping allein sagt hier nichts, denn ein stummer Ping hat Dutzende möglicher Ursachen. Auf der Messe ist der Besucher im Gebäude, läuft durch den Gang, alle sehen ihn. Aber die Halle, zu der er will, öffnet sich nicht. Das Problem ist nicht das Gebäude, sondern das Schild.

Aussagekräftig ist die ARP-Tabelle. Drei Einträge derselben VM, drei Ziele im scheinbar selben Adressblock:

192.168.1.2   lladdr f4:8e:38:1b:18:4d STALE
192.168.30.1  FAILED
192.168.1.1   FAILED
ZielARP-StatusPingDiagnose
192.168.1.2AufgelöstFunktioniertSelbes VLAN, kein Problem
192.168.30.1FAILEDScheitertAnfrage geht raus, Antwort kommt nicht an. Einbahnpfad
192.168.1.1FAILEDScheitertAndere Broadcast-Domäne; Ziel ist gar nicht in diesem VLAN

Die zweite und dritte Zeile sehen von außen gleich aus: Ping scheitert, ARP scheitert. Die Ursachen sind völlig verschieden, und nur ein Mitschnitt trennt sie. Im zweiten Fall gibt es eine Antwort auf der Leitung, die die Maschine nicht erkannt hat; im dritten gibt es gar keine, weil die Frage die Broadcast-Domäne des Ziels nie erreicht hat. Daraus folgt eine praktische Reihenfolge:

  1. Erst die ARP-Tabelle, nicht Ping. Entsteht kein Eintrag, liegt das Problem auf Schicht 2, und die Suche in Routing, Firewall oder Diensten ist verlorene Zeit.
  2. Dann die MAC-Tabelle des Switches. Erscheint die MAC des Geräts im erwarteten VLAN? Wenn nicht, stimmt Port-Modus oder Tagging nicht; erscheint sie im falschen, prüfen Sie das Native VLAN.
  3. Zuletzt mitschneiden, und zwar ohne Filter. Wenn Sie filtern müssen, stellen Sie sicher, dass der Filter keine getaggten Frames verwirft.

Warum Inter-VLAN-Routing einen Router braucht

Zwei Geräte in verschiedenen VLANs erreichen sich nicht direkt, auch nicht am selben Switch; dazwischen muss etwas auf Schicht 3 sitzen. Das ist keine Einschränkung, sondern das Wesen eines VLANs. Ein Switch leitet nach MAC-Adresse weiter und sucht sie innerhalb des VLANs: Jeder Eintrag der MAC-Tabelle trägt eine VLAN-Nummer, wie die Tabelle oben zeigt. Für einen Frame in VLAN 5 werden die Einträge von VLAN 30 nie herangezogen.

Drei Aufbauten übernehmen die Aufgabe:

  • Router-on-a-Stick: ein Trunk zu einem Router, ein Subinterface pro VLAN. Verbreitet in kleinen Umgebungen, aber der gesamte Inter-VLAN-Verkehr teilt sich diese eine Leitung.
  • Layer-3-Switch: Der Switch routet selbst, mit einem virtuellen Interface pro VLAN. Schnell, weil der Verkehr das Gerät nicht verlässt.
  • Firewall: die Wahl, wenn der Verkehr zwischen VLANs gegen Regeln geprüft werden soll. Nicht langsam, sondern bewusst neugierig.

Jedes VLAN braucht seinen eigenen Adressbereich, und diese dürfen sich nicht überlappen.

Eine Verkehrsart braucht an der VLAN-Grenze eine Sonderbehandlung: die Adressvergabe. Ein Gerät, das eine IP-Adresse anfordert, sendet einen Broadcast, der an der VLAN-Grenze endet; ein DHCP-Server in einem anderen VLAN hört ihn nie. Die Standardlösung ist ein DHCP-Relay auf dem Router oder Layer-3-Switch, das die Anfrage als gewöhnlichen Unicast weiterreicht.

VLAN-Sicherheit: Native-VLAN-Risiko und VLAN Hopping

VLANs werden als Sicherheitsmechanismus eingesetzt, bieten aber keine kryptografische Garantie: Der Tag ist eine unbeglaubigte Markierung. Es gibt eine Tür, die Schilder prüft, aber das Schild selbst ist nicht signiert. Aus dieser Lücke wachsen zwei Angriffe, beide über das Native VLAN.

Double Tagging. Der Angreifer setzt zwei Tags auf einen Frame. Der äußere ist sein eigenes Native VLAN, der innere das Ziel-VLAN. Der erste Switch entfernt den äußeren Tag nach der Regel, dass Native-VLAN-Verkehr ungetaggt über Trunks geht, und schickt den Frame weiter. Der zweite Switch liest den verbliebenen inneren Tag und stellt den Frame im Ziel-VLAN zu. Keine Tür wurde aufgebrochen; die eigene Hausordnung wurde genutzt. Der Angriff funktioniert nur in eine Richtung, aber eine Richtung genügt, um etwa einen Neustartbefehl zu senden.

Switch Spoofing. Auf manchen Switches werden Ports automatisch zu Trunks, wenn sich die Gegenseite als Switch ausgibt. Der Angreifer tut genau das, der Port wird Trunk, und ab dann kommt der Verkehr jedes VLANs bei ihm an. Auf der Messe hieße das, am Empfang „ich gehöre zum Personal“ zu sagen. Prüft der Empfang nicht, bekommt der Besucher nicht das Schild einer Halle, sondern den Schlüssel zum Gang, den alle Hallen teilen.

Drei Maßnahmen schließen beide Angriffe:

  1. Native VLAN auf eine ungenutzte Nummer legen. Hängt nichts daran, führt der Schritt „äußeren Tag entfernen“, auf dem Double Tagging beruht, ins Nichts.
  2. Trunks von Hand festlegen. Automatische Trunk-Aushandlung abschalten; ein Port wird nur Trunk, weil Sie es so konfiguriert haben.
  3. Benutzerports auf Access festnageln und nur das nötige VLAN erlauben. Es gibt keinen legitimen Grund, warum eine Dose am Schreibtisch mehr als ein VLAN sehen sollte.

Die skalierbare Antwort auf „wer weist welchem Port welches VLAN zu“ läuft über Authentifizierung: Ein Gerät weist beim Verbinden seine Identität nach und bekommt sein VLAN entsprechend zugewiesen (802.1X mit einem RADIUS-Server). Der Vorteil: Niemand muss den Portplan von Hand aktuell halten.

Am Provider-Übergang: Access oder Trunk?

Auf der Leitung zu Ihrem Provider kostet der Unterschied zwischen Access und Trunk mehr als im eigenen Netz, denn eine Korrektur bedeutet, auf das Wartungsfenster der Gegenseite zu warten.

Was ich in der Zusammenarbeit mit Providern in Rechenzentren gelernt habe: Solange Ihre Topologie nicht wirklich groß und komplex ist, verlangen Sie vom Router des Providers ein Access-VLAN. Diese Leitung transportiert Verkehr zwischen Ihnen und dem Provider, und Komplexität an dieser Grenze bringt nichts. Der Provider liefert ungetaggten Verkehr, Sie stecken ihn in einen Port Ihres Geräts, fertig. Im eigenen Netz bauen Sie Access- und Trunk-Konfigurationen selbst, und dort haben Sie die Komplexität im Griff: Ein Fehler, und Sie verbinden sich mit Ihrem Gerät und nehmen ihn zurück, ohne Termin.

Die entscheidende Frage ist betrieblich, nicht technisch: Wer repariert diesen Port, wenn er ausfällt? Sind nicht Sie es, halten Sie ihn so einfach wie möglich. Einen Trunk vom Provider zu nehmen lohnt sich nur, wenn Sie über dieselbe physische Verbindung wirklich mehrere Dienste beziehen.

Anzeige

Fazit: ein kleiner Tag mit großen Folgen

Das ganze VLAN beruht auf einem 4-Byte-Tag, der mitten in einen Frame geschoben wird. Zwölf seiner Bits sagen, zu welcher Halle Sie gehören; der Rest trägt Priorität und kennzeichnet den Tag. Die Einfachheit täuscht: Dieses kleine Feld lässt einen Switch Dutzende Netze beherbergen, die sich nie hören.

Das Labor hat vier Dinge gemessen, und sie zeigen in dieselbe Richtung. Dieselbe MAC-Adresse erschien an einem Port in zwei VLANs, weil der Switch nach dem Tag entscheidet, nicht nach der MAC. Der Tag war in Mitschnitten aus zwei Gründen unsichtbar, die nichts mit VLANs und alles mit dem Messwerkzeug zu tun hatten. Ein VLAN-Pfad funktionierte nur in eine Richtung, also ist „Verkehr geht raus“ nicht dasselbe wie „Verbindung steht“. Und ein Server auf eigenem Segment lief still auf einem Rückfall weiter, weil die Abhängigkeiten fehlten, die das flache Netz umsonst geliefert hatte.

Eine Gewohnheit spart bei VLAN-Fehlern am meisten Zeit: Schauen Sie in die ARP-Tabelle, nicht auf Ping. Wird Ping stumm, ist die Liste der Ursachen lang; wird ARP stumm, liegt das Problem auf Schicht 2, und die Suche wird sofort enger.

Fragen zu VLANs

Die VLAN-ID ist ein 12-Bit-Feld, also 4.096 Werte. Die Werte 0 und 4.095 sind reserviert, nutzbar sind 1 bis 4.094; manche Switches reservieren eine weitere Nummer für sich. Der Laborswitch hinter diesem Artikel akzeptiert 1 bis 4.093. Praktisch stößt kaum eine Organisation an diese Grenze. Die eigentliche Grenze ist, wie viele Adressbereiche und Regeln dazwischen jemand pflegen will.
Nein, und die beiden schließen sich auch nicht aus. Ein WLAN beschreibt, wie Geräte verbunden sind: per Funk statt Kabel. Ein VLAN beschreibt, wie Datenverkehr getrennt wird, und funktioniert kabelgebunden wie drahtlos. In der Praxis gehören sie zusammen: Ein Gast-WLAN wird meist einem eigenen VLAN zugeordnet, damit ein Smartphone im Gastnetz keine internen Server erreicht.
Das Anlegen eines VLANs nicht, denn es berührt keinen bestehenden Port. Riskant wird es beim Ändern des Port-Modus: Sobald ein Port von Access auf Trunk wechselt, landet sein ungetaggter Verkehr im Native VLAN, und stimmt das nicht, ist das angeschlossene Gerät weg. Legen Sie zuerst das Native VLAN fest, ändern Sie dann den Modus und speichern Sie erst, wenn alles funktioniert.
Ja, und das ist einer der am häufigsten falsch diagnostizierten Fehler. Derselbe Adressbereich beweist nicht dieselbe Broadcast-Domäne; liegen die Geräte in verschiedenen VLANs, erreicht die ARP-Anfrage die Gegenseite nie. Schauen Sie zuerst in die ARP-Tabelle, nicht auf Ping: Entsteht nie ein Eintrag, liegt das Problem auf Schicht 2, und die Suche in Firewall-Regeln ist verlorene Zeit.

Dieser Artikel ist eine Adaption eines Leitfadens, den der Autor zuerst auf Türkisch auf sercebilisim.com veröffentlicht hat: VLAN Nedir? 802.1Q Etiketi, Access ve Trunk Farkı

Anzeige

Geschrieben von

İlker Pehlivan

Netzwerk- und Systemadministrator, Gründer von Serçe Bilişim

Ich betreue die Netzwerke und Server, von denen die Arbeit anderer Menschen abhängt. Vor der Gründung meiner eigenen Beratung habe ich das Backbone-Netz, die Firewalls und die Kernsysteme einer großen Organisation mit vielen Standorten und mehreren tausend Nutzern administriert. Ich schreibe über das, was tatsächlich ausgefallen ist.