Berlin:Switch VLAN Konfiguration

Aus wiki.freifunk.net
Wechseln zu: Navigation, Suche

VLANs (Wikipedia) werden u.a. dafür benutzt, die physischen Ports eines Switches einzeln anzusprechen, wenn sich der Switch software-seitig als ein Interface präsentiert. Wenn man nicht weiß, wie, kann man sich bricken, oder es funktioniert einfach nicht. Ich erkläre hier mal eine VLAN-Konfiguration anhand eines Beispiels.

Beispiel

Ich habe zwei NanoStation M5, eine NanoStation M2, und einen TP-Link WR841N to bring them all and in the darkness bind them.

     ( ( ( M5                    M5 ) ) )
            |                    |
            |                    |
            | +------------------+
            | |
            | | +---------------------M2 ) ) )
            | | |
          [WR841N]

Die M5 laufen mit AirOS im Client Modus. Das heißt, jede hängt direkt an je einem 5 GHz Freifunk Richtfunk-Knoten wenige Kilometer entfernt, und aus ihrem "Main" Kabel-Port fällt einfach OLSR raus.

Die M2 läuft mit der Freifunk Firmware, und ist im wireless nur ein AP ohne OLSR, soll aber OLSR per Kabel machen. Auch sie hat den "Main" Kabel-Port als OLSR Interface konfiguriert.

Der TP-Link ist mit allen drei Ms per Ethernet Kabel verbunden, und redet mit denen ausschließlich per Kabel und ausschließlich OLSR. Er ist quasi die Meshing-Zentrale in diesem Beispiel-Setup.

Problem

Bei OLSR1, wie es von Freifunk Berlin benutzt wird, muss jedes Netzwerk-Interface seine eigene Meshing-IP haben. D.h. insbesondere, dass ein Gerät, auf dem OLSR läuft und das sowohl per LAN als auch per WLAN mit anderen Geräten meshen soll, auf jedem meshenden LAN-Port und jedem meshenden WLAN-Interface eine eigene IP konfiguriert haben muss. In der Werkseinstellung sind jedoch alle LAN-Ports auf einem Interface versammelt und teilen sich eine IP.

Im Beispiel oben muss der WR841N für funktionierendes Meshing auf drei LAN-Ports jeweils betriebssystemseitig eine eigene IP und ein eigenes Interface anbieten. Er hat ja fünf Buchsen hinten dran, sollte doch kein Problem sein. Am besten sollen dann noch die verbleibenden zwei Buchsen ganz normal das Freifunk-DHCP bieten.

     WAN    1    2    3    4
     [_]   [_]  [_]  [_]  [_]    (Sicht aufs Gehäuse hinten)
      |     |    |
      |     |    |    -DHCP-
      M5    M5   M2

Der blaue WAN Port ist beim WR841N das eth1 interface. Das ist schonmal einzeln für sich, ganz ohne VLAN Konfig. Aber in diesem Beispiel reicht das noch nicht. Vielleicht ist Dein WAN Port ja auch schon mit DSL belegt?

