VLAN einrichten auf WRT1200ACv2 und OpenWRT

Der Linksys-Router WRT1200ACv2 ist im ZUsammenhang mit OpenWRT leider wenig dokumentiert und deswegen publiziere ich hier die Vorgehensweise zur Initialisierung von VLAN (Virtuellen LAN-Schnittstellen), insbesondere da diese etwas tricky ist. Derzeit habe ich "OpenWrt Chaos Calmer 15.05.1" auf dem Router installiert. DD-WRT war für mich keine Option mehr, da sich hier seit 2010 so gut wie gar nichts mehr getan hatte und OpenWRT gegenüber Einem wesentlich mehr Freiheiten lässt.
Zusätzlich ist die Web-GUI LuCI installiert, so dass eine Administration über den Webbrowser möglich ist.

Wichtig zu wissen wäre noch, wir haben es hier nicht um einen Atheros- oder Broadcom-Chip zu tun, die beide sehr gut dokumentiert sind, sondern bei dem Switch handelt es sich um einen Marvell 88E6176 Chip.

Aufbau und Verteilung der Ports bei Marvell 88E6176

Port-Verteilung bei Marvell 88E6176

Die Skizze dokumentiert wie die Ports des Switch (Switch-Ports) den externen Ports (LAN und WAN) zugeordnet sind. Das ist nachher wichtig bei der Konfiguration des Switch mit VLANs. Zusätzlich hat die CPU ebenfalls zwei Ports (CPU-Ports), die den Ethernet-Schnittstellen eth0 (SW-Port 5) und eth1 (SW-Port 6) zugeordnet werden.
Die beiden WLAN-Schnittstellen wlan0 (2,4 GHz) und wlan1 (5,0 GHz) sind in diesem Schema nicht involviert, da sie separat bei OpenWRT konfiguriert werden.

Sicherheitsmassnahmen vor einer Netzwerk-Konfiguration

Vorab ist es ganz wichtig, dass über LuCI „System=>Backup/Flash Firmware“ die aktuelle Konfiguration gesichert wird. Und ebenso nützlich ist es zu wissen, wie man zu der Orignalfirmware kommt, sofern sie nicht ersetzt wurden ist. Was mir ebenfalls schon passiert war, dann hatte ich zweimal OpenWRT drauf. Die LinkSys-Firmware ließ sich aber wieder problemlos flashen.
Denn beim Flashen der Firmware wird nämlich die neue Firmware auf eine zweite Partition geschrieben und die "bootable" gesetzt wird. Die Ursprungs-Firmware wird also nicht überschrieben, sondern existert parallel zu der neuen Firmware auf einer von zwei Partitionen.

Um auf die vorherige Firmware (Linksys) zu kommen dient dieses Procedere:
Download für Originalfirmware nur für WRT1200ACv2. Anschliessend wird diese Firmware wie gehabt geflasht.

Wechseln der Bootpartition und damit der Firmware

Gerät (getestet am WRT1200ACv2) über die Powertaste ausschalten und wieder einschalten. Sobald jetzt die Power-LED anfängt zu blinken, muss das Gerät sofort wieder über die Powertaste ausgeschaltet werden. Das macht man insgesamt dreimal. Beim vierten Einschalten bootet man ganz normal in die andere Partition.

Somit hat man ein funktionierendes Fallback und kann, wenn die Netzwerkkonfiguration hängt, die Installation wiederholen und die bisherige Konfiguration aufspielen.

Einrichten der VLANs

Das Einrichten von VLANs auf Linksys WRT1200ACv2, WRT1200AC v1 / WRT1900AC v2 / WRT1900ACS v1 und mit OpenWrt Chaos Calmer 15.05.1 funktioniert nicht über die WebGui LuCI!
Ich habe an unterschiedlichen Stellen gelesen, wie die Leute nach dem Menüpunkt "Switch" unter dem Menü "Network" fragen, der existiert nämlich direkt nach der Installation nicht. Ich finde auch keinen Schalter zum Aktivieren. Erst mit der manuellen Konfiguration des VLAN in der network-Datei existiert dieser Menüpunkt. Dennoch von einer Nutzung der Switch-Funktion innerhalb von LuCi rate ich ab!
Denn, LuCI erzeugt ein Durcheinander von Switch- und VLAN-Konfigurationen. Es erkennt zwar automatisch die VLANs bei der Definition physikalischer Schnittstellenverbindungen. Und es wird versuchen alle VLANs mit "eth0.1, eth0.2, eth0.3 .." etc. auszuzeichnen. Tatsächlich aber muss zwischen eth0.X und eth1.X unterschieden werden. Das schafft LuCI derzeit noch nicht.