Die vier gelben Buchsen sind bei diesem Router aber alle ein Netzwerk Interface. Alle sind eth0, und aller traffic der dort reinkommt geht auf allen anderen eth0 Buchsen wieder raus:

     WAN    1    2    3    4
     [_]   [_]  [_]  [_]  [_]
     eth1   ------eth0------
      |     |    |
      |     |    |    -DHCP-
      M5    M5   M2
      :)    :(   :(     :(

Um die erste M5 an eth1 brauche ich mich nicht kümmern, richte einfach eth1 unter Network/Interfaces und Services/OLSR als OLSR Interface ein. Aber auf eth0 labern bisher noch alle durcheinander.

Für die zweite M5 und die M2 will ich jetzt also je einen Port von eth0 abknapsen. Die letzten beiden sollen Kabel-DHCP-Ports bleiben.

Bricken

In meinem Beispiel möchte ich also eth0 bearbeiten. Wenn man aber den Switch für eth0 falsch konfiguriert, kommt man nicht mehr über eth0 an den router ran. Es empfiehlt sich mir also, per WLAN im Router eingeloggt zu sein.

Wenn's doch mal schiefgeht: http://wiki.openwrt.org/doc/howto/generic.failsafe#stage_3trigger_a_failsafe_boot_using_a_button

Wo wir beim Einloggen sind, beachte: Sicher einloggen ohne SSL.

Switch

Mit diesen Schritten trenne ich also für die verbleibende M5 und die M2 jeweils ein VLAN ab:

Diese genauen Schritte passen nur für einen WR841N(D) und zu dem Beispiel oben, aber sie erklären gut was allgemein so passiert.

  • WICHTIG--> Network/Interfaces/DHCP/Physical: der "DHCP" bridge eth0.1 hinzufügen,
    • denn durch die Switch config wird eth0 aufhören zu funktionieren und stattdessen zu eth0.1 werden.
    • (In backbone images heißt es nicht "DHCP" sondern "LAN".)
  • Network/Switch: zwei neue VLANs "2" und "3" hinzufügen
    • CPU spalte komplett "tagged" == CPU gibt die VLAN tags vor
    • alle anderen spalten "untagged" oder "off"
    • sodass in jeder port spalte genau ein mal "untagged" vorkommt.
    • Problemquellen:
      • Brick Gefahr, falls man die cpu aus versehen vom dhcp interface oder von den ports abklemmt.
      • Die Numerierung an den Buchsen ist ganz bestimmt anders als im Switch web interface, stecke/entferne echte lebende kabel und schaue auf die stecker bildchen im web interface zum testen. Beim WR841N(D) v9 ist die Numerierung 1-4 auf dem Plastegehäuse genau umgekehrt wie im Web interface.
  • Speichern und anwenden, und wenn's klappt sind dann eth0.2 und eth0.3 verfügbar als abgesonderte Ports für je ein neues wiremesh interface unter Network/Interfaces. Mit dem Router neu zu verbinden kann vonnöten sein, weil die netzwerk Konfig neu geladen wird.
  • Und man kann eth0 dann aus der DHCP bridge entfernen, aber eth0.1 drin lassen, denn eth0 ist nun zu eth0.1 geworden.


Um also dieses Ergebnis zu erzielen...

     WAN    1      2      3      4
     [_]   [_]    [_]    [_]    [_]    (Sicht aufs Gehäuse hinten)
     eth1 eth0.2 eth0.3  --eth0.1--
      |     |      |     ---DHCP---
      |     |      |
      M5    M5     M2

...stelle ich den Switch so ein:

   VLAN ID      CPU     Port 1    Port 2    Port 3    Port 4
      1         tagged  untagged  untagged  off       off
      2         tagged  off       off       off       untagged
      3         tagged  off       off       untagged  off

Im Webinterface sieht das so aus:

Switch vlan konfiguration.png

Erklärungen

cpu?

"CPU" ist der interne Port zwischen der CPU und dem Switch. Dafür gibt es keine Buchse, ist auf der Platine direkt intern verbunden.

(Nein, "CPU" ist nicht der "WAN" port, der ist nämlich eth1 beim WR841N(D) und taucht beim Switch gar nicht auf.)

Warum ist VLAN 2 im Bild auf Port 4 statt Port 1?

Die Numerierung auf dem Gehäuse ist anders herum als im Web interface. Ist halt so beim WR841N(D).

tagged? untagged?

Ein Switch kann Ports abspalten, indem er "Hausnummern" (VLAN IDs) vergibt.

Man muss sichergehen, dass man nicht die Hausnummern von anderen Switches (oder Hackern) in der Nähe übernimmt. Dafür gibt es untagged Ports. Pakete die auf einem untagged Port reinkommen, werden von ihrer Hausnummer befreit, falls sie eine haben. Stattdessen kriegen sie die lokal eingestellte VLAN ID für diesen Port als Hausnummer verpasst (im screenshot ganz links "1", "2", "3"). Also wenn im Screenshot auf Port 4 ein Paket reinkommt, mag es ja die Hausnummer 42 mitbringen, aber weil der Port untagged ist wird 42 weggeworfen und stattdessen Hausnummer 2 eingetragen (VLAN ID).

An sich bleiben dann die jeweils abgespaltenen Ports unter sich. Damit überhaupt zwischen VLANs geredet werden kann, muss jemand die Pakete durchreichen. Das macht die CPU. Damit die auch entscheiden kann, welches Paket auf welchen Ports rauskommen soll, muss CPU in allen VLANs auf tagged stehen. tagged heißt, dass ein Paket mit einer Hausnummer diese behält, und nur auf den Ports sichtbar wird, die dem VLAN mit derselben Nummer angehören. Sprich, wenn CPU etwas an Port 4 schicken will, bappt es die Hausnummer 2 ran und schickt es an den Switch. Der sieht am CPU Port ein Paket mit VLAN ID 2, weiß CPU ist tagged und VLAN 2 besteht aus nur CPU und Port 4, macht das Paket also auf Port 4 raus.

Praktisch

Einmal waren zwei Kabel am TP-Link vertauscht. Ich merkte es erst als ich wieder zuhause war. Loggte mich aber über das FF Netz im Router ein und vertauschte einfach die Switch Konfigs der beiden Ports. Problem solved! :)