Wichtig ist jetzt zu wissen, dass das Internet WAN auf der Schnittstelle eth0 und das interne LAN auf eth1 liegt. Wie die Switch-Ports den physikalischen LAN-Ports auf der Geräterückseite zugeordnet sind, ist hier ersichtlich.
LAN-Port 4 entspricht also Switch-Port 0 etc. Ganz wichtig, etwas das ich lange nicht verstanden hatte, die beiden Switch-Ports „5t“ und „6t“ werden „tagged“ gesetzt, die die CPU mit 5 an eth0 und 6 an eth1 anschließt. Das ist ganz wichtig nachher für die Konfiguration einzelner VLANs, denn alles was über WAN also eth0 fließt, wird an die „6t“ gebunden und die meisten anderen VLANS hängen alle am eth1.X und werden somit an „5t“ gebunden.

Wichtig wäre auch die Erwähnung, dass bei der WAN-Schnittstelle eth0 keine kleine VID genommen wird, wie ich gelesen habe. Bewährt hat sich eth0.100 mit "vid '100'". Offenbar könnten sich die VIDs ins Gehege kommen.

Szenario: Jeder LAN-Port entspricht einem einzelnen VLAN

/etc/config/network

config switch
       option name 'switch0'
       option reset '1'
       option enable_vlan '1'

#WAN Port
config switch_vlan
       option device 'switch0'
       option vlan '1'
       option vid '100'
       option ports '4 5t'

#Port 1
config switch_vlan
       option device 'switch0'
       option vlan '2'
       option vid '2'
       option ports '3 6t'

#Port 2
config switch_vlan
       option device 'switch0'
       option vlan '3'
       option vid '3'
       option ports '2 6t'

#Port 3
config switch_vlan
       option device 'switch0'
       option vlan '4'
       option vid '4'
       option ports '1 6t'

#Port 4
config switch_vlan
       option device 'switch0'
       option vlan '5'
       option vid '5'
       option ports '0 6t'

config interface 'loopback'
        option ifname 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option 'Euere Werte'

#WAN on the wan port
config interface 'wan'
        option ifname 'eth0.100'
        option _orig_bridge 'false'
        option proto 'pppoe'
        option username 'xxxxxxxxxxxxxxxxxxxxxxxx'
        option password 'xxxxxxxxxx'

#LAN on switch port 1
config interface 'lan'
        option force_link '1'
        option proto 'static'
        option ifname 'eth1.2'
        option ipaddr '192.168.0.1'
        option netmask '255.255.255.0'
        option gateway '217.0.117.92'                            
        option dns '217.0.43.129'

#LAN on switch port 2
config interface 'lan2'
        option proto 'static'
        option ifname 'eth1.3'
        option ipaddr '192.168.10.1'
        option netmask '255.255.255.0'
        option gateway '217.0.117.92'                            
        option dns '217.0.43.129'

Da ich ein DSL-Modem vor dem Router stehen habe, übernimmt der Router die ISP-Anmeldung. Deshalb auch die Konfiguration beim WAN und die Gateway- und DNS-Angaben bei den anderen Schnittstellen.

Szenario 1,2 - 3 - 4

Hier ist eine funktionierende Konfiguration für das Szenario
LAN-Port 1 & 2: 192.168.0.0/24
LAN-Port 3: 192.168.10.0/24
LA
N-Port 4: 192.168.20.0/24

/etc/config/network

config switch
       option name 'switch0'
       option reset '1'
       option enable_vlan '1'

config switch_vlan
       option device 'switch0'
       option vlan '1'
       option vid '100'
       option ports '4 5t'

config switch_vlan
       option device 'switch0'
       option vlan '2'
       option vid '2'
       option ports '3 2 6t'

config switch_vlan
       option device 'switch0'
       option vlan '3'
       option vid '3'
       option ports '1 6t'

config switch_vlan
       option device 'switch0'
       option vlan '4'
       option vid '4'
       option ports '0 6t'

config interface 'loopback'
       option ifname 'lo'
       option proto 'static'
       option ipaddr '127.0.0.1'
       option netmask '255.0.0.0'

config globals 'globals'
       option ula_prefix 'fdaa:abc8:799c::/48'

config interface 'wan'
        option ifname 'eth0.100'
        option _orig_bridge 'false'
        option proto 'pppoe'
        option username 'XXXXXXXXXXXXXXXXXXXXXXX'
        option password 'YYYYYYYYYYYY'

config interface 'lan0'
        option force_link '1'
        option proto 'static'
        option ifname 'eth1.2'
        option ipaddr '192.168.0.1'
        option netmask '255.255.255.0'
        option type 'bridge'

config interface 'lan10'
        option proto 'static'
        option ifname 'eth1.3'
        option ipaddr '192.168.10.1'
        option netmask '255.255.255.0'
        option gateway '217.0.117.92'
        option dns '217.0.43.129'

config interface 'lan20'
        option proto 'static'
        option ifname 'eth1.4'
        option ipaddr '192.168.20.1'
        option netmask '255.255.255.0'                           
        option gateway '217.0.117.92'                             
        option dns '217.0.43.129'

Es dürfte selbsterklärend sein, dass die IP-Adressen, DNS- und Gateway-Einträge individuell angepasst werden sollten.